{"id":"2e988e7beb13d20eccff1f495b6091cd","_format":"hh-sol-build-info-1","solcVersion":"0.7.6","solcLongVersion":"0.7.6+commit.7338295f","input":{"language":"Solidity","sources":{"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Callback for IElixirPoolActions#mint\r\n/// @notice Any contract that calls IElixirPoolActions#mint must implement this interface\r\ninterface IElixirMintCallback {\r\n    /// @notice Called to `msg.sender` after minting liquidity to a position from IElixirPool#mint.\r\n    /// @dev In the implementation you must pay the pool tokens owed for the minted liquidity.\r\n    /// The caller of this method must be checked to be a ElixirPool deployed by the canonical ElixirFactory.\r\n    /// @param amount0Owed The amount of token0 due to the pool for the minted liquidity\r\n    /// @param amount1Owed The amount of token1 due to the pool for the minted liquidity\r\n    /// @param data Any data passed through by the caller via the IElixirPoolActions#mint call\r\n    function elixirMintCallback(\r\n        uint256 amount0Owed,\r\n        uint256 amount1Owed,\r\n        bytes calldata data\r\n    ) external;\r\n}\r\n"},"contracts/elixir-core/interfaces/IElixirFactory.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title The interface for the Elixir Factory\r\n/// @notice The Elixir Factory facilitates creation of Elixir pools and control over the protocol fees\r\ninterface IElixirFactory {\r\n    /// @notice Emitted when the owner of the factory is changed\r\n    /// @param oldOwner The owner before the owner was changed\r\n    /// @param newOwner The owner after the owner was changed\r\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\r\n\r\n    /// @notice Emitted when a pool is created\r\n    /// @param token0 The first token of the pool by address sort order\r\n    /// @param token1 The second token of the pool by address sort order\r\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\r\n    /// @param tickSpacing The minimum number of ticks between initialized ticks\r\n    /// @param pool The address of the created pool\r\n    event PoolCreated(\r\n        address indexed token0,\r\n        address indexed token1,\r\n        uint24 indexed fee,\r\n        int24 tickSpacing,\r\n        address pool\r\n    );\r\n\r\n    /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\r\n    /// @param fee The enabled fee, denominated in hundredths of a bip\r\n    /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\r\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\r\n\r\n    /// @notice Returns the implementation contract of the pool\r\n    /// @return The address of the pool implementation\r\n    function implementation() external view returns (address);\r\n\r\n    /// @notice Returns the current owner of the factory\r\n    /// @dev Can be changed by the current owner via setOwner\r\n    /// @return The address of the factory owner\r\n    function owner() external view returns (address);\r\n\r\n    /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\r\n    /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\r\n    /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\r\n    /// @return The tick spacing\r\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\r\n\r\n    /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\r\n    /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\r\n    /// @param tokenA The contract address of either token0 or token1\r\n    /// @param tokenB The contract address of the other token\r\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\r\n    /// @return pool The pool address\r\n    function getPool(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) external view returns (address pool);\r\n\r\n    /// @notice Creates a pool for the given two tokens and fee\r\n    /// @param tokenA One of the two tokens in the desired pool\r\n    /// @param tokenB The other of the two tokens in the desired pool\r\n    /// @param fee The desired fee for the pool\r\n    /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\r\n    /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\r\n    /// are invalid.\r\n    /// @return pool The address of the newly created pool\r\n    function createPool(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) external returns (address pool);\r\n\r\n    /// @notice Updates the owner of the factory\r\n    /// @dev Must be called by the current owner\r\n    /// @param _owner The new owner of the factory\r\n    function setOwner(address _owner) external;\r\n\r\n    /// @notice Enables a fee amount with the given tickSpacing\r\n    /// @dev Fee amounts may never be removed once enabled\r\n    /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\r\n    /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\r\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\r\n}\r\n"},"contracts/elixir-core/interfaces/IElixirPool.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nimport './pool/IElixirPoolImmutables.sol';\r\nimport './pool/IElixirPoolState.sol';\r\nimport './pool/IElixirPoolDerivedState.sol';\r\nimport './pool/IElixirPoolActions.sol';\r\nimport './pool/IElixirPoolOwnerActions.sol';\r\nimport './pool/IElixirPoolEvents.sol';\r\n\r\n/// @title The interface for a Elixir Pool\r\n/// @notice A Pangolin pool facilitates swapping and automated market making between any two assets that strictly conform\r\n/// to the ERC20 specification\r\n/// @dev The pool interface is broken up into many smaller pieces\r\ninterface IElixirPool is\r\n    IElixirPoolImmutables,\r\n    IElixirPoolState,\r\n    IElixirPoolDerivedState,\r\n    IElixirPoolActions,\r\n    IElixirPoolOwnerActions,\r\n    IElixirPoolEvents\r\n{\r\n\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Permissionless pool actions\r\n/// @notice Contains pool methods that can be called by anyone\r\ninterface IElixirPoolActions {\r\n    /// @notice Sets the initial price for the pool\r\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\r\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\r\n    function initialize(uint160 sqrtPriceX96) external;\r\n\r\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\r\n    /// @dev The caller of this method receives a callback in the form of IElixirMintCallback#elixirMintCallback\r\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\r\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\r\n    /// @param recipient The address for which the liquidity will be created\r\n    /// @param tickLower The lower tick of the position in which to add liquidity\r\n    /// @param tickUpper The upper tick of the position in which to add liquidity\r\n    /// @param amount The amount of liquidity to mint\r\n    /// @param data Any data that should be passed through to the callback\r\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\r\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\r\n    function mint(\r\n        address recipient,\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 amount,\r\n        bytes calldata data\r\n    ) external returns (uint256 amount0, uint256 amount1);\r\n\r\n    /// @notice Collects tokens owed to a position\r\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\r\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\r\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\r\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\r\n    /// @param recipient The address which should receive the fees collected\r\n    /// @param tickLower The lower tick of the position for which to collect fees\r\n    /// @param tickUpper The upper tick of the position for which to collect fees\r\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\r\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\r\n    /// @return amount0 The amount of fees collected in token0\r\n    /// @return amount1 The amount of fees collected in token1\r\n    function collect(\r\n        address recipient,\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 amount0Requested,\r\n        uint128 amount1Requested\r\n    ) external returns (uint128 amount0, uint128 amount1);\r\n\r\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\r\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\r\n    /// @dev Fees must be collected separately via a call to #collect\r\n    /// @param tickLower The lower tick of the position for which to burn liquidity\r\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\r\n    /// @param amount How much liquidity to burn\r\n    /// @return amount0 The amount of token0 sent to the recipient\r\n    /// @return amount1 The amount of token1 sent to the recipient\r\n    function burn(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 amount\r\n    ) external returns (uint256 amount0, uint256 amount1);\r\n\r\n    /// @notice Swap token0 for token1, or token1 for token0\r\n    /// @dev The caller of this method receives a callback in the form of IElixirSwapCallback#elixirSwapCallback\r\n    /// @param recipient The address to receive the output of the swap\r\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\r\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\r\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\r\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\r\n    /// @param data Any data to be passed through to the callback\r\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\r\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\r\n    function swap(\r\n        address recipient,\r\n        bool zeroForOne,\r\n        int256 amountSpecified,\r\n        uint160 sqrtPriceLimitX96,\r\n        bytes calldata data\r\n    ) external returns (int256 amount0, int256 amount1);\r\n\r\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\r\n    /// @dev The caller of this method receives a callback in the form of IElixirFlashCallback#elixirFlashCallback\r\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\r\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\r\n    /// @param recipient The address which will receive the token0 and token1 amounts\r\n    /// @param amount0 The amount of token0 to send\r\n    /// @param amount1 The amount of token1 to send\r\n    /// @param data Any data to be passed through to the callback\r\n    function flash(\r\n        address recipient,\r\n        uint256 amount0,\r\n        uint256 amount1,\r\n        bytes calldata data\r\n    ) external;\r\n\r\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\r\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\r\n    /// the input observationCardinalityNext.\r\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\r\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Pool state that is not stored\r\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\r\n/// blockchain. The functions here may have variable gas costs.\r\ninterface IElixirPoolDerivedState {\r\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\r\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\r\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\r\n    /// you must call it with secondsAgos = [3600, 0].\r\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\r\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\r\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\r\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\r\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\r\n    /// timestamp\r\n    function observe(uint32[] calldata secondsAgos)\r\n        external\r\n        view\r\n        returns (\r\n            int56[] memory tickCumulatives,\r\n            uint160[] memory secondsPerLiquidityCumulativeX128s,\r\n            uint192[] memory rewardPerLiquidityCumulativeX64s\r\n        );\r\n\r\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\r\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\r\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\r\n    /// snapshot is taken and the second snapshot is taken.\r\n    /// @param tickLower The lower tick of the range\r\n    /// @param tickUpper The upper tick of the range\r\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\r\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\r\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\r\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\r\n        external\r\n        view\r\n        returns (\r\n            int56 tickCumulativeInside,\r\n            uint160 secondsPerLiquidityInsideX128,\r\n            uint32 secondsInside,\r\n            uint192 rewardPerLiquidityInsideX64\r\n        );\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Events emitted by a pool\r\n/// @notice Contains all events emitted by the pool\r\ninterface IElixirPoolEvents {\r\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\r\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\r\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\r\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\r\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\r\n\r\n    /// @notice Emitted when liquidity is minted for a given position\r\n    /// @param sender The address that minted the liquidity\r\n    /// @param owner The owner of the position and recipient of any minted liquidity\r\n    /// @param tickLower The lower tick of the position\r\n    /// @param tickUpper The upper tick of the position\r\n    /// @param amount The amount of liquidity minted to the position range\r\n    /// @param amount0 How much token0 was required for the minted liquidity\r\n    /// @param amount1 How much token1 was required for the minted liquidity\r\n    event Mint(\r\n        address sender,\r\n        address indexed owner,\r\n        int24 indexed tickLower,\r\n        int24 indexed tickUpper,\r\n        uint128 amount,\r\n        uint256 amount0,\r\n        uint256 amount1\r\n    );\r\n\r\n    /// @notice Emitted when fees are collected by the owner of a position\r\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\r\n    /// @param owner The owner of the position for which fees are collected\r\n    /// @param tickLower The lower tick of the position\r\n    /// @param tickUpper The upper tick of the position\r\n    /// @param amount0 The amount of token0 fees collected\r\n    /// @param amount1 The amount of token1 fees collected\r\n    event Collect(\r\n        address indexed owner,\r\n        address recipient,\r\n        int24 indexed tickLower,\r\n        int24 indexed tickUpper,\r\n        uint128 amount0,\r\n        uint128 amount1\r\n    );\r\n\r\n    /// @notice Emitted when a position's liquidity is removed\r\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\r\n    /// @param owner The owner of the position for which liquidity is removed\r\n    /// @param tickLower The lower tick of the position\r\n    /// @param tickUpper The upper tick of the position\r\n    /// @param amount The amount of liquidity to remove\r\n    /// @param amount0 The amount of token0 withdrawn\r\n    /// @param amount1 The amount of token1 withdrawn\r\n    event Burn(\r\n        address indexed owner,\r\n        int24 indexed tickLower,\r\n        int24 indexed tickUpper,\r\n        uint128 amount,\r\n        uint256 amount0,\r\n        uint256 amount1\r\n    );\r\n\r\n    /// @notice Emitted by the pool for any swaps between token0 and token1\r\n    /// @param sender The address that initiated the swap call, and that received the callback\r\n    /// @param recipient The address that received the output of the swap\r\n    /// @param amount0 The delta of the token0 balance of the pool\r\n    /// @param amount1 The delta of the token1 balance of the pool\r\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\r\n    /// @param liquidity The liquidity of the pool after the swap\r\n    /// @param tick The log base 1.0001 of price of the pool after the swap\r\n    event Swap(\r\n        address indexed sender,\r\n        address indexed recipient,\r\n        int256 amount0,\r\n        int256 amount1,\r\n        uint160 sqrtPriceX96,\r\n        uint128 liquidity,\r\n        int24 tick\r\n    );\r\n\r\n    /// @notice Emitted by the pool for any flashes of token0/token1\r\n    /// @param sender The address that initiated the swap call, and that received the callback\r\n    /// @param recipient The address that received the tokens from flash\r\n    /// @param amount0 The amount of token0 that was flashed\r\n    /// @param amount1 The amount of token1 that was flashed\r\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\r\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\r\n    event Flash(\r\n        address indexed sender,\r\n        address indexed recipient,\r\n        uint256 amount0,\r\n        uint256 amount1,\r\n        uint256 paid0,\r\n        uint256 paid1\r\n    );\r\n\r\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\r\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\r\n    /// just before a mint/swap/burn.\r\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\r\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\r\n    event IncreaseObservationCardinalityNext(\r\n        uint16 observationCardinalityNextOld,\r\n        uint16 observationCardinalityNextNew\r\n    );\r\n\r\n    /// @notice Emitted when the protocol fee is changed by the pool\r\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\r\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\r\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\r\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\r\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\r\n\r\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\r\n    /// @param sender The address that collects the protocol fees\r\n    /// @param recipient The address that receives the collected protocol fees\r\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\r\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\r\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\r\n\r\n    /// @notice Emitted when the reward rate is changed by the owner\r\n    /// @param rewardPerSecondX48 The new reward rate per second (in Q48)\r\n    /// @param rewardRateEffectiveUntil The timestamp when the new reward rate will expire\r\n    event SetRewardRate(uint144 rewardPerSecondX48, uint32 rewardRateEffectiveUntil);\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Pool state that never changes\r\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\r\ninterface IElixirPoolImmutables {\r\n    /// @notice The contract that deployed the pool, which must adhere to the IElixirFactory interface\r\n    /// @return The contract address\r\n    function factory() external view returns (address);\r\n\r\n    /// @notice The first of the two tokens of the pool, sorted by address\r\n    /// @return The token contract address\r\n    function token0() external view returns (address);\r\n\r\n    /// @notice The second of the two tokens of the pool, sorted by address\r\n    /// @return The token contract address\r\n    function token1() external view returns (address);\r\n\r\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\r\n    /// @return The fee\r\n    function fee() external view returns (uint24);\r\n\r\n    /// @notice The pool tick spacing\r\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\r\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\r\n    /// This value is an int24 to avoid casting even though it is always positive.\r\n    /// @return The tick spacing\r\n    function tickSpacing() external view returns (int24);\r\n\r\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\r\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\r\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\r\n    /// @return The max amount of liquidity per tick\r\n    function maxLiquidityPerTick() external view returns (uint128);\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Permissioned pool actions\r\n/// @notice Contains pool methods that may only be called by the factory owner\r\ninterface IElixirPoolOwnerActions {\r\n    /// @notice Initialize the pool to set immutable parameters\r\n    /// @param _token0 The first of the two tokens of the pool, sorted by address\r\n    /// @param _token1 The second of the two tokens of the pool, sorted by address\r\n    /// @param _fee The pool's fee in hundredths of a bip, i.e. 1e-6\r\n    /// @param _tickSpacing The pool tick spacing\r\n    function initialize(address _token0, address _token1, uint24 _fee, int24 _tickSpacing) external;\r\n\r\n    /// @notice Set the denominator of the protocol's % share of the fees\r\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\r\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\r\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\r\n\r\n    /// @notice Collect the protocol fee accrued to the pool\r\n    /// @param recipient The address to which collected protocol fees should be sent\r\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\r\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\r\n    /// @return amount0 The protocol fee collected in token0\r\n    /// @return amount1 The protocol fee collected in token1\r\n    function collectProtocol(\r\n        address recipient,\r\n        uint128 amount0Requested,\r\n        uint128 amount1Requested\r\n    ) external returns (uint128 amount0, uint128 amount1);\r\n\r\n    /// @notice Set the reward rate the active liquidity receives per second\r\n    /// @param rewardPerSecondX48 The new reward rate per second (in Q48)\r\n    /// @param rewardRateEffectiveUntil The timestamp when the new reward rate will expire\r\n    function setRewardRate(uint144 rewardPerSecondX48, uint32 rewardRateEffectiveUntil) external;\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Pool state that can change\r\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\r\n/// per transaction\r\ninterface IElixirPoolState {\r\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\r\n    /// when accessed externally.\r\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\r\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\r\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\r\n    /// boundary.\r\n    /// observationIndex The index of the last oracle observation that was written,\r\n    /// observationCardinality The current maximum number of observations stored in the pool,\r\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\r\n    /// feeProtocol The protocol fee for both tokens of the pool.\r\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\r\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\r\n    /// unlocked Whether the pool is currently locked to reentrancy\r\n    function slot0()\r\n        external\r\n        view\r\n        returns (\r\n            uint160 sqrtPriceX96,\r\n            int24 tick,\r\n            uint16 observationIndex,\r\n            uint16 observationCardinality,\r\n            uint16 observationCardinalityNext,\r\n            uint8 feeProtocol,\r\n            bool unlocked\r\n        );\r\n\r\n    /// @notice The rewardSlot storage slot in the pool stores variables necessary to update\r\n    /// Oracle.Observation.rewardPerLiquidityCumulativeX64 accumulator.\r\n    /// @dev Both of the variables can be set arbitrarily by the owner. The pool does not set any restrictions on the\r\n    /// values other than their variable types. The factory owner should relegate the setting of these variables to a\r\n    /// reward contract that will update these variables based on a proper reward distribution logic.\r\n    /// @return rewardPerSecondX48 The rewards per second promised to be distributed to the pool as a Q96.48 value\r\n    /// rewardRateEffectiveUntil The timestamp when the rewardPerSecondX48 is no longer effective\r\n    function rewardSlot()\r\n        external\r\n        view\r\n        returns (uint144 rewardPerSecondX48, uint32 rewardRateEffectiveUntil);\r\n\r\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\r\n    /// @dev This value can overflow the uint256\r\n    function feeGrowthGlobal0X128() external view returns (uint256);\r\n\r\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\r\n    /// @dev This value can overflow the uint256\r\n    function feeGrowthGlobal1X128() external view returns (uint256);\r\n\r\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\r\n    /// @dev Protocol fees will never exceed uint128 max in either token\r\n    function protocolFees()\r\n        external\r\n        view\r\n        returns (uint128 token0, uint128 token1);\r\n\r\n    /// @notice The currently in range liquidity available to the pool\r\n    /// @dev This value has no relationship to the total liquidity across all ticks\r\n    function liquidity() external view returns (uint128);\r\n\r\n    /// @notice Look up information about a specific tick in the pool\r\n    /// @param tick The tick to look up\r\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\r\n    /// tick upper,\r\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\r\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\r\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\r\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\r\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\r\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\r\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\r\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\r\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\r\n    /// a specific position.\r\n    function ticks(\r\n        int24 tick\r\n    )\r\n        external\r\n        view\r\n        returns (\r\n            uint128 liquidityGross,\r\n            int128 liquidityNet,\r\n            uint256 feeGrowthOutside0X128,\r\n            uint256 feeGrowthOutside1X128,\r\n            int56 tickCumulativeOutside,\r\n            uint160 secondsPerLiquidityOutsideX128,\r\n            uint32 secondsOutside,\r\n            bool initialized,\r\n            uint192 rewardPerLiquidityOutsideX64\r\n        );\r\n\r\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\r\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\r\n\r\n    /// @notice Returns the information about a position by the position's key\r\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\r\n    /// @return _liquidity The amount of liquidity in the position,\r\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\r\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\r\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\r\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\r\n    function positions(\r\n        bytes32 key\r\n    )\r\n        external\r\n        view\r\n        returns (\r\n            uint128 _liquidity,\r\n            uint256 feeGrowthInside0LastX128,\r\n            uint256 feeGrowthInside1LastX128,\r\n            uint128 tokensOwed0,\r\n            uint128 tokensOwed1\r\n        );\r\n\r\n    /// @notice Returns data about a specific observation index\r\n    /// @param index The element of the observations array to fetch\r\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\r\n    /// ago, rather than at a specific index in the array.\r\n    /// @return blockTimestamp The timestamp of the observation,\r\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\r\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\r\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\r\n    /// Returns rewardPerLiquidityCumulativeX64 reward per liquidity\r\n    function observations(\r\n        uint256 index\r\n    )\r\n        external\r\n        view\r\n        returns (\r\n            uint32 blockTimestamp,\r\n            int56 tickCumulative,\r\n            uint160 secondsPerLiquidityCumulativeX128,\r\n            bool initialized,\r\n            uint192 rewardPerLiquidityCumulativeX64\r\n        );\r\n}\r\n"},"contracts/elixir-core/libraries/FixedPoint128.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.4.0;\r\n\r\n/// @title FixedPoint128\r\n/// @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\r\nlibrary FixedPoint128 {\r\n    uint256 internal constant Q128 = 0x100000000000000000000000000000000;\r\n}\r\n"},"contracts/elixir-core/libraries/FixedPoint96.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.4.0;\r\n\r\n/// @title FixedPoint96\r\n/// @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\r\n/// @dev Used in SqrtPriceMath.sol\r\nlibrary FixedPoint96 {\r\n    uint8 internal constant RESOLUTION = 96;\r\n    uint256 internal constant Q96 = 0x1000000000000000000000000;\r\n}\r\n"},"contracts/elixir-core/libraries/FullMath.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity >=0.4.0 <0.8.0;\r\n\r\n/// @title Contains 512-bit math functions\r\n/// @notice Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\r\n/// @dev Handles \"phantom overflow\" i.e., allows multiplication and division where an intermediate value overflows 256 bits\r\nlibrary FullMath {\r\n    /// @notice Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\r\n    /// @param a The multiplicand\r\n    /// @param b The multiplier\r\n    /// @param denominator The divisor\r\n    /// @return result The 256-bit result\r\n    /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\r\n    function mulDiv(\r\n        uint256 a,\r\n        uint256 b,\r\n        uint256 denominator\r\n    ) internal pure returns (uint256 result) {\r\n        // 512-bit multiply [prod1 prod0] = a * b\r\n        // Compute the product mod 2**256 and mod 2**256 - 1\r\n        // then use the Chinese Remainder Theorem to reconstruct\r\n        // the 512 bit result. The result is stored in two 256\r\n        // variables such that product = prod1 * 2**256 + prod0\r\n        uint256 prod0; // Least significant 256 bits of the product\r\n        uint256 prod1; // Most significant 256 bits of the product\r\n        assembly {\r\n            let mm := mulmod(a, b, not(0))\r\n            prod0 := mul(a, b)\r\n            prod1 := sub(sub(mm, prod0), lt(mm, prod0))\r\n        }\r\n\r\n        // Handle non-overflow cases, 256 by 256 division\r\n        if (prod1 == 0) {\r\n            require(denominator > 0);\r\n            assembly {\r\n                result := div(prod0, denominator)\r\n            }\r\n            return result;\r\n        }\r\n\r\n        // Make sure the result is less than 2**256.\r\n        // Also prevents denominator == 0\r\n        require(denominator > prod1);\r\n\r\n        ///////////////////////////////////////////////\r\n        // 512 by 256 division.\r\n        ///////////////////////////////////////////////\r\n\r\n        // Make division exact by subtracting the remainder from [prod1 prod0]\r\n        // Compute remainder using mulmod\r\n        uint256 remainder;\r\n        assembly {\r\n            remainder := mulmod(a, b, denominator)\r\n        }\r\n        // Subtract 256 bit number from 512 bit number\r\n        assembly {\r\n            prod1 := sub(prod1, gt(remainder, prod0))\r\n            prod0 := sub(prod0, remainder)\r\n        }\r\n\r\n        // Factor powers of two out of denominator\r\n        // Compute largest power of two divisor of denominator.\r\n        // Always >= 1.\r\n        uint256 twos = -denominator & denominator;\r\n        // Divide denominator by power of two\r\n        assembly {\r\n            denominator := div(denominator, twos)\r\n        }\r\n\r\n        // Divide [prod1 prod0] by the factors of two\r\n        assembly {\r\n            prod0 := div(prod0, twos)\r\n        }\r\n        // Shift in bits from prod1 into prod0. For this we need\r\n        // to flip `twos` such that it is 2**256 / twos.\r\n        // If twos is zero, then it becomes one\r\n        assembly {\r\n            twos := add(div(sub(0, twos), twos), 1)\r\n        }\r\n        prod0 |= prod1 * twos;\r\n\r\n        // Invert denominator mod 2**256\r\n        // Now that denominator is an odd number, it has an inverse\r\n        // modulo 2**256 such that denominator * inv = 1 mod 2**256.\r\n        // Compute the inverse by starting with a seed that is correct\r\n        // correct for four bits. That is, denominator * inv = 1 mod 2**4\r\n        uint256 inv = (3 * denominator) ^ 2;\r\n        // Now use Newton-Raphson iteration to improve the precision.\r\n        // Thanks to Hensel's lifting lemma, this also works in modular\r\n        // arithmetic, doubling the correct bits in each step.\r\n        inv *= 2 - denominator * inv; // inverse mod 2**8\r\n        inv *= 2 - denominator * inv; // inverse mod 2**16\r\n        inv *= 2 - denominator * inv; // inverse mod 2**32\r\n        inv *= 2 - denominator * inv; // inverse mod 2**64\r\n        inv *= 2 - denominator * inv; // inverse mod 2**128\r\n        inv *= 2 - denominator * inv; // inverse mod 2**256\r\n\r\n        // Because the division is now exact we can divide by multiplying\r\n        // with the modular inverse of denominator. This will give us the\r\n        // correct result modulo 2**256. Since the precoditions guarantee\r\n        // that the outcome is less than 2**256, this is the final result.\r\n        // We don't need to compute the high bits of the result and prod1\r\n        // is no longer required.\r\n        result = prod0 * inv;\r\n        return result;\r\n    }\r\n\r\n    /// @notice Calculates ceil(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\r\n    /// @param a The multiplicand\r\n    /// @param b The multiplier\r\n    /// @param denominator The divisor\r\n    /// @return result The 256-bit result\r\n    function mulDivRoundingUp(\r\n        uint256 a,\r\n        uint256 b,\r\n        uint256 denominator\r\n    ) internal pure returns (uint256 result) {\r\n        result = mulDiv(a, b, denominator);\r\n        if (mulmod(a, b, denominator) > 0) {\r\n            require(result < type(uint256).max);\r\n            result++;\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/TickMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0 <0.8.0;\r\n\r\n/// @title Math library for computing sqrt prices from ticks and vice versa\r\n/// @notice Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports\r\n/// prices between 2**-128 and 2**128\r\nlibrary TickMath {\r\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128\r\n    int24 internal constant MIN_TICK = -887272;\r\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128\r\n    int24 internal constant MAX_TICK = -MIN_TICK;\r\n\r\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\r\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\r\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\r\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\r\n\r\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96\r\n    /// @dev Throws if |tick| > max tick\r\n    /// @param tick The input tick for the above formula\r\n    /// @return sqrtPriceX96 A Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\r\n    /// at the given tick\r\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\r\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\r\n        require(absTick <= uint256(MAX_TICK), 'T');\r\n\r\n        uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\r\n        if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\r\n        if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\r\n        if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\r\n        if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\r\n        if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\r\n        if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\r\n        if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\r\n        if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\r\n        if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\r\n        if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\r\n        if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\r\n        if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\r\n        if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\r\n        if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\r\n        if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\r\n        if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\r\n        if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\r\n        if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\r\n        if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\r\n\r\n        if (tick > 0) ratio = type(uint256).max / ratio;\r\n\r\n        // this divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\r\n        // we then downcast because we know the result always fits within 160 bits due to our tick input constraint\r\n        // we round up in the division so getTickAtSqrtRatio of the output price is always consistent\r\n        sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\r\n    }\r\n\r\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\r\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\r\n    /// ever return.\r\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\r\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio\r\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\r\n        // second inequality must be < because the price can never reach the price at the max tick\r\n        require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R');\r\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\r\n\r\n        uint256 r = ratio;\r\n        uint256 msb = 0;\r\n\r\n        assembly {\r\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(5, gt(r, 0xFFFFFFFF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(4, gt(r, 0xFFFF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(3, gt(r, 0xFF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(2, gt(r, 0xF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(1, gt(r, 0x3))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := gt(r, 0x1)\r\n            msb := or(msb, f)\r\n        }\r\n\r\n        if (msb >= 128) r = ratio >> (msb - 127);\r\n        else r = ratio << (127 - msb);\r\n\r\n        int256 log_2 = (int256(msb) - 128) << 64;\r\n\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(63, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(62, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(61, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(60, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(59, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(58, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(57, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(56, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(55, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(54, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(53, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(52, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(51, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(50, f))\r\n        }\r\n\r\n        int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number\r\n\r\n        int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\r\n        int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\r\n\r\n        tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/ERC721Permit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol';\r\nimport 'openzeppelin-contracts-solc-0.7/utils/Address.sol';\r\n\r\nimport '../libraries/ChainId.sol';\r\nimport '../interfaces/external/IERC1271.sol';\r\nimport '../interfaces/IERC721Permit.sol';\r\nimport './PeripheryValidation.sol';\r\n\r\n/// @title ERC721 with permit\r\n/// @notice Nonfungible tokens that support an approve via signature, i.e. permit\r\nabstract contract ERC721Permit is PeripheryValidation, ERC721, IERC721Permit {\r\n    /// @dev Gets the current nonce for a token ID and then increments it, returning the original value\r\n    function _getAndIncrementNonce(uint256 tokenId) internal virtual returns (uint256);\r\n\r\n    /// @dev The hash of the name used in the permit signature verification\r\n    bytes32 private immutable nameHash;\r\n\r\n    /// @dev The hash of the version string used in the permit signature verification\r\n    bytes32 private immutable versionHash;\r\n\r\n    /// @notice Computes the nameHash and versionHash\r\n    constructor(\r\n        string memory name_,\r\n        string memory symbol_,\r\n        string memory version_\r\n    ) ERC721(name_, symbol_) {\r\n        nameHash = keccak256(bytes(name_));\r\n        versionHash = keccak256(bytes(version_));\r\n    }\r\n\r\n    /// @inheritdoc IERC721Permit\r\n    function DOMAIN_SEPARATOR() public view override returns (bytes32) {\r\n        return\r\n            keccak256(\r\n                abi.encode(\r\n                    // keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)')\r\n                    0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f,\r\n                    nameHash,\r\n                    versionHash,\r\n                    ChainId.get(),\r\n                    address(this)\r\n                )\r\n            );\r\n    }\r\n\r\n    /// @inheritdoc IERC721Permit\r\n    /// @dev Value is equal to keccak256(\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\");\r\n    bytes32 public constant override PERMIT_TYPEHASH =\r\n        0x49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad;\r\n\r\n    /// @inheritdoc IERC721Permit\r\n    function permit(\r\n        address spender,\r\n        uint256 tokenId,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable override checkDeadline(deadline) {\r\n        bytes32 digest =\r\n            keccak256(\r\n                abi.encodePacked(\r\n                    '\\x19\\x01',\r\n                    DOMAIN_SEPARATOR(),\r\n                    keccak256(abi.encode(PERMIT_TYPEHASH, spender, tokenId, _getAndIncrementNonce(tokenId), deadline))\r\n                )\r\n            );\r\n        address owner = ownerOf(tokenId);\r\n        require(spender != owner, 'ERC721Permit: approval to owner');\r\n\r\n        if (Address.isContract(owner)) {\r\n            require(IERC1271(owner).isValidSignature(digest, abi.encodePacked(r, s, v)) == 0x1626ba7e, 'Unauthorized');\r\n        } else {\r\n            address recoveredAddress = ecrecover(digest, v, r, s);\r\n            require(\r\n                recoveredAddress != address(0) && recoveredAddress == owner,\r\n                'Invalid signature'\r\n            );\r\n        }\r\n\r\n        _approve(spender, tokenId);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/LiquidityManagement.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport '../../elixir-core/interfaces/IElixirFactory.sol';\r\nimport '../../elixir-core/interfaces/callback/IElixirMintCallback.sol';\r\nimport '../../elixir-core/libraries/TickMath.sol';\r\n\r\nimport '../libraries/PoolAddress.sol';\r\nimport '../libraries/CallbackValidation.sol';\r\nimport '../libraries/LiquidityAmounts.sol';\r\n\r\nimport './PeripheryPayments.sol';\r\nimport './PeripheryImmutableState.sol';\r\n\r\n/// @title Liquidity management functions\r\n/// @notice Internal functions for safely managing liquidity in Elixir\r\nabstract contract LiquidityManagement is IElixirMintCallback, PeripheryImmutableState, PeripheryPayments {\r\n    struct MintCallbackData {\r\n        PoolAddress.PoolKey poolKey;\r\n        address payer;\r\n    }\r\n\r\n    /// @inheritdoc IElixirMintCallback\r\n    function elixirMintCallback(\r\n        uint256 amount0Owed,\r\n        uint256 amount1Owed,\r\n        bytes calldata data\r\n    ) external override {\r\n        MintCallbackData memory decoded = abi.decode(data, (MintCallbackData));\r\n        CallbackValidation.verifyCallback(factory, decoded.poolKey);\r\n\r\n        if (amount0Owed > 0) pay(decoded.poolKey.token0, decoded.payer, msg.sender, amount0Owed);\r\n        if (amount1Owed > 0) pay(decoded.poolKey.token1, decoded.payer, msg.sender, amount1Owed);\r\n    }\r\n\r\n    struct AddLiquidityParams {\r\n        address token0;\r\n        address token1;\r\n        uint24 fee;\r\n        address recipient;\r\n        int24 tickLower;\r\n        int24 tickUpper;\r\n        uint256 amount0Desired;\r\n        uint256 amount1Desired;\r\n        uint256 amount0Min;\r\n        uint256 amount1Min;\r\n    }\r\n\r\n    /// @notice Add liquidity to an initialized pool\r\n    function addLiquidity(AddLiquidityParams memory params)\r\n        internal\r\n        returns (\r\n            uint128 liquidity,\r\n            uint256 amount0,\r\n            uint256 amount1,\r\n            IElixirPool pool\r\n        )\r\n    {\r\n        PoolAddress.PoolKey memory poolKey =\r\n            PoolAddress.PoolKey({token0: params.token0, token1: params.token1, fee: params.fee});\r\n\r\n        pool = IElixirPool(PoolAddress.computeAddress(factory, poolKey));\r\n\r\n        // compute the liquidity amount\r\n        {\r\n            (uint160 sqrtPriceX96, , , , , , ) = pool.slot0();\r\n            uint160 sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(params.tickLower);\r\n            uint160 sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(params.tickUpper);\r\n\r\n            liquidity = LiquidityAmounts.getLiquidityForAmounts(\r\n                sqrtPriceX96,\r\n                sqrtRatioAX96,\r\n                sqrtRatioBX96,\r\n                params.amount0Desired,\r\n                params.amount1Desired\r\n            );\r\n        }\r\n\r\n        (amount0, amount1) = pool.mint(\r\n            params.recipient,\r\n            params.tickLower,\r\n            params.tickUpper,\r\n            liquidity,\r\n            abi.encode(MintCallbackData({poolKey: poolKey, payer: msg.sender}))\r\n        );\r\n\r\n        require(amount0 >= params.amount0Min && amount1 >= params.amount1Min, 'Price slippage check');\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/Multicall.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport '../interfaces/IMulticall.sol';\r\n\r\n/// @title Multicall\r\n/// @notice Enables calling multiple methods in a single call to the contract\r\nabstract contract Multicall is IMulticall {\r\n    /// @inheritdoc IMulticall\r\n    function multicall(bytes[] calldata data) public payable override returns (bytes[] memory results) {\r\n        results = new bytes[](data.length);\r\n        for (uint256 i = 0; i < data.length; i++) {\r\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\r\n\r\n            if (!success) {\r\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\r\n                if (result.length < 68) revert();\r\n                assembly {\r\n                    result := add(result, 0x04)\r\n                }\r\n                revert(abi.decode(result, (string)));\r\n            }\r\n\r\n            results[i] = result;\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/PeripheryImmutableState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport '../interfaces/IPeripheryImmutableState.sol';\r\n\r\n/// @title Immutable state\r\n/// @notice Immutable state used by periphery contracts\r\nabstract contract PeripheryImmutableState is IPeripheryImmutableState {\r\n    /// @inheritdoc IPeripheryImmutableState\r\n    address public immutable override factory;\r\n    /// @inheritdoc IPeripheryImmutableState\r\n    address public immutable override WETH9;\r\n\r\n    constructor(address _factory, address _WETH9) {\r\n        factory = _factory;\r\n        WETH9 = _WETH9;\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/PeripheryPayments.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol';\r\n\r\nimport '../interfaces/IPeripheryPayments.sol';\r\nimport '../interfaces/external/IWETH9.sol';\r\n\r\nimport '../libraries/TransferHelper.sol';\r\n\r\nimport './PeripheryImmutableState.sol';\r\n\r\nabstract contract PeripheryPayments is IPeripheryPayments, PeripheryImmutableState {\r\n    receive() external payable {\r\n        require(msg.sender == WETH9, 'Not WETH9');\r\n    }\r\n\r\n    /// @inheritdoc IPeripheryPayments\r\n    function unwrapWETH9(uint256 amountMinimum, address recipient) public payable override {\r\n        uint256 balanceWETH9 = IWETH9(WETH9).balanceOf(address(this));\r\n        require(balanceWETH9 >= amountMinimum, 'Insufficient WETH9');\r\n\r\n        if (balanceWETH9 > 0) {\r\n            IWETH9(WETH9).withdraw(balanceWETH9);\r\n            TransferHelper.safeTransferETH(recipient, balanceWETH9);\r\n        }\r\n    }\r\n\r\n    /// @inheritdoc IPeripheryPayments\r\n    function sweepToken(\r\n        address token,\r\n        uint256 amountMinimum,\r\n        address recipient\r\n    ) public payable override {\r\n        uint256 balanceToken = IERC20(token).balanceOf(address(this));\r\n        require(balanceToken >= amountMinimum, 'Insufficient token');\r\n\r\n        if (balanceToken > 0) {\r\n            TransferHelper.safeTransfer(token, recipient, balanceToken);\r\n        }\r\n    }\r\n\r\n    /// @inheritdoc IPeripheryPayments\r\n    function refundETH() external payable override {\r\n        _refundETH();\r\n    }\r\n\r\n    function _refundETH() internal {\r\n        if (address(this).balance > 0) TransferHelper.safeTransferETH(msg.sender, address(this).balance);\r\n    }\r\n\r\n    /// @param token The token to pay\r\n    /// @param payer The entity that must pay\r\n    /// @param recipient The entity that will receive payment\r\n    /// @param value The amount to pay\r\n    function pay(\r\n        address token,\r\n        address payer,\r\n        address recipient,\r\n        uint256 value\r\n    ) internal {\r\n        if (token == WETH9 && address(this).balance >= value) {\r\n            // pay with WETH9\r\n            IWETH9(WETH9).deposit{value: value}(); // wrap only what is needed to pay\r\n            IWETH9(WETH9).transfer(recipient, value);\r\n        } else if (payer == address(this)) {\r\n            // pay with tokens already in the contract (for the exact input multihop case)\r\n            TransferHelper.safeTransfer(token, recipient, value);\r\n        } else {\r\n            // pull payment\r\n            TransferHelper.safeTransferFrom(token, payer, recipient, value);\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/PeripheryValidation.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nabstract contract PeripheryValidation {\r\n    modifier checkDeadline(uint256 deadline) {\r\n        _checkDeadline(deadline);\r\n        _;\r\n    }\r\n\r\n    function _checkDeadline(uint256 deadline) private view {\r\n        require(block.timestamp <= deadline, 'Transaction too old');\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/PoolInitializer.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport '../../elixir-core/interfaces/IElixirFactory.sol';\r\nimport '../../elixir-core/interfaces/IElixirPool.sol';\r\n\r\nimport './PeripheryImmutableState.sol';\r\nimport '../interfaces/IPoolInitializer.sol';\r\n\r\n/// @title Creates and initializes V3 Pools\r\nabstract contract PoolInitializer is IPoolInitializer, PeripheryImmutableState {\r\n    /// @inheritdoc IPoolInitializer\r\n    function createAndInitializePoolIfNecessary(\r\n        address token0,\r\n        address token1,\r\n        uint24 fee,\r\n        uint160 sqrtPriceX96\r\n    ) external payable override returns (address pool) {\r\n        require(token0 < token1);\r\n        pool = IElixirFactory(factory).getPool(token0, token1, fee);\r\n\r\n        if (pool == address(0)) {\r\n            pool = IElixirFactory(factory).createPool(token0, token1, fee);\r\n            IElixirPool(pool).initialize(sqrtPriceX96);\r\n        } else {\r\n            (uint160 sqrtPriceX96Existing, , , , , , ) = IElixirPool(pool).slot0();\r\n            if (sqrtPriceX96Existing == 0) {\r\n                IElixirPool(pool).initialize(sqrtPriceX96);\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/SelfPermit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol';\r\nimport 'openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol';\r\n\r\nimport '../interfaces/ISelfPermit.sol';\r\nimport '../interfaces/external/IERC20PermitAllowed.sol';\r\n\r\n/// @title Self Permit\r\n/// @notice Functionality to call permit on any EIP-2612-compliant token for use in the route\r\n/// @dev These functions are expected to be embedded in multicalls to allow EOAs to approve a contract and call a function\r\n/// that requires an approval in a single transaction.\r\nabstract contract SelfPermit is ISelfPermit {\r\n    /// @inheritdoc ISelfPermit\r\n    function selfPermit(\r\n        address token,\r\n        uint256 value,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) public payable override {\r\n        IERC20Permit(token).permit(msg.sender, address(this), value, deadline, v, r, s);\r\n    }\r\n\r\n    /// @inheritdoc ISelfPermit\r\n    function selfPermitIfNecessary(\r\n        address token,\r\n        uint256 value,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable override {\r\n        if (IERC20(token).allowance(msg.sender, address(this)) < value) selfPermit(token, value, deadline, v, r, s);\r\n    }\r\n\r\n    /// @inheritdoc ISelfPermit\r\n    function selfPermitAllowed(\r\n        address token,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) public payable override {\r\n        IERC20PermitAllowed(token).permit(msg.sender, address(this), nonce, expiry, true, v, r, s);\r\n    }\r\n\r\n    /// @inheritdoc ISelfPermit\r\n    function selfPermitAllowedIfNecessary(\r\n        address token,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable override {\r\n        if (IERC20(token).allowance(msg.sender, address(this)) < type(uint256).max)\r\n            selfPermitAllowed(token, nonce, expiry, v, r, s);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/interfaces/external/IERC1271.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Interface for verifying contract-based account signatures\r\n/// @notice Interface that verifies provided signature for the data\r\n/// @dev Interface defined by EIP-1271\r\ninterface IERC1271 {\r\n    /// @notice Returns whether the provided signature is valid for the provided data\r\n    /// @dev MUST return the bytes4 magic value 0x1626ba7e when function passes.\r\n    /// MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5).\r\n    /// MUST allow external calls.\r\n    /// @param hash Hash of the data to be signed\r\n    /// @param signature Signature byte array associated with _data\r\n    /// @return magicValue The bytes4 magic value 0x1626ba7e\r\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Interface for permit\r\n/// @notice Interface used by DAI/CHAI for permit\r\ninterface IERC20PermitAllowed {\r\n    /// @notice Approve the spender to spend some tokens via the holder signature\r\n    /// @dev This is the permit interface used by DAI and CHAI\r\n    /// @param holder The address of the token holder, the token owner\r\n    /// @param spender The address of the token spender\r\n    /// @param nonce The holder's nonce, increases at each call to permit\r\n    /// @param expiry The timestamp at which the permit is no longer valid\r\n    /// @param allowed Boolean that sets approval amount, true for type(uint256).max and false for 0\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function permit(\r\n        address holder,\r\n        address spender,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        bool allowed,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/external/IWETH9.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol';\r\n\r\n/// @title Interface for WETH9\r\ninterface IWETH9 is IERC20 {\r\n    /// @notice Deposit ether to get wrapped ether\r\n    function deposit() external payable;\r\n\r\n    /// @notice Withdraw wrapped ether to get ether\r\n    function withdraw(uint256) external;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IERC721Permit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol';\r\n\r\n/// @title ERC721 with permit\r\n/// @notice Extension to ERC721 that includes a permit function for signature based approvals\r\ninterface IERC721Permit is IERC721 {\r\n    /// @notice The permit typehash used in the permit signature\r\n    /// @return The typehash for the permit\r\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\r\n\r\n    /// @notice The domain separator used in the permit signature\r\n    /// @return The domain seperator used in encoding of permit signature\r\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\r\n\r\n    /// @notice Approve of a specific token ID for spending by spender via signature\r\n    /// @param spender The account that is being approved\r\n    /// @param tokenId The ID of the token that is being approved for spending\r\n    /// @param deadline The deadline timestamp by which the call must be mined for the approve to work\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function permit(\r\n        address spender,\r\n        uint256 tokenId,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IMulticall.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\n/// @title Multicall interface\r\n/// @notice Enables calling multiple methods in a single call to the contract\r\ninterface IMulticall {\r\n    /// @notice Call multiple functions in the current contract and return the data from all of them if they all succeed\r\n    /// @dev The `msg.value` should not be trusted for any method callable from multicall.\r\n    /// @param data The encoded function data for each of the calls to make to this contract\r\n    /// @return results The results from each of the calls passed in via data\r\n    function multicall(bytes[] calldata data) external payable returns (bytes[] memory results);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol';\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol';\r\n\r\nimport './IPoolInitializer.sol';\r\nimport './IERC721Permit.sol';\r\nimport './IPeripheryPayments.sol';\r\nimport './IPeripheryImmutableState.sol';\r\nimport '../libraries/PoolAddress.sol';\r\n\r\n/// @title Non-fungible token for positions\r\n/// @notice Wraps Elixir positions in a non-fungible token interface which allows for them to be transferred\r\n/// and authorized.\r\ninterface INonfungiblePositionManager is\r\n    IPoolInitializer,\r\n    IPeripheryPayments,\r\n    IPeripheryImmutableState,\r\n    IERC721Metadata,\r\n    IERC721Enumerable,\r\n    IERC721Permit\r\n{\r\n    /// @notice Emitted when liquidity is increased for a position NFT\r\n    /// @dev Also emitted when a token is minted\r\n    /// @param tokenId The ID of the token for which liquidity was increased\r\n    /// @param liquidity The amount by which liquidity for the NFT position was increased\r\n    /// @param amount0 The amount of token0 that was paid for the increase in liquidity\r\n    /// @param amount1 The amount of token1 that was paid for the increase in liquidity\r\n    event IncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);\r\n    /// @notice Emitted when liquidity is decreased for a position NFT\r\n    /// @param tokenId The ID of the token for which liquidity was decreased\r\n    /// @param liquidity The amount by which liquidity for the NFT position was decreased\r\n    /// @param amount0 The amount of token0 that was accounted for the decrease in liquidity\r\n    /// @param amount1 The amount of token1 that was accounted for the decrease in liquidity\r\n    event DecreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);\r\n    /// @notice Emitted when tokens are collected for a position NFT\r\n    /// @dev The amounts reported may not be exactly equivalent to the amounts transferred, due to rounding behavior\r\n    /// @param tokenId The ID of the token for which underlying tokens were collected\r\n    /// @param recipient The address of the account that received the collected tokens\r\n    /// @param amount0 The amount of token0 owed to the position that was collected\r\n    /// @param amount1 The amount of token1 owed to the position that was collected\r\n    event Collect(uint256 indexed tokenId, address recipient, uint256 amount0, uint256 amount1);\r\n    /// @notice Emitted when Elixir Rewarder is called and notified of the reward amount\r\n    /// @dev This only notifies that the Elixir Rewarder is called. Except some edge cases (which will be documented in Elixir\r\n    /// Rewarder), this event is a good indicator of the rewards being claimed. However, it is not certain as it depends on\r\n    /// Elixir Rewarder implementation to decide whether to send the rewards.\r\n    /// @param tokenId The ID of the token for which the reward is being claimed\r\n    /// @param recipient The address of the account that received the reward\r\n    event ClaimReward(uint256 indexed tokenId, address recipient);\r\n\r\n    /// @notice Returns the position information associated with a given token ID.\r\n    /// @dev Throws if the token ID is not valid.\r\n    /// @param tokenId The ID of the token that represents the position\r\n    /// @return nonce The nonce for permits\r\n    /// @return operator The address that is approved for spending\r\n    /// @return token0 The address of the token0 for a specific pool\r\n    /// @return token1 The address of the token1 for a specific pool\r\n    /// @return fee The fee associated with the pool\r\n    /// @return tickLower The lower end of the tick range for the position\r\n    /// @return tickUpper The higher end of the tick range for the position\r\n    /// @return liquidity The liquidity of the position\r\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\r\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\r\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\r\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\r\n    function positions(uint256 tokenId)\r\n        external\r\n        view\r\n        returns (\r\n            uint96 nonce,\r\n            address operator,\r\n            address token0,\r\n            address token1,\r\n            uint24 fee,\r\n            int24 tickLower,\r\n            int24 tickUpper,\r\n            uint128 liquidity,\r\n            uint256 feeGrowthInside0LastX128,\r\n            uint256 feeGrowthInside1LastX128,\r\n            uint128 tokensOwed0,\r\n            uint128 tokensOwed1\r\n        );\r\n\r\n    /// @notice Returns the position reward information associated with a given token ID.\r\n    /// @dev Throws if the token ID is not valid.\r\n    /// @param tokenId The ID of the token that represents the position\r\n    /// @return rewardPerLiquidityInsideLastX64 The snapshot of liquidity inside the ticks at last operation\r\n    /// @return rewardLastUpdated The timestamp of the last operation that updated rewardPerLiquidityInsideLastX64\r\n    /// @return rewardLastCollected The timestamp of the last time user claimed the rewards of the position\r\n    /// @return rewardOwed The uncollected amount of reward token owed to the position as of the last computation\r\n    function positionReward(uint256 tokenId)\r\n        external\r\n        view\r\n        returns (\r\n            uint192 rewardPerLiquidityInsideLastX64,\r\n            uint32 rewardLastUpdated,\r\n            uint32 rewardLastCollected,\r\n            uint256 rewardOwed\r\n        );\r\n\r\n    struct MintParams {\r\n        address token0;\r\n        address token1;\r\n        uint24 fee;\r\n        int24 tickLower;\r\n        int24 tickUpper;\r\n        uint256 amount0Desired;\r\n        uint256 amount1Desired;\r\n        uint256 amount0Min;\r\n        uint256 amount1Min;\r\n        address recipient;\r\n        uint256 deadline;\r\n    }\r\n\r\n    /// @notice Creates a new position wrapped in a NFT\r\n    /// @dev Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized\r\n    /// a method does not exist, i.e. the pool is assumed to be initialized.\r\n    /// @param params The params necessary to mint a position, encoded as `MintParams` in calldata\r\n    /// @return tokenId The ID of the token that represents the minted position\r\n    /// @return liquidity The amount of liquidity for this position\r\n    /// @return amount0 The amount of token0\r\n    /// @return amount1 The amount of token1\r\n    function mint(MintParams calldata params)\r\n        external\r\n        payable\r\n        returns (\r\n            uint256 tokenId,\r\n            uint128 liquidity,\r\n            uint256 amount0,\r\n            uint256 amount1\r\n        );\r\n\r\n    struct IncreaseLiquidityParams {\r\n        uint256 tokenId;\r\n        uint256 amount0Desired;\r\n        uint256 amount1Desired;\r\n        uint256 amount0Min;\r\n        uint256 amount1Min;\r\n        uint256 deadline;\r\n    }\r\n\r\n    /// @notice Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`\r\n    /// @param params tokenId The ID of the token for which liquidity is being increased,\r\n    /// amount0Desired The desired amount of token0 to be spent,\r\n    /// amount1Desired The desired amount of token1 to be spent,\r\n    /// amount0Min The minimum amount of token0 to spend, which serves as a slippage check,\r\n    /// amount1Min The minimum amount of token1 to spend, which serves as a slippage check,\r\n    /// deadline The time by which the transaction must be included to effect the change\r\n    /// @return liquidity The new liquidity amount as a result of the increase\r\n    /// @return amount0 The amount of token0 to acheive resulting liquidity\r\n    /// @return amount1 The amount of token1 to acheive resulting liquidity\r\n    function increaseLiquidity(IncreaseLiquidityParams calldata params)\r\n        external\r\n        payable\r\n        returns (\r\n            uint128 liquidity,\r\n            uint256 amount0,\r\n            uint256 amount1\r\n        );\r\n\r\n    struct DecreaseLiquidityParams {\r\n        uint256 tokenId;\r\n        uint128 liquidity;\r\n        uint256 amount0Min;\r\n        uint256 amount1Min;\r\n        uint256 deadline;\r\n    }\r\n\r\n    /// @notice Decreases the amount of liquidity in a position and accounts it to the position\r\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\r\n    /// amount The amount by which liquidity will be decreased,\r\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\r\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\r\n    /// deadline The time by which the transaction must be included to effect the change\r\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\r\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\r\n    function decreaseLiquidity(DecreaseLiquidityParams calldata params)\r\n        external\r\n        payable\r\n        returns (uint256 amount0, uint256 amount1);\r\n\r\n    struct CollectParams {\r\n        uint256 tokenId;\r\n        address recipient;\r\n        uint128 amount0Max;\r\n        uint128 amount1Max;\r\n    }\r\n\r\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\r\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\r\n    /// recipient The account that should receive the tokens,\r\n    /// amount0Max The maximum amount of token0 to collect,\r\n    /// amount1Max The maximum amount of token1 to collect\r\n    /// @return amount0 The amount of fees collected in token0\r\n    /// @return amount1 The amount of fees collected in token1\r\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\r\n\r\n    /// @notice Notifies rewards manager contract the amount of unclaimed rewards and then deletes the reward debt\r\n    /// @param tokenId The ID of the NFT for which reward is being collected,\r\n    /// recipient The account that should receive the reward tokens\r\n    function claimReward(uint256 tokenId, address recipient) external payable;\r\n\r\n    /// @notice Deletes reward debt of the token\r\n    /// @dev Because of (1) `burn` prevents burning the tokenId if there is any reward debt and (2) `claimReward` can\r\n    /// be DOSed by an improper reward manager implementation or a reward token, we have this separate function to\r\n    /// forgo rewards if user really needs to burn the tokenId and does not care about the rewards\r\n    /// @param tokenId The ID of the NFT to forgo the rewards\r\n    function forgoReward(uint256 tokenId) external payable;\r\n\r\n    /// @notice Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens\r\n    /// must be collected first.\r\n    /// @param tokenId The ID of the token that is being burned\r\n    function burn(uint256 tokenId) external payable;\r\n\r\n    /// @notice Restricted function to update address that generates tokenURI\r\n    /// @param tokenDescriptor_ The address of the new token descriptor\r\n    function updateTokenDescriptor(address tokenDescriptor_) external payable;\r\n\r\n    /// @notice Restricted function to update the reward manager contract address\r\n    /// @param rewardManager_ The contract that will distribute rewards during `claimReward`\r\n    function updateRewardManager(address rewardManager_) external payable;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nimport './INonfungiblePositionManager.sol';\r\n\r\n/// @title Describes position NFT tokens via URI\r\ninterface INonfungibleTokenPositionDescriptor {\r\n    /// @notice Produces the URI describing a particular token ID for a position manager\r\n    /// @dev Note this URI may be a data: URI with the JSON contents directly inlined\r\n    /// @param positionManager The position manager for which to describe the token\r\n    /// @param tokenId The ID of the token for which to produce a description, which may not be valid\r\n    /// @return The URI of the ERC721-compliant metadata\r\n    function tokenURI(INonfungiblePositionManager positionManager, uint256 tokenId)\r\n        external\r\n        view\r\n        returns (string memory);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Immutable state\r\n/// @notice Functions that return immutable state of the router\r\ninterface IPeripheryImmutableState {\r\n    /// @return Returns the address of the Pangolin V2 factory\r\n    function factory() external view returns (address);\r\n\r\n    /// @return Returns the address of WETH9\r\n    function WETH9() external view returns (address);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\n\r\n/// @title Periphery Payments\r\n/// @notice Functions to ease deposits and withdrawals of ETH\r\ninterface IPeripheryPayments {\r\n    /// @notice Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\r\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\r\n    /// @param amountMinimum The minimum amount of WETH9 to unwrap\r\n    /// @param recipient The address receiving ETH\r\n    function unwrapWETH9(uint256 amountMinimum, address recipient) external payable;\r\n\r\n    /// @notice Refunds any ETH balance held by this contract to the `msg.sender`\r\n    /// @dev Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps\r\n    /// that use ether for the input amount\r\n    function refundETH() external payable;\r\n\r\n    /// @notice Transfers the full amount of a token held by this contract to recipient\r\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing the token from users\r\n    /// @param token The contract address of the token which will be transferred to `recipient`\r\n    /// @param amountMinimum The minimum amount of token required for a transfer\r\n    /// @param recipient The destination address of the token\r\n    function sweepToken(\r\n        address token,\r\n        uint256 amountMinimum,\r\n        address recipient\r\n    ) external payable;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IPoolInitializer.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\n/// @title Creates and initializes Elixir Pools\r\n/// @notice Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that\r\n/// require the pool to exist.\r\ninterface IPoolInitializer {\r\n    /// @notice Creates a new pool if it does not exist, then initializes if not initialized\r\n    /// @dev This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\r\n    /// @param token0 The contract address of token0 of the pool\r\n    /// @param token1 The contract address of token1 of the pool\r\n    /// @param fee The fee amount of the elixir pool for the specified token pair\r\n    /// @param sqrtPriceX96 The initial square root price of the pool as a Q64.96 value\r\n    /// @return pool Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\r\n    function createAndInitializePoolIfNecessary(\r\n        address token0,\r\n        address token1,\r\n        uint24 fee,\r\n        uint160 sqrtPriceX96\r\n    ) external payable returns (address pool);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/ISelfPermit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\n\r\n/// @title Self Permit\r\n/// @notice Functionality to call permit on any EIP-2612-compliant token for use in the route\r\ninterface ISelfPermit {\r\n    /// @notice Permits this contract to spend a given token from `msg.sender`\r\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this).\r\n    /// @param token The address of the token spent\r\n    /// @param value The amount that can be spent of token\r\n    /// @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function selfPermit(\r\n        address token,\r\n        uint256 value,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable;\r\n\r\n    /// @notice Permits this contract to spend a given token from `msg.sender`\r\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this).\r\n    /// Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\r\n    /// @param token The address of the token spent\r\n    /// @param value The amount that can be spent of token\r\n    /// @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function selfPermitIfNecessary(\r\n        address token,\r\n        uint256 value,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable;\r\n\r\n    /// @notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\r\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this)\r\n    /// @param token The address of the token spent\r\n    /// @param nonce The current nonce of the owner\r\n    /// @param expiry The timestamp at which the permit is no longer valid\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function selfPermitAllowed(\r\n        address token,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable;\r\n\r\n    /// @notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\r\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this)\r\n    /// Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\r\n    /// @param token The address of the token spent\r\n    /// @param nonce The current nonce of the owner\r\n    /// @param expiry The timestamp at which the permit is no longer valid\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function selfPermitAllowedIfNecessary(\r\n        address token,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable;\r\n}\r\n"},"contracts/elixir-periphery/libraries/CallbackValidation.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport '../../elixir-core/interfaces/IElixirPool.sol';\r\nimport './PoolAddress.sol';\r\n\r\n/// @notice Provides validation for callbacks from Elixir Pools\r\nlibrary CallbackValidation {\r\n    /// @notice Returns the address of a valid Elixir Pool\r\n    /// @param factory The contract address of the Elixir factory\r\n    /// @param tokenA The contract address of either token0 or token1\r\n    /// @param tokenB The contract address of the other token\r\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\r\n    /// @return pool The Elixir pool contract address\r\n    function verifyCallback(\r\n        address factory,\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) internal view returns (IElixirPool pool) {\r\n        return verifyCallback(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee));\r\n    }\r\n\r\n    /// @notice Returns the address of a valid Elixir Pool\r\n    /// @param factory The contract address of the Elixir factory\r\n    /// @param poolKey The identifying key of the Elixir pool\r\n    /// @return pool The Elixir pool contract address\r\n    function verifyCallback(address factory, PoolAddress.PoolKey memory poolKey)\r\n        internal\r\n        view\r\n        returns (IElixirPool pool)\r\n    {\r\n        pool = IElixirPool(PoolAddress.computeAddress(factory, poolKey));\r\n        require(msg.sender == address(pool));\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/ChainId.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.0 <0.8.0;\r\n\r\n/// @title Function for getting the current chain ID\r\nlibrary ChainId {\r\n    /// @dev Gets the current chain ID\r\n    /// @return chainId The current chain ID\r\n    function get() internal pure returns (uint256 chainId) {\r\n        assembly {\r\n            chainId := chainid()\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/LiquidityAmounts.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nimport '../../elixir-core/libraries/FullMath.sol';\r\nimport '../../elixir-core/libraries/FixedPoint96.sol';\r\n\r\n/// @title Liquidity amount functions\r\n/// @notice Provides functions for computing liquidity amounts from token amounts and prices\r\nlibrary LiquidityAmounts {\r\n    /// @notice Downcasts uint256 to uint128\r\n    /// @param x The uint258 to be downcasted\r\n    /// @return y The passed value, downcasted to uint128\r\n    function toUint128(uint256 x) private pure returns (uint128 y) {\r\n        require((y = uint128(x)) == x);\r\n    }\r\n\r\n    /// @notice Computes the amount of liquidity received for a given amount of token0 and price range\r\n    /// @dev Calculates amount0 * (sqrt(upper) * sqrt(lower)) / (sqrt(upper) - sqrt(lower))\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param amount0 The amount0 being sent in\r\n    /// @return liquidity The amount of returned liquidity\r\n    function getLiquidityForAmount0(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount0\r\n    ) internal pure returns (uint128 liquidity) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n        uint256 intermediate = FullMath.mulDiv(sqrtRatioAX96, sqrtRatioBX96, FixedPoint96.Q96);\r\n        return toUint128(FullMath.mulDiv(amount0, intermediate, sqrtRatioBX96 - sqrtRatioAX96));\r\n    }\r\n\r\n    /// @notice Computes the amount of liquidity received for a given amount of token1 and price range\r\n    /// @dev Calculates amount1 / (sqrt(upper) - sqrt(lower)).\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param amount1 The amount1 being sent in\r\n    /// @return liquidity The amount of returned liquidity\r\n    function getLiquidityForAmount1(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount1\r\n    ) internal pure returns (uint128 liquidity) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n        return toUint128(FullMath.mulDiv(amount1, FixedPoint96.Q96, sqrtRatioBX96 - sqrtRatioAX96));\r\n    }\r\n\r\n    /// @notice Computes the maximum amount of liquidity received for a given amount of token0, token1, the current\r\n    /// pool prices and the prices at the tick boundaries\r\n    /// @param sqrtRatioX96 A sqrt price representing the current pool prices\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param amount0 The amount of token0 being sent in\r\n    /// @param amount1 The amount of token1 being sent in\r\n    /// @return liquidity The maximum amount of liquidity received\r\n    function getLiquidityForAmounts(\r\n        uint160 sqrtRatioX96,\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount0,\r\n        uint256 amount1\r\n    ) internal pure returns (uint128 liquidity) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        if (sqrtRatioX96 <= sqrtRatioAX96) {\r\n            liquidity = getLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\r\n        } else if (sqrtRatioX96 < sqrtRatioBX96) {\r\n            uint128 liquidity0 = getLiquidityForAmount0(sqrtRatioX96, sqrtRatioBX96, amount0);\r\n            uint128 liquidity1 = getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioX96, amount1);\r\n\r\n            liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1;\r\n        } else {\r\n            liquidity = getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\r\n        }\r\n    }\r\n\r\n    /// @notice Computes the amount of token0 for a given amount of liquidity and a price range\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param liquidity The liquidity being valued\r\n    /// @return amount0 The amount of token0\r\n    function getAmount0ForLiquidity(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) internal pure returns (uint256 amount0) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        return\r\n            FullMath.mulDiv(\r\n                uint256(liquidity) << FixedPoint96.RESOLUTION,\r\n                sqrtRatioBX96 - sqrtRatioAX96,\r\n                sqrtRatioBX96\r\n            ) / sqrtRatioAX96;\r\n    }\r\n\r\n    /// @notice Computes the amount of token1 for a given amount of liquidity and a price range\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param liquidity The liquidity being valued\r\n    /// @return amount1 The amount of token1\r\n    function getAmount1ForLiquidity(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) internal pure returns (uint256 amount1) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        return FullMath.mulDiv(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96);\r\n    }\r\n\r\n    /// @notice Computes the token0 and token1 value for a given amount of liquidity, the current\r\n    /// pool prices and the prices at the tick boundaries\r\n    /// @param sqrtRatioX96 A sqrt price representing the current pool prices\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param liquidity The liquidity being valued\r\n    /// @return amount0 The amount of token0\r\n    /// @return amount1 The amount of token1\r\n    function getAmountsForLiquidity(\r\n        uint160 sqrtRatioX96,\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) internal pure returns (uint256 amount0, uint256 amount1) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        if (sqrtRatioX96 <= sqrtRatioAX96) {\r\n            amount0 = getAmount0ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\r\n        } else if (sqrtRatioX96 < sqrtRatioBX96) {\r\n            amount0 = getAmount0ForLiquidity(sqrtRatioX96, sqrtRatioBX96, liquidity);\r\n            amount1 = getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioX96, liquidity);\r\n        } else {\r\n            amount1 = getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/PoolAddress.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0 <0.8.0;\r\n\r\n/// @title Provides functions for deriving a pool address from the factory, tokens, and the fee\r\nlibrary PoolAddress {\r\n    // For OpenZeppelin Clones, init code hash is derived from the hash of the bytecode\r\n    // `0x41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c22`\r\n    // if implementation address is `0x5cB5539A18591947C82f5D840B05ed79f6395491`. We get that implementation address\r\n    // by always using `0x427207B1Cdb6F2Ab8B1D21Ab77600f00b0a639a7` with nonce 0 as the deployer of the implementation.\r\n    bytes32 internal constant POOL_INIT_CODE_HASH = 0x41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c22;\r\n\r\n    /// @notice The identifying key of the pool\r\n    struct PoolKey {\r\n        address token0;\r\n        address token1;\r\n        uint24 fee;\r\n    }\r\n\r\n    /// @notice Returns PoolKey: the ordered tokens with the matched fee levels\r\n    /// @param tokenA The first token of a pool, unsorted\r\n    /// @param tokenB The second token of a pool, unsorted\r\n    /// @param fee The fee level of the pool\r\n    /// @return Poolkey The pool details with ordered token0 and token1 assignments\r\n    function getPoolKey(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) internal pure returns (PoolKey memory) {\r\n        if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA);\r\n        return PoolKey({token0: tokenA, token1: tokenB, fee: fee});\r\n    }\r\n\r\n    /// @notice Deterministically computes the pool address given the factory and PoolKey\r\n    /// @param factory The Elixir factory contract address\r\n    /// @param key The PoolKey\r\n    /// @return pool The contract address of the elixir pool\r\n    function computeAddress(address factory, PoolKey memory key) internal pure returns (address pool) {\r\n        require(key.token0 < key.token1);\r\n        pool = address(\r\n            uint256(\r\n                keccak256(\r\n                    abi.encodePacked(\r\n                        hex'ff',\r\n                        factory,\r\n                        keccak256(abi.encode(key.token0, key.token1, key.fee)),\r\n                        POOL_INIT_CODE_HASH\r\n                    )\r\n                )\r\n            )\r\n        );\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/PositionKey.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nlibrary PositionKey {\r\n    /// @dev Returns the key of the position in the core library\r\n    function compute(\r\n        address owner,\r\n        int24 tickLower,\r\n        int24 tickUpper\r\n    ) internal pure returns (bytes32) {\r\n        return keccak256(abi.encodePacked(owner, tickLower, tickUpper));\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/TransferHelper.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.6.0;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol';\r\n\r\nlibrary TransferHelper {\r\n    /// @notice Transfers tokens from the targeted address to the given destination\r\n    /// @notice Errors with 'STF' if transfer fails\r\n    /// @param token The contract address of the token to be transferred\r\n    /// @param from The originating address from which the tokens will be transferred\r\n    /// @param to The destination address of the transfer\r\n    /// @param value The amount to be transferred\r\n    function safeTransferFrom(\r\n        address token,\r\n        address from,\r\n        address to,\r\n        uint256 value\r\n    ) internal {\r\n        (bool success, bytes memory data) =\r\n            token.call(abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, value));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'STF');\r\n    }\r\n\r\n    /// @notice Transfers tokens from msg.sender to a recipient\r\n    /// @dev Errors with ST if transfer fails\r\n    /// @param token The contract address of the token which will be transferred\r\n    /// @param to The recipient of the transfer\r\n    /// @param value The value of the transfer\r\n    function safeTransfer(\r\n        address token,\r\n        address to,\r\n        uint256 value\r\n    ) internal {\r\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'ST');\r\n    }\r\n\r\n    /// @notice Approves the stipulated contract to spend the given allowance in the given token\r\n    /// @dev Errors with 'SA' if transfer fails\r\n    /// @param token The contract address of the token to be approved\r\n    /// @param to The target of the approval\r\n    /// @param value The amount of the given token the target will be allowed to spend\r\n    function safeApprove(\r\n        address token,\r\n        address to,\r\n        uint256 value\r\n    ) internal {\r\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.approve.selector, to, value));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'SA');\r\n    }\r\n\r\n    /// @notice Transfers ETH to the recipient address\r\n    /// @dev Fails with `STE`\r\n    /// @param to The destination of the transfer\r\n    /// @param value The value to be transferred\r\n    function safeTransferETH(address to, uint256 value) internal {\r\n        (bool success, ) = to.call{value: value}(new bytes(0));\r\n        require(success, 'STE');\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/NonfungiblePositionManager.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport '../elixir-core/interfaces/IElixirPool.sol';\r\nimport '../elixir-core/libraries/FixedPoint128.sol';\r\nimport '../elixir-core/libraries/FullMath.sol';\r\nimport '../elixir-rewarder/interfaces/IElixirRewarder.sol';\r\n\r\nimport './interfaces/INonfungiblePositionManager.sol';\r\nimport './interfaces/INonfungibleTokenPositionDescriptor.sol';\r\nimport './libraries/PositionKey.sol';\r\nimport './libraries/PoolAddress.sol';\r\nimport './base/LiquidityManagement.sol';\r\nimport './base/PeripheryImmutableState.sol';\r\nimport './base/Multicall.sol';\r\nimport './base/ERC721Permit.sol';\r\nimport './base/SelfPermit.sol';\r\nimport './base/PoolInitializer.sol';\r\n\r\n/// @title NFT positions\r\n/// @notice Wraps Elixir positions in the ERC721 non-fungible token interface\r\ncontract NonfungiblePositionManager is\r\n    INonfungiblePositionManager,\r\n    Multicall,\r\n    ERC721Permit,\r\n    PeripheryImmutableState,\r\n    PoolInitializer,\r\n    LiquidityManagement,\r\n    SelfPermit\r\n{\r\n    // details about the elixir position\r\n    struct Position {\r\n        // the nonce for permits\r\n        uint96 nonce;\r\n        // the address that is approved for spending this token\r\n        address operator;\r\n        // the ID of the pool with which this token is connected\r\n        uint80 poolId;\r\n        // the tick range of the position\r\n        int24 tickLower;\r\n        int24 tickUpper;\r\n        // the liquidity of the position\r\n        uint128 liquidity;\r\n        // the fee growth of the aggregate position as of the last action on the individual position\r\n        uint256 feeGrowthInside0LastX128;\r\n        uint256 feeGrowthInside1LastX128;\r\n        // how many uncollected tokens are owed to the position, as of the last computation\r\n        uint128 tokensOwed0;\r\n        uint128 tokensOwed1;\r\n        // reward stuff\r\n        uint192 rewardPerLiquidityInsideLastX64;\r\n        uint32 rewardLastUpdated;\r\n        uint32 rewardLastCollected;\r\n        uint256 rewardOwed;\r\n    }\r\n\r\n    /// @dev IDs of pools assigned by this contract\r\n    mapping(address => uint80) private _poolIds;\r\n\r\n    /// @dev Pool keys by pool ID, to save on SSTOREs for position data\r\n    mapping(uint80 => PoolAddress.PoolKey) private _poolIdToPoolKey;\r\n\r\n    /// @dev The token ID position data\r\n    mapping(uint256 => Position) private _positions;\r\n\r\n    /// @dev The ID of the next token that will be minted. Skips 0\r\n    uint176 private _nextId = 1;\r\n    /// @dev The ID of the next pool that is used for the first time. Skips 0\r\n    uint80 private _nextPoolId = 1;\r\n\r\n    /// @dev The address of the token descriptor contract, which handles generating token URIs for position tokens\r\n    address private _tokenDescriptor;\r\n\r\n    /// @dev The address that will send rewards to the user based on the amount in `claimReward` function\r\n    address private _elixirRewarder;\r\n\r\n    constructor(\r\n        address _factory,\r\n        address _WETH9,\r\n        address _tokenDescriptor_,\r\n        address _elixirRewarder_\r\n    ) ERC721Permit('Elixir Positions NFT', 'IXIR-POS', '1') PeripheryImmutableState(_factory, _WETH9) {\r\n        _tokenDescriptor = _tokenDescriptor_;\r\n        _elixirRewarder = _elixirRewarder_;\r\n    }\r\n\r\n    /// @inheritdoc INonfungiblePositionManager\r\n    function positions(uint256 tokenId)\r\n        external\r\n        view\r\n        override\r\n        returns (\r\n            uint96 nonce,\r\n            address operator,\r\n            address token0,\r\n            address token1,\r\n            uint24 fee,\r\n            int24 tickLower,\r\n            int24 tickUpper,\r\n            uint128 liquidity,\r\n            uint256 feeGrowthInside0LastX128,\r\n            uint256 feeGrowthInside1LastX128,\r\n            uint128 tokensOwed0,\r\n            uint128 tokensOwed1\r\n        )\r\n    {\r\n        Position memory position = _positions[tokenId];\r\n        require(position.poolId != 0, 'Invalid token ID');\r\n        PoolAddress.PoolKey memory poolKey = _poolIdToPoolKey[position.poolId];\r\n        return (\r\n            position.nonce,\r\n            position.operator,\r\n            poolKey.token0,\r\n            poolKey.token1,\r\n            poolKey.fee,\r\n            position.tickLower,\r\n            position.tickUpper,\r\n            position.liquidity,\r\n            position.feeGrowthInside0LastX128,\r\n            position.feeGrowthInside1LastX128,\r\n            position.tokensOwed0,\r\n            position.tokensOwed1\r\n        );\r\n    }\r\n\r\n    /// @inheritdoc INonfungiblePositionManager\r\n    function positionReward(uint256 tokenId)\r\n        external\r\n        view\r\n        override\r\n        returns (\r\n            uint192 rewardPerLiquidityInsideLastX64,\r\n            uint32 rewardLastUpdated,\r\n            uint32 rewardLastCollected,\r\n            uint256 rewardOwed\r\n        )\r\n    {\r\n        Position memory position = _positions[tokenId];\r\n        require(position.poolId != 0, 'Invalid token ID');\r\n        return (\r\n            position.rewardPerLiquidityInsideLastX64,\r\n            position.rewardLastUpdated,\r\n            position.rewardLastCollected,\r\n            position.rewardOwed\r\n        );\r\n    }\r\n\r\n    /// @dev Caches a pool key\r\n    function cachePoolKey(address pool, PoolAddress.PoolKey memory poolKey) private returns (uint80 poolId) {\r\n        poolId = _poolIds[pool];\r\n        if (poolId == 0) {\r\n            _poolIds[pool] = (poolId = _nextPoolId++);\r\n            _poolIdToPoolKey[poolId] = poolKey;\r\n        }\r\n    }\r\n\r\n    /// @inheritdoc INonfungiblePositionManager\r\n    function mint(MintParams calldata params)\r\n        external\r\n        payable\r\n        override\r\n        checkDeadline(params.deadline)\r\n        returns (\r\n            uint256 tokenId,\r\n            uint128 liquidity,\r\n            uint256 amount0,\r\n            uint256 amount1\r\n        )\r\n    {\r\n        IElixirPool pool;\r\n        (liquidity, amount0, amount1, pool) = addLiquidity(\r\n            AddLiquidityParams({\r\n                token0: params.token0,\r\n                token1: params.token1,\r\n                fee: params.fee,\r\n                recipient: address(this),\r\n                tickLower: params.tickLower,\r\n                tickUpper: params.tickUpper,\r\n                amount0Desired: params.amount0Desired,\r\n                amount1Desired: params.amount1Desired,\r\n                amount0Min: params.amount0Min,\r\n                amount1Min: params.amount1Min\r\n            })\r\n        );\r\n\r\n        _mint(params.recipient, (tokenId = _nextId++));\r\n\r\n        bytes32 positionKey = PositionKey.compute(address(this), params.tickLower, params.tickUpper);\r\n        (, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, , ) = pool.positions(positionKey);\r\n\r\n        // idempotent set\r\n        uint80 poolId =\r\n            cachePoolKey(\r\n                address(pool),\r\n                PoolAddress.PoolKey({token0: params.token0, token1: params.token1, fee: params.fee})\r\n            );\r\n\r\n        _positions[tokenId] = Position({\r\n            nonce: 0,\r\n            operator: address(0),\r\n            poolId: poolId,\r\n            tickLower: params.tickLower,\r\n            tickUpper: params.tickUpper,\r\n            liquidity: liquidity,\r\n            feeGrowthInside0LastX128: feeGrowthInside0LastX128,\r\n            feeGrowthInside1LastX128: feeGrowthInside1LastX128,\r\n            tokensOwed0: 0,\r\n            tokensOwed1: 0,\r\n            rewardPerLiquidityInsideLastX64: 0,\r\n            rewardLastUpdated: 0,\r\n            rewardLastCollected: 0,\r\n            rewardOwed: 0\r\n        });\r\n\r\n        emit IncreaseLiquidity(tokenId, liquidity, amount0, amount1);\r\n    }\r\n\r\n    function _isAuthorizedForToken(uint256 tokenId) internal view {\r\n        require(_isApprovedOrOwner(msg.sender, tokenId), 'Not approved');\r\n    }\r\n    modifier isAuthorizedForToken(uint256 tokenId) {\r\n        _isAuthorizedForToken(tokenId);\r\n        _;\r\n    }\r\n\r\n    function _onlyFactoryOwner() internal view {\r\n        require(msg.sender == IElixirFactory(factory).owner());\r\n    }\r\n    modifier onlyFactoryOwner() {\r\n        _onlyFactoryOwner();\r\n        _;\r\n    }\r\n\r\n    function tokenURI(uint256 tokenId) public view override(ERC721, IERC721Metadata) returns (string memory) {\r\n        require(_exists(tokenId));\r\n        return INonfungibleTokenPositionDescriptor(_tokenDescriptor).tokenURI(this, tokenId);\r\n    }\r\n\r\n    // save bytecode by removing implementation of unused method\r\n    function baseURI() public pure override returns (string memory) {}\r\n\r\n    /// @inheritdoc INonfungiblePositionManager\r\n    function increaseLiquidity(IncreaseLiquidityParams calldata params)\r\n        external\r\n        payable\r\n        override\r\n        checkDeadline(params.deadline)\r\n        returns (\r\n            uint128 liquidity,\r\n            uint256 amount0,\r\n            uint256 amount1\r\n        )\r\n    {\r\n        Position storage position = _positions[params.tokenId];\r\n\r\n        PoolAddress.PoolKey memory poolKey = _poolIdToPoolKey[position.poolId];\r\n\r\n        IElixirPool pool;\r\n        (liquidity, amount0, amount1, pool) = addLiquidity(\r\n            AddLiquidityParams({\r\n                token0: poolKey.token0,\r\n                token1: poolKey.token1,\r\n                fee: poolKey.fee,\r\n                tickLower: position.tickLower,\r\n                tickUpper: position.tickUpper,\r\n                amount0Desired: params.amount0Desired,\r\n                amount1Desired: params.amount1Desired,\r\n                amount0Min: params.amount0Min,\r\n                amount1Min: params.amount1Min,\r\n                recipient: address(this)\r\n            })\r\n        );\r\n\r\n        bytes32 positionKey = PositionKey.compute(address(this), position.tickLower, position.tickUpper);\r\n\r\n        // this is now updated to the current transaction\r\n        (, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, , ) = pool.positions(positionKey);\r\n\r\n        position.tokensOwed0 += uint128(\r\n            FullMath.mulDiv(\r\n                feeGrowthInside0LastX128 - position.feeGrowthInside0LastX128,\r\n                position.liquidity,\r\n                FixedPoint128.Q128\r\n            )\r\n        );\r\n        position.tokensOwed1 += uint128(\r\n            FullMath.mulDiv(\r\n                feeGrowthInside1LastX128 - position.feeGrowthInside1LastX128,\r\n                position.liquidity,\r\n                FixedPoint128.Q128\r\n            )\r\n        );\r\n\r\n        _updateReward(position, pool); // must use position.liquidity before update\r\n\r\n        position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;\r\n        position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;\r\n        position.liquidity += liquidity;\r\n\r\n        emit IncreaseLiquidity(params.tokenId, liquidity, amount0, amount1);\r\n    }\r\n\r\n    /// @inheritdoc INonfungiblePositionManager\r\n    function decreaseLiquidity(DecreaseLiquidityParams calldata params)\r\n        external\r\n        payable\r\n        override\r\n        isAuthorizedForToken(params.tokenId)\r\n        checkDeadline(params.deadline)\r\n        returns (uint256 amount0, uint256 amount1)\r\n    {\r\n        require(params.liquidity > 0);\r\n        Position storage position = _positions[params.tokenId];\r\n\r\n        uint128 positionLiquidity = position.liquidity;\r\n        require(positionLiquidity >= params.liquidity);\r\n\r\n        PoolAddress.PoolKey memory poolKey = _poolIdToPoolKey[position.poolId];\r\n        IElixirPool pool = IElixirPool(PoolAddress.computeAddress(factory, poolKey));\r\n\r\n        // we must update reward before burn otherwise it reverts if ticks get unintialized\r\n        _updateReward(position, pool);\r\n\r\n        (amount0, amount1) = pool.burn(position.tickLower, position.tickUpper, params.liquidity);\r\n\r\n        require(amount0 >= params.amount0Min && amount1 >= params.amount1Min, 'Price slippage check');\r\n\r\n        bytes32 positionKey = PositionKey.compute(address(this), position.tickLower, position.tickUpper);\r\n        // this is now updated to the current transaction\r\n        (, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, , ) = pool.positions(positionKey);\r\n\r\n        position.tokensOwed0 +=\r\n            uint128(amount0) +\r\n            uint128(\r\n                FullMath.mulDiv(\r\n                    feeGrowthInside0LastX128 - position.feeGrowthInside0LastX128,\r\n                    positionLiquidity,\r\n                    FixedPoint128.Q128\r\n                )\r\n            );\r\n        position.tokensOwed1 +=\r\n            uint128(amount1) +\r\n            uint128(\r\n                FullMath.mulDiv(\r\n                    feeGrowthInside1LastX128 - position.feeGrowthInside1LastX128,\r\n                    positionLiquidity,\r\n                    FixedPoint128.Q128\r\n                )\r\n            );\r\n\r\n        position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;\r\n        position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;\r\n        // subtraction is safe because we checked positionLiquidity is gte params.liquidity\r\n        position.liquidity = positionLiquidity - params.liquidity;\r\n\r\n        emit DecreaseLiquidity(params.tokenId, params.liquidity, amount0, amount1);\r\n    }\r\n\r\n    /// @inheritdoc INonfungiblePositionManager\r\n    function collect(CollectParams calldata params)\r\n        external\r\n        payable\r\n        override\r\n        isAuthorizedForToken(params.tokenId)\r\n        returns (uint256 amount0, uint256 amount1)\r\n    {\r\n        require(params.amount0Max > 0 || params.amount1Max > 0);\r\n        // allow collecting to the nft position manager address with address 0\r\n        address recipient = params.recipient == address(0) ? address(this) : params.recipient;\r\n\r\n        Position storage position = _positions[params.tokenId];\r\n\r\n        PoolAddress.PoolKey memory poolKey = _poolIdToPoolKey[position.poolId];\r\n\r\n        IElixirPool pool = IElixirPool(PoolAddress.computeAddress(factory, poolKey));\r\n\r\n        (uint128 tokensOwed0, uint128 tokensOwed1) = (position.tokensOwed0, position.tokensOwed1);\r\n\r\n        // trigger an update of the position fees owed and fee growth snapshots if it has any liquidity\r\n        if (position.liquidity > 0) {\r\n            pool.burn(position.tickLower, position.tickUpper, 0);\r\n            (, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, , ) =\r\n                pool.positions(PositionKey.compute(address(this), position.tickLower, position.tickUpper));\r\n\r\n            tokensOwed0 += uint128(\r\n                FullMath.mulDiv(\r\n                    feeGrowthInside0LastX128 - position.feeGrowthInside0LastX128,\r\n                    position.liquidity,\r\n                    FixedPoint128.Q128\r\n                )\r\n            );\r\n            tokensOwed1 += uint128(\r\n                FullMath.mulDiv(\r\n                    feeGrowthInside1LastX128 - position.feeGrowthInside1LastX128,\r\n                    position.liquidity,\r\n                    FixedPoint128.Q128\r\n                )\r\n            );\r\n\r\n            position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;\r\n            position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;\r\n        }\r\n\r\n        // compute the arguments to give to the pool#collect method\r\n        (uint128 amount0Collect, uint128 amount1Collect) =\r\n            (\r\n                params.amount0Max > tokensOwed0 ? tokensOwed0 : params.amount0Max,\r\n                params.amount1Max > tokensOwed1 ? tokensOwed1 : params.amount1Max\r\n            );\r\n\r\n        // the actual amounts collected are returned\r\n        (amount0, amount1) = pool.collect(\r\n            recipient,\r\n            position.tickLower,\r\n            position.tickUpper,\r\n            amount0Collect,\r\n            amount1Collect\r\n        );\r\n\r\n        // sometimes there will be a few less wei than expected due to rounding down in core, but we just subtract the full amount expected\r\n        // instead of the actual amount so we can burn the token\r\n        (position.tokensOwed0, position.tokensOwed1) = (tokensOwed0 - amount0Collect, tokensOwed1 - amount1Collect);\r\n\r\n        emit Collect(params.tokenId, recipient, amount0Collect, amount1Collect);\r\n    }\r\n\r\n    /// @inheritdoc INonfungiblePositionManager\r\n    function claimReward(uint256 tokenId, address recipient) external payable override isAuthorizedForToken(tokenId) {\r\n        require(recipient != address(0));\r\n\r\n        Position storage position = _positions[tokenId];\r\n\r\n        uint256 rewardOwed = position.rewardOwed;\r\n        uint32 rewardLastCollected = _clampedTimestamp();\r\n\r\n        position.rewardOwed = 0;\r\n        position.rewardLastCollected = rewardLastCollected;\r\n\r\n        IElixirRewarder(_elixirRewarder).claimReward(\r\n            recipient,\r\n            rewardOwed,\r\n            tokenId,\r\n            PoolAddress.computeAddress(factory, _poolIdToPoolKey[position.poolId]),\r\n            position.rewardLastUpdated,\r\n            rewardLastCollected\r\n        );\r\n    }\r\n\r\n    /// @inheritdoc INonfungiblePositionManager\r\n    function forgoReward(uint256 tokenId) external payable override isAuthorizedForToken(tokenId) {\r\n        Position storage position = _positions[tokenId];\r\n        position.rewardLastCollected = _clampedTimestamp();\r\n        position.rewardOwed = 0;\r\n    }\r\n\r\n    /// @inheritdoc INonfungiblePositionManager\r\n    function burn(uint256 tokenId) external payable override isAuthorizedForToken(tokenId) {\r\n        Position storage position = _positions[tokenId];\r\n        require(\r\n            position.liquidity == 0 &&\r\n            position.tokensOwed0 == 0 &&\r\n            position.tokensOwed1 == 0 &&\r\n            position.rewardOwed == 0\r\n        );\r\n        delete _positions[tokenId];\r\n        _burn(tokenId);\r\n    }\r\n\r\n    function updateTokenDescriptor(address _tokenDescriptor_) external payable override onlyFactoryOwner {\r\n        _tokenDescriptor = _tokenDescriptor_;\r\n    }\r\n\r\n    function updateRewardManager(address _elixirRewarder_) external payable override onlyFactoryOwner {\r\n        _elixirRewarder = _elixirRewarder_;\r\n    }\r\n\r\n    function _clampedTimestamp() internal view returns (uint32) {\r\n        return block.timestamp > type(uint32).max ? type(uint32).max : uint32(block.timestamp);\r\n    }\r\n\r\n    function _updateReward(Position storage position, IElixirPool pool) internal {\r\n        (, , , uint192 rewardPerLiquidityInsideCurrentX64) =\r\n            pool.snapshotCumulativesInside(position.tickLower, position.tickUpper);\r\n\r\n        if (position.rewardPerLiquidityInsideLastX64 >= rewardPerLiquidityInsideCurrentX64) {\r\n            return;\r\n        }\r\n\r\n        if (position.rewardLastUpdated != 0) {\r\n            position.rewardOwed += FullMath.mulDiv(\r\n                rewardPerLiquidityInsideCurrentX64 - position.rewardPerLiquidityInsideLastX64,\r\n                position.liquidity,\r\n                2**64\r\n            );\r\n        }\r\n\r\n        position.rewardPerLiquidityInsideLastX64 = rewardPerLiquidityInsideCurrentX64;\r\n        position.rewardLastUpdated = _clampedTimestamp();\r\n    }\r\n\r\n    function _getAndIncrementNonce(uint256 tokenId) internal override returns (uint256) {\r\n        return uint256(_positions[tokenId].nonce++);\r\n    }\r\n\r\n    /// @inheritdoc IERC721\r\n    function getApproved(uint256 tokenId) public view override(ERC721, IERC721) returns (address) {\r\n        require(_exists(tokenId), 'ERC721: nonexistent token');\r\n\r\n        return _positions[tokenId].operator;\r\n    }\r\n\r\n    /// @dev Overrides _approve to use the operator in the position, which is packed with the position permit nonce\r\n    function _approve(address to, uint256 tokenId) internal override(ERC721) {\r\n        _positions[tokenId].operator = to;\r\n        emit Approval(ownerOf(tokenId), to, tokenId);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/MockTimeNonfungiblePositionManager.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport \"../NonfungiblePositionManager.sol\";\r\n\r\ncontract MockTimeNonfungiblePositionManager is NonfungiblePositionManager {\r\n    uint256 time;\r\n\r\n    constructor(\r\n        address _factory,\r\n        address _WETH9,\r\n        address _tokenDescriptor,\r\n        address _elixirRewarder\r\n    )\r\n        NonfungiblePositionManager(\r\n            _factory,\r\n            _WETH9,\r\n            _tokenDescriptor,\r\n            _elixirRewarder\r\n        )\r\n    {}\r\n\r\n    function _blockTimestamp() internal view returns (uint256) {\r\n        return time;\r\n    }\r\n\r\n    function setTime(uint256 _time) external {\r\n        time = _time;\r\n    }\r\n}\r\n"},"contracts/elixir-rewarder/interfaces/IElixirRewarder.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\n/// @title IElixirRewarder - Elixir Rewarder interface\r\n/// @notice ElixirRewarder is the reward manager contract for Elixir. It works with NonfungiblePositionManager.\r\n/// It does not need to do any calculation, and it trusts the amounts notified by NonfungiblePositionManager.\r\ninterface IElixirRewarder {\r\n    /// @notice Send `rewardOwed` to the `recipient`\r\n    /// @param recipient The address to which the reward should be sent\r\n    /// rewardOwed The amount of reward the will be sent\r\n    /// tokenId The position token ID for which the reward is being claimed\r\n    /// pool The address of the pool from which the position belongs to, this will determine reward token\r\n    /// rewardLastUpdated The last timestamp when there was an operation on the position\r\n    /// rewardLastCollected The last timestamp when the reward was collected for the position\r\n    function claimReward(\r\n        address recipient,\r\n        uint256 rewardOwed,\r\n        uint256 tokenId,\r\n        address pool,\r\n        uint32 rewardLastUpdated,\r\n        uint32 rewardLastCollected\r\n    ) external;\r\n}\r\n"},"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n    /**\n     * @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n     * given `owner`'s signed approval.\n     *\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n     * ordering also apply here.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `deadline` must be a timestamp in the future.\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n     * over the EIP712-formatted function arguments.\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\n     *\n     * For more information on the signature format, see the\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n     * section].\n     */\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\n\n    /**\n     * @dev Returns the current nonce for `owner`. This value must be\n     * included whenever a signature is generated for {permit}.\n     *\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\n     * prevents a signature from being used multiple times.\n     */\n    function nonces(address owner) external view returns (uint256);\n\n    /**\n     * @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts may inherit from this and call {_registerInterface} to declare\n * their support of an interface.\n */\nabstract contract ERC165 is IERC165 {\n    /*\n     * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7\n     */\n    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;\n\n    /**\n     * @dev Mapping of interface ids to whether or not it's supported.\n     */\n    mapping(bytes4 => bool) private _supportedInterfaces;\n\n    constructor () {\n        // Derived contracts need only register support for their own interfaces,\n        // we register support for ERC165 itself here\n        _registerInterface(_INTERFACE_ID_ERC165);\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     *\n     * Time complexity O(1), guaranteed to always use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return _supportedInterfaces[interfaceId];\n    }\n\n    /**\n     * @dev Registers the contract as an implementer of the interface defined by\n     * `interfaceId`. Support of the actual ERC165 interface is automatic and\n     * registering its interface id is not required.\n     *\n     * See {IERC165-supportsInterface}.\n     *\n     * Requirements:\n     *\n     * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).\n     */\n    function _registerInterface(bytes4 interfaceId) internal virtual {\n        require(interfaceId != 0xffffffff, \"ERC165: invalid interface id\");\n        _supportedInterfaces[interfaceId] = true;\n    }\n}\n"},"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\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[EIP 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-solc-0.7/math/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * 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 SafeMath {\n    /**\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        uint256 c = a + b;\n        if (c < a) return (false, 0);\n        return (true, c);\n    }\n\n    /**\n     * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        if (b > a) return (false, 0);\n        return (true, a - b);\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\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     * @dev Returns the division of two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        if (b == 0) return (false, 0);\n        return (true, a / b);\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        if (b == 0) return (false, 0);\n        return (true, a % b);\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\n        uint256 c = a + b;\n        require(c >= a, \"SafeMath: addition overflow\");\n        return c;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting on\n     * overflow (when the result is negative).\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n        require(b <= a, \"SafeMath: subtraction overflow\");\n        return a - b;\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n        if (a == 0) return 0;\n        uint256 c = a * b;\n        require(c / a == b, \"SafeMath: multiplication overflow\");\n        return c;\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\n        require(b > 0, \"SafeMath: division by zero\");\n        return a / b;\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting when dividing by zero.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n        require(b > 0, \"SafeMath: modulo by zero\");\n        return a % b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n     * overflow (when the result is negative).\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {trySub}.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        require(b <= a, errorMessage);\n        return a - b;\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n     * division by zero. The result is rounded towards zero.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryDiv}.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        require(b > 0, errorMessage);\n        return a / b;\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting with custom message when dividing by zero.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryMod}.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        require(b > 0, errorMessage);\n        return a % b;\n    }\n}\n"},"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"},"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"../../utils/Context.sol\";\nimport \"./IERC721.sol\";\nimport \"./IERC721Metadata.sol\";\nimport \"./IERC721Enumerable.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"../../introspection/ERC165.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/EnumerableSet.sol\";\nimport \"../../utils/EnumerableMap.sol\";\nimport \"../../utils/Strings.sol\";\n\n/**\n * @title ERC721 Non-Fungible Token Standard basic implementation\n * @dev see https://eips.ethereum.org/EIPS/eip-721\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {\n    using SafeMath for uint256;\n    using Address for address;\n    using EnumerableSet for EnumerableSet.UintSet;\n    using EnumerableMap for EnumerableMap.UintToAddressMap;\n    using Strings for uint256;\n\n    // Equals to `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`\n    // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector`\n    bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;\n\n    // Mapping from holder address to their (enumerable) set of owned tokens\n    mapping (address => EnumerableSet.UintSet) private _holderTokens;\n\n    // Enumerable mapping from token ids to their owners\n    EnumerableMap.UintToAddressMap private _tokenOwners;\n\n    // Mapping from token ID to approved address\n    mapping (uint256 => address) private _tokenApprovals;\n\n    // Mapping from owner to operator approvals\n    mapping (address => mapping (address => bool)) private _operatorApprovals;\n\n    // Token name\n    string private _name;\n\n    // Token symbol\n    string private _symbol;\n\n    // Optional mapping for token URIs\n    mapping (uint256 => string) private _tokenURIs;\n\n    // Base URI\n    string private _baseURI;\n\n    /*\n     *     bytes4(keccak256('balanceOf(address)')) == 0x70a08231\n     *     bytes4(keccak256('ownerOf(uint256)')) == 0x6352211e\n     *     bytes4(keccak256('approve(address,uint256)')) == 0x095ea7b3\n     *     bytes4(keccak256('getApproved(uint256)')) == 0x081812fc\n     *     bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465\n     *     bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5\n     *     bytes4(keccak256('transferFrom(address,address,uint256)')) == 0x23b872dd\n     *     bytes4(keccak256('safeTransferFrom(address,address,uint256)')) == 0x42842e0e\n     *     bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) == 0xb88d4fde\n     *\n     *     => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc ^\n     *        0xa22cb465 ^ 0xe985e9c5 ^ 0x23b872dd ^ 0x42842e0e ^ 0xb88d4fde == 0x80ac58cd\n     */\n    bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;\n\n    /*\n     *     bytes4(keccak256('name()')) == 0x06fdde03\n     *     bytes4(keccak256('symbol()')) == 0x95d89b41\n     *     bytes4(keccak256('tokenURI(uint256)')) == 0xc87b56dd\n     *\n     *     => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f\n     */\n    bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;\n\n    /*\n     *     bytes4(keccak256('totalSupply()')) == 0x18160ddd\n     *     bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) == 0x2f745c59\n     *     bytes4(keccak256('tokenByIndex(uint256)')) == 0x4f6ccce7\n     *\n     *     => 0x18160ddd ^ 0x2f745c59 ^ 0x4f6ccce7 == 0x780e9d63\n     */\n    bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;\n\n    /**\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n     */\n    constructor (string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n\n        // register the supported interfaces to conform to ERC721 via ERC165\n        _registerInterface(_INTERFACE_ID_ERC721);\n        _registerInterface(_INTERFACE_ID_ERC721_METADATA);\n        _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE);\n    }\n\n    /**\n     * @dev See {IERC721-balanceOf}.\n     */\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        require(owner != address(0), \"ERC721: balance query for the zero address\");\n        return _holderTokens[owner].length();\n    }\n\n    /**\n     * @dev See {IERC721-ownerOf}.\n     */\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n        return _tokenOwners.get(tokenId, \"ERC721: owner query for nonexistent token\");\n    }\n\n    /**\n     * @dev See {IERC721Metadata-name}.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-symbol}.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        require(_exists(tokenId), \"ERC721Metadata: URI query for nonexistent token\");\n\n        string memory _tokenURI = _tokenURIs[tokenId];\n        string memory base = baseURI();\n\n        // If there is no base URI, return the token URI.\n        if (bytes(base).length == 0) {\n            return _tokenURI;\n        }\n        // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\n        if (bytes(_tokenURI).length > 0) {\n            return string(abi.encodePacked(base, _tokenURI));\n        }\n        // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI.\n        return string(abi.encodePacked(base, tokenId.toString()));\n    }\n\n    /**\n    * @dev Returns the base URI set via {_setBaseURI}. This will be\n    * automatically added as a prefix in {tokenURI} to each token's URI, or\n    * to the token ID if no specific URI is set for that token ID.\n    */\n    function baseURI() public view virtual returns (string memory) {\n        return _baseURI;\n    }\n\n    /**\n     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n     */\n    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\n        return _holderTokens[owner].at(index);\n    }\n\n    /**\n     * @dev See {IERC721Enumerable-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        // _tokenOwners are indexed by tokenIds, so .length() returns the number of tokenIds\n        return _tokenOwners.length();\n    }\n\n    /**\n     * @dev See {IERC721Enumerable-tokenByIndex}.\n     */\n    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\n        (uint256 tokenId, ) = _tokenOwners.at(index);\n        return tokenId;\n    }\n\n    /**\n     * @dev See {IERC721-approve}.\n     */\n    function approve(address to, uint256 tokenId) public virtual override {\n        address owner = ERC721.ownerOf(tokenId);\n        require(to != owner, \"ERC721: approval to current owner\");\n\n        require(_msgSender() == owner || ERC721.isApprovedForAll(owner, _msgSender()),\n            \"ERC721: approve caller is not owner nor approved for all\"\n        );\n\n        _approve(to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-getApproved}.\n     */\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        require(_exists(tokenId), \"ERC721: approved query for nonexistent token\");\n\n        return _tokenApprovals[tokenId];\n    }\n\n    /**\n     * @dev See {IERC721-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        require(operator != _msgSender(), \"ERC721: approve to caller\");\n\n        _operatorApprovals[_msgSender()][operator] = approved;\n        emit ApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC721-isApprovedForAll}.\n     */\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev See {IERC721-transferFrom}.\n     */\n    function transferFrom(address from, address to, uint256 tokenId) public virtual override {\n        //solhint-disable-next-line max-line-length\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n\n        _transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n        _safeTransfer(from, to, tokenId, _data);\n    }\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * `_data` is additional data, it has no specified format and it is sent in call to `to`.\n     *\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {\n        _transfer(from, to, tokenId);\n        require(_checkOnERC721Received(from, to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Returns whether `tokenId` exists.\n     *\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n     *\n     * Tokens start existing when they are minted (`_mint`),\n     * and stop existing when they are burned (`_burn`).\n     */\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return _tokenOwners.contains(tokenId);\n    }\n\n    /**\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n        require(_exists(tokenId), \"ERC721: operator query for nonexistent token\");\n        address owner = ERC721.ownerOf(tokenId);\n        return (spender == owner || getApproved(tokenId) == spender || ERC721.isApprovedForAll(owner, spender));\n    }\n\n    /**\n     * @dev Safely mints `tokenId` and transfers it to `to`.\n     *\n     * Requirements:\n     d*\n     * - `tokenId` must not exist.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeMint(address to, uint256 tokenId) internal virtual {\n        _safeMint(to, tokenId, \"\");\n    }\n\n    /**\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n     */\n    function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {\n        _mint(to, tokenId);\n        require(_checkOnERC721Received(address(0), to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Mints `tokenId` and transfers it to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - `to` cannot be the zero address.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _mint(address to, uint256 tokenId) internal virtual {\n        require(to != address(0), \"ERC721: mint to the zero address\");\n        require(!_exists(tokenId), \"ERC721: token already minted\");\n\n        _beforeTokenTransfer(address(0), to, tokenId);\n\n        _holderTokens[to].add(tokenId);\n\n        _tokenOwners.set(tokenId, to);\n\n        emit Transfer(address(0), to, tokenId);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId) internal virtual {\n        address owner = ERC721.ownerOf(tokenId); // internal owner\n\n        _beforeTokenTransfer(owner, address(0), tokenId);\n\n        // Clear approvals\n        _approve(address(0), tokenId);\n\n        // Clear metadata (if any)\n        if (bytes(_tokenURIs[tokenId]).length != 0) {\n            delete _tokenURIs[tokenId];\n        }\n\n        _holderTokens[owner].remove(tokenId);\n\n        _tokenOwners.remove(tokenId);\n\n        emit Transfer(owner, address(0), tokenId);\n    }\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _transfer(address from, address to, uint256 tokenId) internal virtual {\n        require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer of token that is not own\"); // internal owner\n        require(to != address(0), \"ERC721: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, tokenId);\n\n        // Clear approvals from the previous owner\n        _approve(address(0), tokenId);\n\n        _holderTokens[from].remove(tokenId);\n        _holderTokens[to].add(tokenId);\n\n        _tokenOwners.set(tokenId, to);\n\n        emit Transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\n        require(_exists(tokenId), \"ERC721Metadata: URI set of nonexistent token\");\n        _tokenURIs[tokenId] = _tokenURI;\n    }\n\n    /**\n     * @dev Internal function to set the base URI for all token IDs. It is\n     * automatically added as a prefix to the value returned in {tokenURI},\n     * or to the token ID if {tokenURI} is empty.\n     */\n    function _setBaseURI(string memory baseURI_) internal virtual {\n        _baseURI = baseURI_;\n    }\n\n    /**\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n     * The call is not executed if the target address is not a contract.\n     *\n     * @param from address representing the previous owner of the given token ID\n     * @param to target address that will receive the tokens\n     * @param tokenId uint256 ID of the token to be transferred\n     * @param _data bytes optional data to send along with the call\n     * @return bool whether the call correctly returned the expected magic value\n     */\n    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)\n        private returns (bool)\n    {\n        if (!to.isContract()) {\n            return true;\n        }\n        bytes memory returndata = to.functionCall(abi.encodeWithSelector(\n            IERC721Receiver(to).onERC721Received.selector,\n            _msgSender(),\n            from,\n            tokenId,\n            _data\n        ), \"ERC721: transfer to non ERC721Receiver implementer\");\n        bytes4 retval = abi.decode(returndata, (bytes4));\n        return (retval == _ERC721_RECEIVED);\n    }\n\n    /**\n     * @dev Approve `to` to operate on `tokenId`\n     *\n     * Emits an {Approval} event.\n     */\n    function _approve(address to, uint256 tokenId) internal virtual {\n        _tokenApprovals[tokenId] = to;\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId); // internal owner\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes minting\n     * and burning.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n     * transferred to `to`.\n     * - When `from` is zero, `tokenId` will be minted for `to`.\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }\n}\n"},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n    /**\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n     */\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n     */\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /**\n     * @dev Returns the number of tokens in ``owner``'s account.\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * @dev Returns the owner of the `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Transfers `tokenId` token from `from` to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n     * The approval is cleared when the token is transferred.\n     *\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n     *\n     * Requirements:\n     *\n     * - The caller must own the token or be an approved operator.\n     * - `tokenId` must exist.\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * @dev Returns the account approved for `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the caller.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function setApprovalForAll(address operator, bool _approved) external;\n\n    /**\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n     *\n     * See {setApprovalForAll}\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n\n    /**\n      * @dev Safely transfers `tokenId` token from `from` to `to`.\n      *\n      * Requirements:\n      *\n      * - `from` cannot be the zero address.\n      * - `to` cannot be the zero address.\n      * - `tokenId` token must exist and be owned by `from`.\n      * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n      * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n      *\n      * Emits a {Transfer} event.\n      */\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n}\n"},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n\n    /**\n     * @dev Returns the total amount of tokens stored by the contract.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n     */\n    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);\n\n    /**\n     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n     * Use along with {totalSupply} to enumerate all tokens.\n     */\n    function tokenByIndex(uint256 index) external view returns (uint256);\n}\n"},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n\n    /**\n     * @dev Returns the token collection name.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the token collection symbol.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n     */\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n    /**\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n     * by `operator` from `from`, this function is called.\n     *\n     * It must return its Solidity selector to confirm the token transfer.\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n     *\n     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\n     */\n    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);\n}\n"},"openzeppelin-contracts-solc-0.7/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize, which returns 0 for contracts in\n        // construction, since the code is only stored at the end of the\n        // constructor execution.\n\n        uint256 size;\n        // solhint-disable-next-line no-inline-assembly\n        assembly { size := extcodesize(account) }\n        return size > 0;\n    }\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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n        (bool success, ) = recipient.call{ value: amount }(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\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, it is bubbled up by this\n     * function (like regular Solidity function calls).\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     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n      return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\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     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\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\n                // solhint-disable-next-line no-inline-assembly\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"},"openzeppelin-contracts-solc-0.7/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with GSN 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 payable) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes memory) {\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n        return msg.data;\n    }\n}\n"},"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Library for managing an enumerable variant of Solidity's\n * https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n * type.\n *\n * Maps have the following properties:\n *\n * - Entries are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Entries are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableMap for EnumerableMap.UintToAddressMap;\n *\n *     // Declare a set state variable\n *     EnumerableMap.UintToAddressMap private myMap;\n * }\n * ```\n *\n * As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n * supported.\n */\nlibrary EnumerableMap {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Map type with\n    // bytes32 keys and values.\n    // The Map implementation uses private functions, and user-facing\n    // implementations (such as Uint256ToAddressMap) are just wrappers around\n    // the underlying Map.\n    // This means that we can only create new EnumerableMaps for types that fit\n    // in bytes32.\n\n    struct MapEntry {\n        bytes32 _key;\n        bytes32 _value;\n    }\n\n    struct Map {\n        // Storage of map keys and values\n        MapEntry[] _entries;\n\n        // Position of the entry defined by a key in the `entries` array, plus 1\n        // because index 0 means a key is not in the map.\n        mapping (bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Adds a key-value pair to a map, or updates the value for an existing\n     * key. O(1).\n     *\n     * Returns true if the key was added to the map, that is if it was not\n     * already present.\n     */\n    function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) {\n        // We read and store the key's index to prevent multiple reads from the same storage slot\n        uint256 keyIndex = map._indexes[key];\n\n        if (keyIndex == 0) { // Equivalent to !contains(map, key)\n            map._entries.push(MapEntry({ _key: key, _value: value }));\n            // The entry is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            map._indexes[key] = map._entries.length;\n            return true;\n        } else {\n            map._entries[keyIndex - 1]._value = value;\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a key-value pair from a map. O(1).\n     *\n     * Returns true if the key was removed from the map, that is if it was present.\n     */\n    function _remove(Map storage map, bytes32 key) private returns (bool) {\n        // We read and store the key's index to prevent multiple reads from the same storage slot\n        uint256 keyIndex = map._indexes[key];\n\n        if (keyIndex != 0) { // Equivalent to contains(map, key)\n            // To delete a key-value pair from the _entries array in O(1), we swap the entry to delete with the last one\n            // in the array, and then remove the last entry (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = keyIndex - 1;\n            uint256 lastIndex = map._entries.length - 1;\n\n            // When the entry to delete is the last one, the swap operation is unnecessary. However, since this occurs\n            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n            MapEntry storage lastEntry = map._entries[lastIndex];\n\n            // Move the last entry to the index where the entry to delete is\n            map._entries[toDeleteIndex] = lastEntry;\n            // Update the index for the moved entry\n            map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based\n\n            // Delete the slot where the moved entry was stored\n            map._entries.pop();\n\n            // Delete the index for the deleted slot\n            delete map._indexes[key];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the key is in the map. O(1).\n     */\n    function _contains(Map storage map, bytes32 key) private view returns (bool) {\n        return map._indexes[key] != 0;\n    }\n\n    /**\n     * @dev Returns the number of key-value pairs in the map. O(1).\n     */\n    function _length(Map storage map) private view returns (uint256) {\n        return map._entries.length;\n    }\n\n   /**\n    * @dev Returns the key-value pair stored at position `index` in the map. O(1).\n    *\n    * Note that there are no guarantees on the ordering of entries inside the\n    * array, and it may change when more entries are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) {\n        require(map._entries.length > index, \"EnumerableMap: index out of bounds\");\n\n        MapEntry storage entry = map._entries[index];\n        return (entry._key, entry._value);\n    }\n\n    /**\n     * @dev Tries to returns the value associated with `key`.  O(1).\n     * Does not revert if `key` is not in the map.\n     */\n    function _tryGet(Map storage map, bytes32 key) private view returns (bool, bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        if (keyIndex == 0) return (false, 0); // Equivalent to contains(map, key)\n        return (true, map._entries[keyIndex - 1]._value); // All indexes are 1-based\n    }\n\n    /**\n     * @dev Returns the value associated with `key`.  O(1).\n     *\n     * Requirements:\n     *\n     * - `key` must be in the map.\n     */\n    function _get(Map storage map, bytes32 key) private view returns (bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        require(keyIndex != 0, \"EnumerableMap: nonexistent key\"); // Equivalent to contains(map, key)\n        return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n    }\n\n    /**\n     * @dev Same as {_get}, with a custom error message when `key` is not in the map.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {_tryGet}.\n     */\n    function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key)\n        return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n    }\n\n    // UintToAddressMap\n\n    struct UintToAddressMap {\n        Map _inner;\n    }\n\n    /**\n     * @dev Adds a key-value pair to a map, or updates the value for an existing\n     * key. O(1).\n     *\n     * Returns true if the key was added to the map, that is if it was not\n     * already present.\n     */\n    function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) {\n        return _set(map._inner, bytes32(key), bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the key was removed from the map, that is if it was present.\n     */\n    function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) {\n        return _remove(map._inner, bytes32(key));\n    }\n\n    /**\n     * @dev Returns true if the key is in the map. O(1).\n     */\n    function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) {\n        return _contains(map._inner, bytes32(key));\n    }\n\n    /**\n     * @dev Returns the number of elements in the map. O(1).\n     */\n    function length(UintToAddressMap storage map) internal view returns (uint256) {\n        return _length(map._inner);\n    }\n\n   /**\n    * @dev Returns the element stored at position `index` in the set. O(1).\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) {\n        (bytes32 key, bytes32 value) = _at(map._inner, index);\n        return (uint256(key), address(uint160(uint256(value))));\n    }\n\n    /**\n     * @dev Tries to returns the value associated with `key`.  O(1).\n     * Does not revert if `key` is not in the map.\n     *\n     * _Available since v3.4._\n     */\n    function tryGet(UintToAddressMap storage map, uint256 key) internal view returns (bool, address) {\n        (bool success, bytes32 value) = _tryGet(map._inner, bytes32(key));\n        return (success, address(uint160(uint256(value))));\n    }\n\n    /**\n     * @dev Returns the value associated with `key`.  O(1).\n     *\n     * Requirements:\n     *\n     * - `key` must be in the map.\n     */\n    function get(UintToAddressMap storage map, uint256 key) internal view returns (address) {\n        return address(uint160(uint256(_get(map._inner, bytes32(key)))));\n    }\n\n    /**\n     * @dev Same as {get}, with a custom error message when `key` is not in the map.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryGet}.\n     */\n    function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) {\n        return address(uint160(uint256(_get(map._inner, bytes32(key), errorMessage))));\n    }\n}\n"},"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableSet for EnumerableSet.AddressSet;\n *\n *     // Declare a set state variable\n *     EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Set type with\n    // bytes32 values.\n    // The Set implementation uses private functions, and user-facing\n    // implementations (such as AddressSet) are just wrappers around the\n    // underlying Set.\n    // This means that we can only create new EnumerableSets for types that fit\n    // in bytes32.\n\n    struct Set {\n        // Storage of set values\n        bytes32[] _values;\n\n        // Position of the value in the `values` array, plus 1 because index 0\n        // means a value is not in the set.\n        mapping (bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function _add(Set storage set, bytes32 value) private returns (bool) {\n        if (!_contains(set, value)) {\n            set._values.push(value);\n            // The value is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            set._indexes[value] = set._values.length;\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function _remove(Set storage set, bytes32 value) private returns (bool) {\n        // We read and store the value's index to prevent multiple reads from the same storage slot\n        uint256 valueIndex = set._indexes[value];\n\n        if (valueIndex != 0) { // Equivalent to contains(set, value)\n            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n            // the array, and then remove the last element (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = valueIndex - 1;\n            uint256 lastIndex = set._values.length - 1;\n\n            // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs\n            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n            bytes32 lastvalue = set._values[lastIndex];\n\n            // Move the last value to the index where the value to delete is\n            set._values[toDeleteIndex] = lastvalue;\n            // Update the index for the moved value\n            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based\n\n            // Delete the slot where the moved value was stored\n            set._values.pop();\n\n            // Delete the index for the deleted slot\n            delete set._indexes[value];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function _contains(Set storage set, bytes32 value) private view returns (bool) {\n        return set._indexes[value] != 0;\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function _length(Set storage set) private view returns (uint256) {\n        return set._values.length;\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function _at(Set storage set, uint256 index) private view returns (bytes32) {\n        require(set._values.length > index, \"EnumerableSet: index out of bounds\");\n        return set._values[index];\n    }\n\n    // Bytes32Set\n\n    struct Bytes32Set {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _add(set._inner, value);\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _remove(set._inner, value);\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n        return _contains(set._inner, value);\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(Bytes32Set storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n        return _at(set._inner, index);\n    }\n\n    // AddressSet\n\n    struct AddressSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(AddressSet storage set, address value) internal returns (bool) {\n        return _add(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(AddressSet storage set, address value) internal returns (bool) {\n        return _remove(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(AddressSet storage set, address value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(AddressSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(AddressSet storage set, uint256 index) internal view returns (address) {\n        return address(uint160(uint256(_at(set._inner, index))));\n    }\n\n\n    // UintSet\n\n    struct UintSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(UintSet storage set, uint256 value) internal returns (bool) {\n        return _add(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(UintSet storage set, uint256 value) internal returns (bool) {\n        return _remove(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function length(UintSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n        return uint256(_at(set._inner, index));\n    }\n}\n"},"openzeppelin-contracts-solc-0.7/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        // Inspired by OraclizeAPI's implementation - MIT licence\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        uint256 index = digits - 1;\n        temp = value;\n        while (temp != 0) {\n            buffer[index--] = bytes1(uint8(48 + temp % 10));\n            temp /= 10;\n        }\n        return string(buffer);\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":20},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"contracts/elixir-core/interfaces/IElixirFactory.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/IElixirFactory.sol","exportedSymbols":{"IElixirFactory":[88]},"id":89,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"74:153:0","text":"@title The interface for the Elixir Factory\n @notice The Elixir Factory facilitates creation of Elixir pools and control over the protocol fees"},"fullyImplemented":false,"id":88,"linearizedBaseContracts":[88],"name":"IElixirFactory","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"259:187:0","text":"@notice Emitted when the owner of the factory is changed\n @param oldOwner The owner before the owner was changed\n @param newOwner The owner after the owner was changed"},"id":9,"name":"OwnerChanged","nodeType":"EventDefinition","parameters":{"id":8,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"indexed":true,"mutability":"mutable","name":"oldOwner","nodeType":"VariableDeclaration","scope":9,"src":"471:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"471:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"indexed":true,"mutability":"mutable","name":"newOwner","nodeType":"VariableDeclaration","scope":9,"src":"497:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"497:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"470:52:0"},"src":"452:71:0"},{"anonymous":false,"documentation":{"id":10,"nodeType":"StructuredDocumentation","src":"531:426:0","text":"@notice Emitted when a pool is created\n @param token0 The first token of the pool by address sort order\n @param token1 The second token of the pool by address sort order\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @param tickSpacing The minimum number of ticks between initialized ticks\n @param pool The address of the created pool"},"id":22,"name":"PoolCreated","nodeType":"EventDefinition","parameters":{"id":21,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"indexed":true,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":22,"src":"991:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"991:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14,"indexed":true,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":22,"src":"1024:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"1024:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16,"indexed":true,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":22,"src":"1057:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":15,"name":"uint24","nodeType":"ElementaryTypeName","src":"1057:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":18,"indexed":false,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":22,"src":"1086:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":17,"name":"int24","nodeType":"ElementaryTypeName","src":"1086:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":20,"indexed":false,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":22,"src":"1114:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"980:153:0"},"src":"963:171:0"},{"anonymous":false,"documentation":{"id":23,"nodeType":"StructuredDocumentation","src":"1142:277:0","text":"@notice Emitted when a new fee amount is enabled for pool creation via the factory\n @param fee The enabled fee, denominated in hundredths of a bip\n @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee"},"id":29,"name":"FeeAmountEnabled","nodeType":"EventDefinition","parameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25,"indexed":true,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":29,"src":"1448:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":24,"name":"uint24","nodeType":"ElementaryTypeName","src":"1448:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":27,"indexed":true,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":29,"src":"1468:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":26,"name":"int24","nodeType":"ElementaryTypeName","src":"1468:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1447:47:0"},"src":"1425:70:0"},{"documentation":{"id":30,"nodeType":"StructuredDocumentation","src":"1503:115:0","text":"@notice Returns the implementation contract of the pool\n @return The address of the pool implementation"},"functionSelector":"5c60da1b","id":35,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nodeType":"FunctionDefinition","parameters":{"id":31,"nodeType":"ParameterList","parameters":[],"src":"1647:2:0"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":35,"src":"1673:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1672:9:0"},"scope":88,"src":"1624:58:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1690:165:0","text":"@notice Returns the current owner of the factory\n @dev Can be changed by the current owner via setOwner\n @return The address of the factory owner"},"functionSelector":"8da5cb5b","id":41,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nodeType":"FunctionDefinition","parameters":{"id":37,"nodeType":"ParameterList","parameters":[],"src":"1875:2:0"},"returnParameters":{"id":40,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":41,"src":"1901:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38,"name":"address","nodeType":"ElementaryTypeName","src":"1901:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1900:9:0"},"scope":88,"src":"1861:49:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"1918:351:0","text":"@notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\n @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\n @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\n @return The tick spacing"},"functionSelector":"22afcccb","id":49,"implemented":false,"kind":"function","modifiers":[],"name":"feeAmountTickSpacing","nodeType":"FunctionDefinition","parameters":{"id":45,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":49,"src":"2305:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":43,"name":"uint24","nodeType":"ElementaryTypeName","src":"2305:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2304:12:0"},"returnParameters":{"id":48,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":49,"src":"2340:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":46,"name":"int24","nodeType":"ElementaryTypeName","src":"2340:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2339:7:0"},"scope":88,"src":"2275:72:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":50,"nodeType":"StructuredDocumentation","src":"2355:476:0","text":"@notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\n @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\n @param tokenA The contract address of either token0 or token1\n @param tokenB The contract address of the other token\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @return pool The pool address"},"functionSelector":"1698ee82","id":61,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":57,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":61,"src":"2864:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51,"name":"address","nodeType":"ElementaryTypeName","src":"2864:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":61,"src":"2889:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"2889:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":61,"src":"2914:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":55,"name":"uint24","nodeType":"ElementaryTypeName","src":"2914:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2853:78:0"},"returnParameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":61,"src":"2955:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"2955:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2954:14:0"},"scope":88,"src":"2837:132:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"2977:561:0","text":"@notice Creates a pool for the given two tokens and fee\n @param tokenA One of the two tokens in the desired pool\n @param tokenB The other of the two tokens in the desired pool\n @param fee The desired fee for the pool\n @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\n from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\n are invalid.\n @return pool The address of the newly created pool"},"functionSelector":"a1671295","id":73,"implemented":false,"kind":"function","modifiers":[],"name":"createPool","nodeType":"FunctionDefinition","parameters":{"id":69,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":73,"src":"3574:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3574:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":66,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":73,"src":"3599:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":65,"name":"address","nodeType":"ElementaryTypeName","src":"3599:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":73,"src":"3624:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":67,"name":"uint24","nodeType":"ElementaryTypeName","src":"3624:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3563:78:0"},"returnParameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":73,"src":"3660:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"3660:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3659:14:0"},"scope":88,"src":"3544:130:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":74,"nodeType":"StructuredDocumentation","src":"3682:146:0","text":"@notice Updates the owner of the factory\n @dev Must be called by the current owner\n @param _owner The new owner of the factory"},"functionSelector":"13af4035","id":79,"implemented":false,"kind":"function","modifiers":[],"name":"setOwner","nodeType":"FunctionDefinition","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"_owner","nodeType":"VariableDeclaration","scope":79,"src":"3852:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75,"name":"address","nodeType":"ElementaryTypeName","src":"3852:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3851:16:0"},"returnParameters":{"id":78,"nodeType":"ParameterList","parameters":[],"src":"3876:0:0"},"scope":88,"src":"3834:43:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":80,"nodeType":"StructuredDocumentation","src":"3885:329:0","text":"@notice Enables a fee amount with the given tickSpacing\n @dev Fee amounts may never be removed once enabled\n @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\n @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount"},"functionSelector":"8a7c195f","id":87,"implemented":false,"kind":"function","modifiers":[],"name":"enableFeeAmount","nodeType":"FunctionDefinition","parameters":{"id":85,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":87,"src":"4245:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":81,"name":"uint24","nodeType":"ElementaryTypeName","src":"4245:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":84,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":87,"src":"4257:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":83,"name":"int24","nodeType":"ElementaryTypeName","src":"4257:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4244:31:0"},"returnParameters":{"id":86,"nodeType":"ParameterList","parameters":[],"src":"4284:0:0"},"scope":88,"src":"4220:65:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":89,"src":"227:4061:0"}],"src":"46:4244:0"},"id":0},"contracts/elixir-core/interfaces/IElixirPool.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","exportedSymbols":{"IElixirPool":[110],"IElixirPoolActions":[220],"IElixirPoolDerivedState":[256],"IElixirPoolEvents":[382],"IElixirPoolImmutables":[422],"IElixirPoolOwnerActions":[468],"IElixirPoolState":[588]},"id":111,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":90,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:1"},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol","file":"./pool/IElixirPoolImmutables.sol","id":91,"nodeType":"ImportDirective","scope":111,"sourceUnit":423,"src":"74:42:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol","file":"./pool/IElixirPoolState.sol","id":92,"nodeType":"ImportDirective","scope":111,"sourceUnit":589,"src":"118:37:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol","file":"./pool/IElixirPoolDerivedState.sol","id":93,"nodeType":"ImportDirective","scope":111,"sourceUnit":257,"src":"157:44:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol","file":"./pool/IElixirPoolActions.sol","id":94,"nodeType":"ImportDirective","scope":111,"sourceUnit":221,"src":"203:39:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol","file":"./pool/IElixirPoolOwnerActions.sol","id":95,"nodeType":"ImportDirective","scope":111,"sourceUnit":469,"src":"244:44:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol","file":"./pool/IElixirPoolEvents.sol","id":96,"nodeType":"ImportDirective","scope":111,"sourceUnit":383,"src":"290:38:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":98,"name":"IElixirPoolImmutables","nodeType":"UserDefinedTypeName","referencedDeclaration":422,"src":"628:21:1","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolImmutables_$422","typeString":"contract IElixirPoolImmutables"}},"id":99,"nodeType":"InheritanceSpecifier","src":"628:21:1"},{"baseName":{"id":100,"name":"IElixirPoolState","nodeType":"UserDefinedTypeName","referencedDeclaration":588,"src":"656:16:1","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolState_$588","typeString":"contract IElixirPoolState"}},"id":101,"nodeType":"InheritanceSpecifier","src":"656:16:1"},{"baseName":{"id":102,"name":"IElixirPoolDerivedState","nodeType":"UserDefinedTypeName","referencedDeclaration":256,"src":"679:23:1","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolDerivedState_$256","typeString":"contract IElixirPoolDerivedState"}},"id":103,"nodeType":"InheritanceSpecifier","src":"679:23:1"},{"baseName":{"id":104,"name":"IElixirPoolActions","nodeType":"UserDefinedTypeName","referencedDeclaration":220,"src":"709:18:1","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolActions_$220","typeString":"contract IElixirPoolActions"}},"id":105,"nodeType":"InheritanceSpecifier","src":"709:18:1"},{"baseName":{"id":106,"name":"IElixirPoolOwnerActions","nodeType":"UserDefinedTypeName","referencedDeclaration":468,"src":"734:23:1","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolOwnerActions_$468","typeString":"contract IElixirPoolOwnerActions"}},"id":107,"nodeType":"InheritanceSpecifier","src":"734:23:1"},{"baseName":{"id":108,"name":"IElixirPoolEvents","nodeType":"UserDefinedTypeName","referencedDeclaration":382,"src":"764:17:1","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolEvents_$382","typeString":"contract IElixirPoolEvents"}},"id":109,"nodeType":"InheritanceSpecifier","src":"764:17:1"}],"contractDependencies":[220,256,382,422,468,588],"contractKind":"interface","documentation":{"id":97,"nodeType":"StructuredDocumentation","src":"332:266:1","text":"@title The interface for a Elixir Pool\n @notice A Pangolin pool facilitates swapping and automated market making between any two assets that strictly conform\n to the ERC20 specification\n @dev The pool interface is broken up into many smaller pieces"},"fullyImplemented":false,"id":110,"linearizedBaseContracts":[110,382,468,220,256,588,422],"name":"IElixirPool","nodeType":"ContractDefinition","nodes":[],"scope":111,"src":"598:191:1"}],"src":"46:745:1"},"id":1},"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol","exportedSymbols":{"IElixirMintCallback":[124]},"id":125,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":112,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:2"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":113,"nodeType":"StructuredDocumentation","src":"74:140:2","text":"@title Callback for IElixirPoolActions#mint\n @notice Any contract that calls IElixirPoolActions#mint must implement this interface"},"fullyImplemented":false,"id":124,"linearizedBaseContracts":[124],"name":"IElixirMintCallback","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":114,"nodeType":"StructuredDocumentation","src":"251:578:2","text":"@notice Called to `msg.sender` after minting liquidity to a position from IElixirPool#mint.\n @dev In the implementation you must pay the pool tokens owed for the minted liquidity.\n The caller of this method must be checked to be a ElixirPool deployed by the canonical ElixirFactory.\n @param amount0Owed The amount of token0 due to the pool for the minted liquidity\n @param amount1Owed The amount of token1 due to the pool for the minted liquidity\n @param data Any data passed through by the caller via the IElixirPoolActions#mint call"},"functionSelector":"1507a8f4","id":123,"implemented":false,"kind":"function","modifiers":[],"name":"elixirMintCallback","nodeType":"FunctionDefinition","parameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116,"mutability":"mutable","name":"amount0Owed","nodeType":"VariableDeclaration","scope":123,"src":"873:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":115,"name":"uint256","nodeType":"ElementaryTypeName","src":"873:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":118,"mutability":"mutable","name":"amount1Owed","nodeType":"VariableDeclaration","scope":123,"src":"903:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":117,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":123,"src":"933:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":119,"name":"bytes","nodeType":"ElementaryTypeName","src":"933:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"862:97:2"},"returnParameters":{"id":122,"nodeType":"ParameterList","parameters":[],"src":"968:0:2"},"scope":124,"src":"835:134:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":125,"src":"214:758:2"}],"src":"46:928:2"},"id":2},"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol","exportedSymbols":{"IElixirPoolActions":[220]},"id":221,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":126,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:3"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":127,"nodeType":"StructuredDocumentation","src":"74:104:3","text":"@title Permissionless pool actions\n @notice Contains pool methods that can be called by anyone"},"fullyImplemented":false,"id":220,"linearizedBaseContracts":[220],"name":"IElixirPoolActions","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":128,"nodeType":"StructuredDocumentation","src":"214:208:3","text":"@notice Sets the initial price for the pool\n @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\n @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96"},"functionSelector":"f637731d","id":133,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":130,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":133,"src":"448:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":129,"name":"uint160","nodeType":"ElementaryTypeName","src":"448:7:3","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"447:22:3"},"returnParameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"478:0:3"},"scope":220,"src":"428:51:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":134,"nodeType":"StructuredDocumentation","src":"487:1033:3","text":"@notice Adds liquidity for the given recipient/tickLower/tickUpper position\n @dev The caller of this method receives a callback in the form of IElixirMintCallback#elixirMintCallback\n in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\n on tickLower, tickUpper, the amount of liquidity, and the current price.\n @param recipient The address for which the liquidity will be created\n @param tickLower The lower tick of the position in which to add liquidity\n @param tickUpper The upper tick of the position in which to add liquidity\n @param amount The amount of liquidity to mint\n @param data Any data that should be passed through to the callback\n @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\n @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback"},"functionSelector":"3c8a7d8d","id":151,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":136,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":151,"src":"1550:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135,"name":"address","nodeType":"ElementaryTypeName","src":"1550:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":138,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":151,"src":"1578:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":137,"name":"int24","nodeType":"ElementaryTypeName","src":"1578:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":140,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":151,"src":"1604:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":139,"name":"int24","nodeType":"ElementaryTypeName","src":"1604:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":142,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":151,"src":"1630:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":141,"name":"uint128","nodeType":"ElementaryTypeName","src":"1630:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":144,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":151,"src":"1655:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":143,"name":"bytes","nodeType":"ElementaryTypeName","src":"1655:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1539:142:3"},"returnParameters":{"id":150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":147,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":151,"src":"1700:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":146,"name":"uint256","nodeType":"ElementaryTypeName","src":"1700:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":149,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":151,"src":"1717:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":148,"name":"uint256","nodeType":"ElementaryTypeName","src":"1717:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1699:34:3"},"scope":220,"src":"1526:208:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":152,"nodeType":"StructuredDocumentation","src":"1742:1064:3","text":"@notice Collects tokens owed to a position\n @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\n Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\n amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\n actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\n @param recipient The address which should receive the fees collected\n @param tickLower The lower tick of the position for which to collect fees\n @param tickUpper The upper tick of the position for which to collect fees\n @param amount0Requested How much token0 should be withdrawn from the fees owed\n @param amount1Requested How much token1 should be withdrawn from the fees owed\n @return amount0 The amount of fees collected in token0\n @return amount1 The amount of fees collected in token1"},"functionSelector":"4f1eb3d8","id":169,"implemented":false,"kind":"function","modifiers":[],"name":"collect","nodeType":"FunctionDefinition","parameters":{"id":163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":154,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":169,"src":"2839:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":153,"name":"address","nodeType":"ElementaryTypeName","src":"2839:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":156,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":169,"src":"2867:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":155,"name":"int24","nodeType":"ElementaryTypeName","src":"2867:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":158,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":169,"src":"2893:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":157,"name":"int24","nodeType":"ElementaryTypeName","src":"2893:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":160,"mutability":"mutable","name":"amount0Requested","nodeType":"VariableDeclaration","scope":169,"src":"2919:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":159,"name":"uint128","nodeType":"ElementaryTypeName","src":"2919:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":162,"mutability":"mutable","name":"amount1Requested","nodeType":"VariableDeclaration","scope":169,"src":"2954:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":161,"name":"uint128","nodeType":"ElementaryTypeName","src":"2954:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2828:157:3"},"returnParameters":{"id":168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":165,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":169,"src":"3004:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":164,"name":"uint128","nodeType":"ElementaryTypeName","src":"3004:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":167,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":169,"src":"3021:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":166,"name":"uint128","nodeType":"ElementaryTypeName","src":"3021:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3003:34:3"},"scope":220,"src":"2812:226:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":170,"nodeType":"StructuredDocumentation","src":"3046:638:3","text":"@notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\n @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\n @dev Fees must be collected separately via a call to #collect\n @param tickLower The lower tick of the position for which to burn liquidity\n @param tickUpper The upper tick of the position for which to burn liquidity\n @param amount How much liquidity to burn\n @return amount0 The amount of token0 sent to the recipient\n @return amount1 The amount of token1 sent to the recipient"},"functionSelector":"a34123a7","id":183,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":172,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":183,"src":"3714:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":171,"name":"int24","nodeType":"ElementaryTypeName","src":"3714:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":174,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":183,"src":"3740:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":173,"name":"int24","nodeType":"ElementaryTypeName","src":"3740:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":183,"src":"3766:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":175,"name":"uint128","nodeType":"ElementaryTypeName","src":"3766:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3703:84:3"},"returnParameters":{"id":182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":179,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":183,"src":"3806:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"3806:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":181,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":183,"src":"3823:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":180,"name":"uint256","nodeType":"ElementaryTypeName","src":"3823:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3805:34:3"},"scope":220,"src":"3690:150:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":184,"nodeType":"StructuredDocumentation","src":"3848:1018:3","text":"@notice Swap token0 for token1, or token1 for token0\n @dev The caller of this method receives a callback in the form of IElixirSwapCallback#elixirSwapCallback\n @param recipient The address to receive the output of the swap\n @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\n @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\n value after the swap. If one for zero, the price cannot be greater than this value after the swap\n @param data Any data to be passed through to the callback\n @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\n @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive"},"functionSelector":"128acb08","id":201,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":186,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":201,"src":"4896:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"4896:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":201,"src":"4924:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":187,"name":"bool","nodeType":"ElementaryTypeName","src":"4924:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"amountSpecified","nodeType":"VariableDeclaration","scope":201,"src":"4950:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":189,"name":"int256","nodeType":"ElementaryTypeName","src":"4950:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":192,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":201,"src":"4983:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":191,"name":"uint160","nodeType":"ElementaryTypeName","src":"4983:7:3","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":194,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":201,"src":"5019:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":193,"name":"bytes","nodeType":"ElementaryTypeName","src":"5019:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4885:160:3"},"returnParameters":{"id":200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":197,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":201,"src":"5064:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":196,"name":"int256","nodeType":"ElementaryTypeName","src":"5064:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":199,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":201,"src":"5080:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":198,"name":"int256","nodeType":"ElementaryTypeName","src":"5080:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5063:32:3"},"scope":220,"src":"4872:224:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":202,"nodeType":"StructuredDocumentation","src":"5104:658:3","text":"@notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\n @dev The caller of this method receives a callback in the form of IElixirFlashCallback#elixirFlashCallback\n @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\n with 0 amount{0,1} and sending the donation amount(s) from the callback\n @param recipient The address which will receive the token0 and token1 amounts\n @param amount0 The amount of token0 to send\n @param amount1 The amount of token1 to send\n @param data Any data to be passed through to the callback"},"functionSelector":"490e6cbc","id":213,"implemented":false,"kind":"function","modifiers":[],"name":"flash","nodeType":"FunctionDefinition","parameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":213,"src":"5793:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"5793:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":206,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":213,"src":"5821:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":205,"name":"uint256","nodeType":"ElementaryTypeName","src":"5821:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":208,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":213,"src":"5847:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":207,"name":"uint256","nodeType":"ElementaryTypeName","src":"5847:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":210,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":213,"src":"5873:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":209,"name":"bytes","nodeType":"ElementaryTypeName","src":"5873:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5782:117:3"},"returnParameters":{"id":212,"nodeType":"ParameterList","parameters":[],"src":"5908:0:3"},"scope":220,"src":"5768:141:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":214,"nodeType":"StructuredDocumentation","src":"5917:370:3","text":"@notice Increase the maximum number of price and liquidity observations that this pool will store\n @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\n the input observationCardinalityNext.\n @param observationCardinalityNext The desired minimum number of observations for the pool to store"},"functionSelector":"32148f67","id":219,"implemented":false,"kind":"function","modifiers":[],"name":"increaseObservationCardinalityNext","nodeType":"FunctionDefinition","parameters":{"id":217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":216,"mutability":"mutable","name":"observationCardinalityNext","nodeType":"VariableDeclaration","scope":219,"src":"6337:33:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":215,"name":"uint16","nodeType":"ElementaryTypeName","src":"6337:6:3","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6336:35:3"},"returnParameters":{"id":218,"nodeType":"ParameterList","parameters":[],"src":"6380:0:3"},"scope":220,"src":"6293:88:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":221,"src":"178:6206:3"}],"src":"46:6340:3"},"id":3},"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol","exportedSymbols":{"IElixirPoolDerivedState":[256]},"id":257,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":222,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:4"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":223,"nodeType":"StructuredDocumentation","src":"74:225:4","text":"@title Pool state that is not stored\n @notice Contains view functions to provide information about the pool that is computed rather than stored on the\n blockchain. The functions here may have variable gas costs."},"fullyImplemented":false,"id":256,"linearizedBaseContracts":[256],"name":"IElixirPoolDerivedState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":224,"nodeType":"StructuredDocumentation","src":"340:1054:4","text":"@notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\n @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\n the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\n you must call it with secondsAgos = [3600, 0].\n @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\n log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\n @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\n @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\n @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\n timestamp"},"functionSelector":"883bdbfd","id":239,"implemented":false,"kind":"function","modifiers":[],"name":"observe","nodeType":"FunctionDefinition","parameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":239,"src":"1417:29:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":225,"name":"uint32","nodeType":"ElementaryTypeName","src":"1417:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":226,"nodeType":"ArrayTypeName","src":"1417:8:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"1416:31:4"},"returnParameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":231,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":239,"src":"1512:30:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":229,"name":"int56","nodeType":"ElementaryTypeName","src":"1512:5:4","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":230,"nodeType":"ArrayTypeName","src":"1512:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":234,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":239,"src":"1557:51:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":232,"name":"uint160","nodeType":"ElementaryTypeName","src":"1557:7:4","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":233,"nodeType":"ArrayTypeName","src":"1557:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":237,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64s","nodeType":"VariableDeclaration","scope":239,"src":"1623:49:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[]"},"typeName":{"baseType":{"id":235,"name":"uint192","nodeType":"ElementaryTypeName","src":"1623:7:4","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":236,"nodeType":"ArrayTypeName","src":"1623:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_storage_ptr","typeString":"uint192[]"}},"visibility":"internal"}],"src":"1497:186:4"},"scope":256,"src":"1400:284:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":240,"nodeType":"StructuredDocumentation","src":"1692:779:4","text":"@notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\n @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\n I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\n snapshot is taken and the second snapshot is taken.\n @param tickLower The lower tick of the range\n @param tickUpper The upper tick of the range\n @return tickCumulativeInside The snapshot of the tick accumulator for the range\n @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\n @return secondsInside The snapshot of seconds per liquidity for the range"},"functionSelector":"a38807f2","id":255,"implemented":false,"kind":"function","modifiers":[],"name":"snapshotCumulativesInside","nodeType":"FunctionDefinition","parameters":{"id":245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":242,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":255,"src":"2512:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":241,"name":"int24","nodeType":"ElementaryTypeName","src":"2512:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":244,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":255,"src":"2529:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":243,"name":"int24","nodeType":"ElementaryTypeName","src":"2529:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2511:34:4"},"returnParameters":{"id":254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":247,"mutability":"mutable","name":"tickCumulativeInside","nodeType":"VariableDeclaration","scope":255,"src":"2610:26:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":246,"name":"int56","nodeType":"ElementaryTypeName","src":"2610:5:4","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":249,"mutability":"mutable","name":"secondsPerLiquidityInsideX128","nodeType":"VariableDeclaration","scope":255,"src":"2651:37:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":248,"name":"uint160","nodeType":"ElementaryTypeName","src":"2651:7:4","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":251,"mutability":"mutable","name":"secondsInside","nodeType":"VariableDeclaration","scope":255,"src":"2703:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":250,"name":"uint32","nodeType":"ElementaryTypeName","src":"2703:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":253,"mutability":"mutable","name":"rewardPerLiquidityInsideX64","nodeType":"VariableDeclaration","scope":255,"src":"2738:35:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":252,"name":"uint192","nodeType":"ElementaryTypeName","src":"2738:7:4","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"2595:189:4"},"scope":256,"src":"2477:308:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":257,"src":"299:2489:4"}],"src":"46:2744:4"},"id":4},"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol","exportedSymbols":{"IElixirPoolEvents":[382]},"id":383,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":258,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:5"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"74:90:5","text":"@title Events emitted by a pool\n @notice Contains all events emitted by the pool"},"fullyImplemented":true,"id":382,"linearizedBaseContracts":[382],"name":"IElixirPoolEvents","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":260,"nodeType":"StructuredDocumentation","src":"199:347:5","text":"@notice Emitted exactly once by a pool when #initialize is first called on the pool\n @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\n @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\n @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool"},"id":266,"name":"Initialize","nodeType":"EventDefinition","parameters":{"id":265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":262,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":266,"src":"569:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":261,"name":"uint160","nodeType":"ElementaryTypeName","src":"569:7:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":264,"indexed":false,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":266,"src":"591:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":263,"name":"int24","nodeType":"ElementaryTypeName","src":"591:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"568:34:5"},"src":"552:51:5"},{"anonymous":false,"documentation":{"id":267,"nodeType":"StructuredDocumentation","src":"611:558:5","text":"@notice Emitted when liquidity is minted for a given position\n @param sender The address that minted the liquidity\n @param owner The owner of the position and recipient of any minted liquidity\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount The amount of liquidity minted to the position range\n @param amount0 How much token0 was required for the minted liquidity\n @param amount1 How much token1 was required for the minted liquidity"},"id":283,"name":"Mint","nodeType":"EventDefinition","parameters":{"id":282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":269,"indexed":false,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":283,"src":"1196:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":268,"name":"address","nodeType":"ElementaryTypeName","src":"1196:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":271,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":283,"src":"1221:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":270,"name":"address","nodeType":"ElementaryTypeName","src":"1221:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":273,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":283,"src":"1253:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":272,"name":"int24","nodeType":"ElementaryTypeName","src":"1253:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":275,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":283,"src":"1287:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":274,"name":"int24","nodeType":"ElementaryTypeName","src":"1287:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":277,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":283,"src":"1321:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":276,"name":"uint128","nodeType":"ElementaryTypeName","src":"1321:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":279,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":283,"src":"1346:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":278,"name":"uint256","nodeType":"ElementaryTypeName","src":"1346:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":281,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":283,"src":"1372:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":280,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1185:209:5"},"src":"1175:220:5"},{"anonymous":false,"documentation":{"id":284,"nodeType":"StructuredDocumentation","src":"1403:499:5","text":"@notice Emitted when fees are collected by the owner of a position\n @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\n @param owner The owner of the position for which fees are collected\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount0 The amount of token0 fees collected\n @param amount1 The amount of token1 fees collected"},"id":298,"name":"Collect","nodeType":"EventDefinition","parameters":{"id":297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":286,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":298,"src":"1932:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":285,"name":"address","nodeType":"ElementaryTypeName","src":"1932:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":288,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":298,"src":"1964:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":287,"name":"address","nodeType":"ElementaryTypeName","src":"1964:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":290,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":298,"src":"1992:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":289,"name":"int24","nodeType":"ElementaryTypeName","src":"1992:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":292,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":298,"src":"2026:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":291,"name":"int24","nodeType":"ElementaryTypeName","src":"2026:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":294,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":298,"src":"2060:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":293,"name":"uint128","nodeType":"ElementaryTypeName","src":"2060:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":296,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":298,"src":"2086:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":295,"name":"uint128","nodeType":"ElementaryTypeName","src":"2086:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1921:187:5"},"src":"1908:201:5"},{"anonymous":false,"documentation":{"id":299,"nodeType":"StructuredDocumentation","src":"2117:530:5","text":"@notice Emitted when a position's liquidity is removed\n @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\n @param owner The owner of the position for which liquidity is removed\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount The amount of liquidity to remove\n @param amount0 The amount of token0 withdrawn\n @param amount1 The amount of token1 withdrawn"},"id":313,"name":"Burn","nodeType":"EventDefinition","parameters":{"id":312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":301,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":313,"src":"2674:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":300,"name":"address","nodeType":"ElementaryTypeName","src":"2674:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":303,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":313,"src":"2706:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":302,"name":"int24","nodeType":"ElementaryTypeName","src":"2706:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":305,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":313,"src":"2740:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":304,"name":"int24","nodeType":"ElementaryTypeName","src":"2740:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":307,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":313,"src":"2774:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":306,"name":"uint128","nodeType":"ElementaryTypeName","src":"2774:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":309,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":313,"src":"2799:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":308,"name":"uint256","nodeType":"ElementaryTypeName","src":"2799:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":311,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":313,"src":"2825:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":310,"name":"uint256","nodeType":"ElementaryTypeName","src":"2825:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2663:184:5"},"src":"2653:195:5"},{"anonymous":false,"documentation":{"id":314,"nodeType":"StructuredDocumentation","src":"2856:607:5","text":"@notice Emitted by the pool for any swaps between token0 and token1\n @param sender The address that initiated the swap call, and that received the callback\n @param recipient The address that received the output of the swap\n @param amount0 The delta of the token0 balance of the pool\n @param amount1 The delta of the token1 balance of the pool\n @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\n @param liquidity The liquidity of the pool after the swap\n @param tick The log base 1.0001 of price of the pool after the swap"},"id":330,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":316,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":330,"src":"3490:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":315,"name":"address","nodeType":"ElementaryTypeName","src":"3490:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":318,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":330,"src":"3523:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":317,"name":"address","nodeType":"ElementaryTypeName","src":"3523:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":320,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":330,"src":"3559:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":319,"name":"int256","nodeType":"ElementaryTypeName","src":"3559:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":322,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":330,"src":"3584:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":321,"name":"int256","nodeType":"ElementaryTypeName","src":"3584:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":324,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":330,"src":"3609:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":323,"name":"uint160","nodeType":"ElementaryTypeName","src":"3609:7:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":326,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":330,"src":"3640:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":325,"name":"uint128","nodeType":"ElementaryTypeName","src":"3640:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":328,"indexed":false,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":330,"src":"3668:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":327,"name":"int24","nodeType":"ElementaryTypeName","src":"3668:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3479:206:5"},"src":"3469:217:5"},{"anonymous":false,"documentation":{"id":331,"nodeType":"StructuredDocumentation","src":"3694:568:5","text":"@notice Emitted by the pool for any flashes of token0/token1\n @param sender The address that initiated the swap call, and that received the callback\n @param recipient The address that received the tokens from flash\n @param amount0 The amount of token0 that was flashed\n @param amount1 The amount of token1 that was flashed\n @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\n @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee"},"id":345,"name":"Flash","nodeType":"EventDefinition","parameters":{"id":344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":345,"src":"4290:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":332,"name":"address","nodeType":"ElementaryTypeName","src":"4290:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":335,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":345,"src":"4323:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":334,"name":"address","nodeType":"ElementaryTypeName","src":"4323:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":337,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":345,"src":"4359:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":336,"name":"uint256","nodeType":"ElementaryTypeName","src":"4359:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":339,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":345,"src":"4385:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":338,"name":"uint256","nodeType":"ElementaryTypeName","src":"4385:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":341,"indexed":false,"mutability":"mutable","name":"paid0","nodeType":"VariableDeclaration","scope":345,"src":"4411:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":340,"name":"uint256","nodeType":"ElementaryTypeName","src":"4411:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":343,"indexed":false,"mutability":"mutable","name":"paid1","nodeType":"VariableDeclaration","scope":345,"src":"4435:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":342,"name":"uint256","nodeType":"ElementaryTypeName","src":"4435:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4279:176:5"},"src":"4268:188:5"},{"anonymous":false,"documentation":{"id":346,"nodeType":"StructuredDocumentation","src":"4464:455:5","text":"@notice Emitted by the pool for increases to the number of observations that can be stored\n @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\n just before a mint/swap/burn.\n @param observationCardinalityNextOld The previous value of the next observation cardinality\n @param observationCardinalityNextNew The updated value of the next observation cardinality"},"id":352,"name":"IncreaseObservationCardinalityNext","nodeType":"EventDefinition","parameters":{"id":351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextOld","nodeType":"VariableDeclaration","scope":352,"src":"4976:36:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":347,"name":"uint16","nodeType":"ElementaryTypeName","src":"4976:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":350,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextNew","nodeType":"VariableDeclaration","scope":352,"src":"5023:36:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":349,"name":"uint16","nodeType":"ElementaryTypeName","src":"5023:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4965:101:5"},"src":"4925:142:5"},{"anonymous":false,"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"5075:374:5","text":"@notice Emitted when the protocol fee is changed by the pool\n @param feeProtocol0Old The previous value of the token0 protocol fee\n @param feeProtocol1Old The previous value of the token1 protocol fee\n @param feeProtocol0New The updated value of the token0 protocol fee\n @param feeProtocol1New The updated value of the token1 protocol fee"},"id":363,"name":"SetFeeProtocol","nodeType":"EventDefinition","parameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"indexed":false,"mutability":"mutable","name":"feeProtocol0Old","nodeType":"VariableDeclaration","scope":363,"src":"5476:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":354,"name":"uint8","nodeType":"ElementaryTypeName","src":"5476:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":357,"indexed":false,"mutability":"mutable","name":"feeProtocol1Old","nodeType":"VariableDeclaration","scope":363,"src":"5499:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":356,"name":"uint8","nodeType":"ElementaryTypeName","src":"5499:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":359,"indexed":false,"mutability":"mutable","name":"feeProtocol0New","nodeType":"VariableDeclaration","scope":363,"src":"5522:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":358,"name":"uint8","nodeType":"ElementaryTypeName","src":"5522:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":361,"indexed":false,"mutability":"mutable","name":"feeProtocol1New","nodeType":"VariableDeclaration","scope":363,"src":"5545:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":360,"name":"uint8","nodeType":"ElementaryTypeName","src":"5545:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5475:92:5"},"src":"5455:113:5"},{"anonymous":false,"documentation":{"id":364,"nodeType":"StructuredDocumentation","src":"5576:388:5","text":"@notice Emitted when the collected protocol fees are withdrawn by the factory owner\n @param sender The address that collects the protocol fees\n @param recipient The address that receives the collected protocol fees\n @param amount0 The amount of token0 protocol fees that is withdrawn\n @param amount0 The amount of token1 protocol fees that is withdrawn"},"id":374,"name":"CollectProtocol","nodeType":"EventDefinition","parameters":{"id":373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":366,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":374,"src":"5992:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":365,"name":"address","nodeType":"ElementaryTypeName","src":"5992:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":368,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":374,"src":"6016:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":367,"name":"address","nodeType":"ElementaryTypeName","src":"6016:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":370,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":374,"src":"6043:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":369,"name":"uint128","nodeType":"ElementaryTypeName","src":"6043:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":372,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":374,"src":"6060:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":371,"name":"uint128","nodeType":"ElementaryTypeName","src":"6060:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5991:85:5"},"src":"5970:107:5"},{"anonymous":false,"documentation":{"id":375,"nodeType":"StructuredDocumentation","src":"6085:231:5","text":"@notice Emitted when the reward rate is changed by the owner\n @param rewardPerSecondX48 The new reward rate per second (in Q48)\n @param rewardRateEffectiveUntil The timestamp when the new reward rate will expire"},"id":381,"name":"SetRewardRate","nodeType":"EventDefinition","parameters":{"id":380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"indexed":false,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":381,"src":"6342:26:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":376,"name":"uint144","nodeType":"ElementaryTypeName","src":"6342:7:5","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":379,"indexed":false,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":381,"src":"6370:31:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":378,"name":"uint32","nodeType":"ElementaryTypeName","src":"6370:6:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6341:61:5"},"src":"6322:81:5"}],"scope":383,"src":"164:6242:5"}],"src":"46:6362:5"},"id":5},"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol","exportedSymbols":{"IElixirPoolImmutables":[422]},"id":423,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":384,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:6"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":385,"nodeType":"StructuredDocumentation","src":"74:155:6","text":"@title Pool state that never changes\n @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values"},"fullyImplemented":false,"id":422,"linearizedBaseContracts":[422],"name":"IElixirPoolImmutables","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":386,"nodeType":"StructuredDocumentation","src":"268:136:6","text":"@notice The contract that deployed the pool, which must adhere to the IElixirFactory interface\n @return The contract address"},"functionSelector":"c45a0155","id":391,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":387,"nodeType":"ParameterList","parameters":[],"src":"426:2:6"},"returnParameters":{"id":390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":389,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":391,"src":"452:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":388,"name":"address","nodeType":"ElementaryTypeName","src":"452:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"451:9:6"},"scope":422,"src":"410:51:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":392,"nodeType":"StructuredDocumentation","src":"469:114:6","text":"@notice The first of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"0dfe1681","id":397,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nodeType":"FunctionDefinition","parameters":{"id":393,"nodeType":"ParameterList","parameters":[],"src":"604:2:6"},"returnParameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":397,"src":"630:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":394,"name":"address","nodeType":"ElementaryTypeName","src":"630:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"629:9:6"},"scope":422,"src":"589:50:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":398,"nodeType":"StructuredDocumentation","src":"647:115:6","text":"@notice The second of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"d21220a7","id":403,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nodeType":"FunctionDefinition","parameters":{"id":399,"nodeType":"ParameterList","parameters":[],"src":"783:2:6"},"returnParameters":{"id":402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":401,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":403,"src":"809:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":400,"name":"address","nodeType":"ElementaryTypeName","src":"809:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"808:9:6"},"scope":422,"src":"768:50:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":404,"nodeType":"StructuredDocumentation","src":"826:85:6","text":"@notice The pool's fee in hundredths of a bip, i.e. 1e-6\n @return The fee"},"functionSelector":"ddca3f43","id":409,"implemented":false,"kind":"function","modifiers":[],"name":"fee","nodeType":"FunctionDefinition","parameters":{"id":405,"nodeType":"ParameterList","parameters":[],"src":"929:2:6"},"returnParameters":{"id":408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":407,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":409,"src":"955:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":406,"name":"uint24","nodeType":"ElementaryTypeName","src":"955:6:6","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"954:8:6"},"scope":422,"src":"917:46:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":410,"nodeType":"StructuredDocumentation","src":"971:362:6","text":"@notice The pool tick spacing\n @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n This value is an int24 to avoid casting even though it is always positive.\n @return The tick spacing"},"functionSelector":"d0c93a7c","id":415,"implemented":false,"kind":"function","modifiers":[],"name":"tickSpacing","nodeType":"FunctionDefinition","parameters":{"id":411,"nodeType":"ParameterList","parameters":[],"src":"1359:2:6"},"returnParameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":413,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":415,"src":"1385:5:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":412,"name":"int24","nodeType":"ElementaryTypeName","src":"1385:5:6","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1384:7:6"},"scope":422,"src":"1339:53:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":416,"nodeType":"StructuredDocumentation","src":"1400:366:6","text":"@notice The maximum amount of position liquidity that can use any tick in the range\n @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n @return The max amount of liquidity per tick"},"functionSelector":"70cf754a","id":421,"implemented":false,"kind":"function","modifiers":[],"name":"maxLiquidityPerTick","nodeType":"FunctionDefinition","parameters":{"id":417,"nodeType":"ParameterList","parameters":[],"src":"1800:2:6"},"returnParameters":{"id":420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":419,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":421,"src":"1826:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":418,"name":"uint128","nodeType":"ElementaryTypeName","src":"1826:7:6","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1825:9:6"},"scope":422,"src":"1772:63:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":423,"src":"229:1609:6"}],"src":"46:1794:6"},"id":6},"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol","exportedSymbols":{"IElixirPoolOwnerActions":[468]},"id":469,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":424,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:7"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":425,"nodeType":"StructuredDocumentation","src":"74:118:7","text":"@title Permissioned pool actions\n @notice Contains pool methods that may only be called by the factory owner"},"fullyImplemented":false,"id":468,"linearizedBaseContracts":[468],"name":"IElixirPoolOwnerActions","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":426,"nodeType":"StructuredDocumentation","src":"233:347:7","text":"@notice Initialize the pool to set immutable parameters\n @param _token0 The first of the two tokens of the pool, sorted by address\n @param _token1 The second of the two tokens of the pool, sorted by address\n @param _fee The pool's fee in hundredths of a bip, i.e. 1e-6\n @param _tickSpacing The pool tick spacing"},"functionSelector":"14f2705c","id":437,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"mutability":"mutable","name":"_token0","nodeType":"VariableDeclaration","scope":437,"src":"606:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":427,"name":"address","nodeType":"ElementaryTypeName","src":"606:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":430,"mutability":"mutable","name":"_token1","nodeType":"VariableDeclaration","scope":437,"src":"623:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":429,"name":"address","nodeType":"ElementaryTypeName","src":"623:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":432,"mutability":"mutable","name":"_fee","nodeType":"VariableDeclaration","scope":437,"src":"640:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":431,"name":"uint24","nodeType":"ElementaryTypeName","src":"640:6:7","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":434,"mutability":"mutable","name":"_tickSpacing","nodeType":"VariableDeclaration","scope":437,"src":"653:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":433,"name":"int24","nodeType":"ElementaryTypeName","src":"653:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"605:67:7"},"returnParameters":{"id":436,"nodeType":"ParameterList","parameters":[],"src":"681:0:7"},"scope":468,"src":"586:96:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":438,"nodeType":"StructuredDocumentation","src":"690:207:7","text":"@notice Set the denominator of the protocol's % share of the fees\n @param feeProtocol0 new protocol fee for token0 of the pool\n @param feeProtocol1 new protocol fee for token1 of the pool"},"functionSelector":"8206a4d1","id":445,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeProtocol","nodeType":"FunctionDefinition","parameters":{"id":443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":440,"mutability":"mutable","name":"feeProtocol0","nodeType":"VariableDeclaration","scope":445,"src":"927:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":439,"name":"uint8","nodeType":"ElementaryTypeName","src":"927:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":442,"mutability":"mutable","name":"feeProtocol1","nodeType":"VariableDeclaration","scope":445,"src":"947:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":441,"name":"uint8","nodeType":"ElementaryTypeName","src":"947:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"926:40:7"},"returnParameters":{"id":444,"nodeType":"ParameterList","parameters":[],"src":"975:0:7"},"scope":468,"src":"903:73:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":446,"nodeType":"StructuredDocumentation","src":"984:488:7","text":"@notice Collect the protocol fee accrued to the pool\n @param recipient The address to which collected protocol fees should be sent\n @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\n @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\n @return amount0 The protocol fee collected in token0\n @return amount1 The protocol fee collected in token1"},"functionSelector":"85b66729","id":459,"implemented":false,"kind":"function","modifiers":[],"name":"collectProtocol","nodeType":"FunctionDefinition","parameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":448,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":459,"src":"1513:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":447,"name":"address","nodeType":"ElementaryTypeName","src":"1513:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":450,"mutability":"mutable","name":"amount0Requested","nodeType":"VariableDeclaration","scope":459,"src":"1541:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":449,"name":"uint128","nodeType":"ElementaryTypeName","src":"1541:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":452,"mutability":"mutable","name":"amount1Requested","nodeType":"VariableDeclaration","scope":459,"src":"1576:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":451,"name":"uint128","nodeType":"ElementaryTypeName","src":"1576:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1502:105:7"},"returnParameters":{"id":458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":455,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":459,"src":"1626:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":454,"name":"uint128","nodeType":"ElementaryTypeName","src":"1626:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":457,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":459,"src":"1643:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":456,"name":"uint128","nodeType":"ElementaryTypeName","src":"1643:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1625:34:7"},"scope":468,"src":"1478:182:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":460,"nodeType":"StructuredDocumentation","src":"1668:239:7","text":"@notice Set the reward rate the active liquidity receives per second\n @param rewardPerSecondX48 The new reward rate per second (in Q48)\n @param rewardRateEffectiveUntil The timestamp when the new reward rate will expire"},"functionSelector":"218064e5","id":467,"implemented":false,"kind":"function","modifiers":[],"name":"setRewardRate","nodeType":"FunctionDefinition","parameters":{"id":465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":462,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":467,"src":"1936:26:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":461,"name":"uint144","nodeType":"ElementaryTypeName","src":"1936:7:7","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":464,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":467,"src":"1964:31:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":463,"name":"uint32","nodeType":"ElementaryTypeName","src":"1964:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1935:61:7"},"returnParameters":{"id":466,"nodeType":"ParameterList","parameters":[],"src":"2005:0:7"},"scope":468,"src":"1913:93:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":469,"src":"192:1817:7"}],"src":"46:1965:7"},"id":7},"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol","exportedSymbols":{"IElixirPoolState":[588]},"id":589,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":470,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:8"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":471,"nodeType":"StructuredDocumentation","src":"74:172:8","text":"@title Pool state that can change\n @notice These methods compose the pool's state, and can change with any frequency including multiple times\n per transaction"},"fullyImplemented":false,"id":588,"linearizedBaseContracts":[588],"name":"IElixirPoolState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":472,"nodeType":"StructuredDocumentation","src":"280:1152:8","text":"@notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\n when accessed externally.\n @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\n tick The current tick of the pool, i.e. according to the last tick transition that was run.\n This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\n boundary.\n observationIndex The index of the last oracle observation that was written,\n observationCardinality The current maximum number of observations stored in the pool,\n observationCardinalityNext The next maximum number of observations, to be updated when the observation.\n feeProtocol The protocol fee for both tokens of the pool.\n Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\n is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\n unlocked Whether the pool is currently locked to reentrancy"},"functionSelector":"3850c7bd","id":489,"implemented":false,"kind":"function","modifiers":[],"name":"slot0","nodeType":"FunctionDefinition","parameters":{"id":473,"nodeType":"ParameterList","parameters":[],"src":"1452:2:8"},"returnParameters":{"id":488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":489,"src":"1519:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":474,"name":"uint160","nodeType":"ElementaryTypeName","src":"1519:7:8","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":477,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":489,"src":"1554:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":476,"name":"int24","nodeType":"ElementaryTypeName","src":"1554:5:8","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":479,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","scope":489,"src":"1579:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":478,"name":"uint16","nodeType":"ElementaryTypeName","src":"1579:6:8","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":481,"mutability":"mutable","name":"observationCardinality","nodeType":"VariableDeclaration","scope":489,"src":"1617:29:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":480,"name":"uint16","nodeType":"ElementaryTypeName","src":"1617:6:8","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":483,"mutability":"mutable","name":"observationCardinalityNext","nodeType":"VariableDeclaration","scope":489,"src":"1661:33:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":482,"name":"uint16","nodeType":"ElementaryTypeName","src":"1661:6:8","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":485,"mutability":"mutable","name":"feeProtocol","nodeType":"VariableDeclaration","scope":489,"src":"1709:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":484,"name":"uint8","nodeType":"ElementaryTypeName","src":"1709:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":487,"mutability":"mutable","name":"unlocked","nodeType":"VariableDeclaration","scope":489,"src":"1741:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":486,"name":"bool","nodeType":"ElementaryTypeName","src":"1741:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1504:261:8"},"scope":588,"src":"1438:328:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":490,"nodeType":"StructuredDocumentation","src":"1774:717:8","text":"@notice The rewardSlot storage slot in the pool stores variables necessary to update\n Oracle.Observation.rewardPerLiquidityCumulativeX64 accumulator.\n @dev Both of the variables can be set arbitrarily by the owner. The pool does not set any restrictions on the\n values other than their variable types. The factory owner should relegate the setting of these variables to a\n reward contract that will update these variables based on a proper reward distribution logic.\n @return rewardPerSecondX48 The rewards per second promised to be distributed to the pool as a Q96.48 value\n rewardRateEffectiveUntil The timestamp when the rewardPerSecondX48 is no longer effective"},"functionSelector":"94fd4a3e","id":497,"implemented":false,"kind":"function","modifiers":[],"name":"rewardSlot","nodeType":"FunctionDefinition","parameters":{"id":491,"nodeType":"ParameterList","parameters":[],"src":"2516:2:8"},"returnParameters":{"id":496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":493,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":497,"src":"2569:26:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":492,"name":"uint144","nodeType":"ElementaryTypeName","src":"2569:7:8","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":495,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":497,"src":"2597:31:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":494,"name":"uint32","nodeType":"ElementaryTypeName","src":"2597:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2568:61:8"},"scope":588,"src":"2497:133:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":498,"nodeType":"StructuredDocumentation","src":"2638:169:8","text":"@notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\n @dev This value can overflow the uint256"},"functionSelector":"f3058399","id":503,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal0X128","nodeType":"FunctionDefinition","parameters":{"id":499,"nodeType":"ParameterList","parameters":[],"src":"2842:2:8"},"returnParameters":{"id":502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":503,"src":"2868:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":500,"name":"uint256","nodeType":"ElementaryTypeName","src":"2868:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2867:9:8"},"scope":588,"src":"2813:64:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":504,"nodeType":"StructuredDocumentation","src":"2885:169:8","text":"@notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\n @dev This value can overflow the uint256"},"functionSelector":"46141319","id":509,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal1X128","nodeType":"FunctionDefinition","parameters":{"id":505,"nodeType":"ParameterList","parameters":[],"src":"3089:2:8"},"returnParameters":{"id":508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":507,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":509,"src":"3115:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":506,"name":"uint256","nodeType":"ElementaryTypeName","src":"3115:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3114:9:8"},"scope":588,"src":"3060:64:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":510,"nodeType":"StructuredDocumentation","src":"3132:148:8","text":"@notice The amounts of token0 and token1 that are owed to the protocol\n @dev Protocol fees will never exceed uint128 max in either token"},"functionSelector":"1ad8b03b","id":517,"implemented":false,"kind":"function","modifiers":[],"name":"protocolFees","nodeType":"FunctionDefinition","parameters":{"id":511,"nodeType":"ParameterList","parameters":[],"src":"3307:2:8"},"returnParameters":{"id":516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":513,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":517,"src":"3360:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":512,"name":"uint128","nodeType":"ElementaryTypeName","src":"3360:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":515,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":517,"src":"3376:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":514,"name":"uint128","nodeType":"ElementaryTypeName","src":"3376:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3359:32:8"},"scope":588,"src":"3286:106:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":518,"nodeType":"StructuredDocumentation","src":"3400:151:8","text":"@notice The currently in range liquidity available to the pool\n @dev This value has no relationship to the total liquidity across all ticks"},"functionSelector":"1a686502","id":523,"implemented":false,"kind":"function","modifiers":[],"name":"liquidity","nodeType":"FunctionDefinition","parameters":{"id":519,"nodeType":"ParameterList","parameters":[],"src":"3575:2:8"},"returnParameters":{"id":522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":521,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":523,"src":"3601:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":520,"name":"uint128","nodeType":"ElementaryTypeName","src":"3601:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3600:9:8"},"scope":588,"src":"3557:53:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":524,"nodeType":"StructuredDocumentation","src":"3618:1257:8","text":"@notice Look up information about a specific tick in the pool\n @param tick The tick to look up\n @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\n tick upper,\n liquidityNet how much liquidity changes when the pool price crosses the tick,\n feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\n feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\n tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\n secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\n secondsOutside the seconds spent on the other side of the tick from the current tick,\n initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\n Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\n In addition, these values are only relative and must be used only in comparison to previous snapshots for\n a specific position."},"functionSelector":"f30dba93","id":547,"implemented":false,"kind":"function","modifiers":[],"name":"ticks","nodeType":"FunctionDefinition","parameters":{"id":527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":526,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":547,"src":"4906:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":525,"name":"int24","nodeType":"ElementaryTypeName","src":"4906:5:8","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4895:28:8"},"returnParameters":{"id":546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":529,"mutability":"mutable","name":"liquidityGross","nodeType":"VariableDeclaration","scope":547,"src":"4988:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":528,"name":"uint128","nodeType":"ElementaryTypeName","src":"4988:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":531,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":547,"src":"5025:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":530,"name":"int128","nodeType":"ElementaryTypeName","src":"5025:6:8","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":533,"mutability":"mutable","name":"feeGrowthOutside0X128","nodeType":"VariableDeclaration","scope":547,"src":"5059:29:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":532,"name":"uint256","nodeType":"ElementaryTypeName","src":"5059:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":535,"mutability":"mutable","name":"feeGrowthOutside1X128","nodeType":"VariableDeclaration","scope":547,"src":"5103:29:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":534,"name":"uint256","nodeType":"ElementaryTypeName","src":"5103:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":537,"mutability":"mutable","name":"tickCumulativeOutside","nodeType":"VariableDeclaration","scope":547,"src":"5147:27:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":536,"name":"int56","nodeType":"ElementaryTypeName","src":"5147:5:8","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":539,"mutability":"mutable","name":"secondsPerLiquidityOutsideX128","nodeType":"VariableDeclaration","scope":547,"src":"5189:38:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":538,"name":"uint160","nodeType":"ElementaryTypeName","src":"5189:7:8","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":541,"mutability":"mutable","name":"secondsOutside","nodeType":"VariableDeclaration","scope":547,"src":"5242:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":540,"name":"uint32","nodeType":"ElementaryTypeName","src":"5242:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":543,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":547,"src":"5278:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":542,"name":"bool","nodeType":"ElementaryTypeName","src":"5278:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":545,"mutability":"mutable","name":"rewardPerLiquidityOutsideX64","nodeType":"VariableDeclaration","scope":547,"src":"5309:36:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":544,"name":"uint192","nodeType":"ElementaryTypeName","src":"5309:7:8","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"4973:383:8"},"scope":588,"src":"4881:476:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":548,"nodeType":"StructuredDocumentation","src":"5365:99:8","text":"@notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information"},"functionSelector":"5339c296","id":555,"implemented":false,"kind":"function","modifiers":[],"name":"tickBitmap","nodeType":"FunctionDefinition","parameters":{"id":551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":550,"mutability":"mutable","name":"wordPosition","nodeType":"VariableDeclaration","scope":555,"src":"5490:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":549,"name":"int16","nodeType":"ElementaryTypeName","src":"5490:5:8","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"5489:20:8"},"returnParameters":{"id":554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":555,"src":"5533:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":552,"name":"uint256","nodeType":"ElementaryTypeName","src":"5533:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5532:9:8"},"scope":588,"src":"5470:72:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":556,"nodeType":"StructuredDocumentation","src":"5550:706:8","text":"@notice Returns the information about a position by the position's key\n @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\n @return _liquidity The amount of liquidity in the position,\n Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\n Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\n Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\n Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke"},"functionSelector":"514ea4bf","id":571,"implemented":false,"kind":"function","modifiers":[],"name":"positions","nodeType":"FunctionDefinition","parameters":{"id":559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":558,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":571,"src":"6291:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":557,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6291:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6280:29:8"},"returnParameters":{"id":570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":561,"mutability":"mutable","name":"_liquidity","nodeType":"VariableDeclaration","scope":571,"src":"6374:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":560,"name":"uint128","nodeType":"ElementaryTypeName","src":"6374:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":563,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":571,"src":"6407:32:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":562,"name":"uint256","nodeType":"ElementaryTypeName","src":"6407:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":565,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":571,"src":"6454:32:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":564,"name":"uint256","nodeType":"ElementaryTypeName","src":"6454:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":567,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":571,"src":"6501:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":566,"name":"uint128","nodeType":"ElementaryTypeName","src":"6501:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":569,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":571,"src":"6535:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":568,"name":"uint128","nodeType":"ElementaryTypeName","src":"6535:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6359:206:8"},"scope":588,"src":"6262:304:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":572,"nodeType":"StructuredDocumentation","src":"6574:826:8","text":"@notice Returns data about a specific observation index\n @param index The element of the observations array to fetch\n @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\n ago, rather than at a specific index in the array.\n @return blockTimestamp The timestamp of the observation,\n Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\n Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\n Returns initialized whether the observation has been initialized and the values are safe to use\n Returns rewardPerLiquidityCumulativeX64 reward per liquidity"},"functionSelector":"252c09d7","id":587,"implemented":false,"kind":"function","modifiers":[],"name":"observations","nodeType":"FunctionDefinition","parameters":{"id":575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":574,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":587,"src":"7438:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":573,"name":"uint256","nodeType":"ElementaryTypeName","src":"7438:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7427:31:8"},"returnParameters":{"id":586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","scope":587,"src":"7523:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":576,"name":"uint32","nodeType":"ElementaryTypeName","src":"7523:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":579,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":587,"src":"7559:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":578,"name":"int56","nodeType":"ElementaryTypeName","src":"7559:5:8","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":581,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":587,"src":"7594:41:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":580,"name":"uint160","nodeType":"ElementaryTypeName","src":"7594:7:8","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":583,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":587,"src":"7650:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":582,"name":"bool","nodeType":"ElementaryTypeName","src":"7650:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":585,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":587,"src":"7681:39:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":584,"name":"uint192","nodeType":"ElementaryTypeName","src":"7681:7:8","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"7508:223:8"},"scope":588,"src":"7406:326:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":589,"src":"246:7489:8"}],"src":"46:7691:8"},"id":8},"contracts/elixir-core/libraries/FixedPoint128.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/FixedPoint128.sol","exportedSymbols":{"FixedPoint128":[595]},"id":596,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":590,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"46:24:9"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":591,"nodeType":"StructuredDocumentation","src":"74:142:9","text":"@title FixedPoint128\n @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)"},"fullyImplemented":true,"id":595,"linearizedBaseContracts":[595],"name":"FixedPoint128","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":594,"mutability":"constant","name":"Q128","nodeType":"VariableDeclaration","scope":595,"src":"245:68:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":592,"name":"uint256","nodeType":"ElementaryTypeName","src":"245:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"278:35:9","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"visibility":"internal"}],"scope":596,"src":"216:101:9"}],"src":"46:273:9"},"id":9},"contracts/elixir-core/libraries/FixedPoint96.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/FixedPoint96.sol","exportedSymbols":{"FixedPoint96":[605]},"id":606,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":597,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"46:24:10"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":598,"nodeType":"StructuredDocumentation","src":"74:177:10","text":"@title FixedPoint96\n @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\n @dev Used in SqrtPriceMath.sol"},"fullyImplemented":true,"id":605,"linearizedBaseContracts":[605],"name":"FixedPoint96","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":601,"mutability":"constant","name":"RESOLUTION","nodeType":"VariableDeclaration","scope":605,"src":"279:39:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":599,"name":"uint8","nodeType":"ElementaryTypeName","src":"279:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3936","id":600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"316:2:10","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"visibility":"internal"},{"constant":true,"id":604,"mutability":"constant","name":"Q96","nodeType":"VariableDeclaration","scope":605,"src":"325:59:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":602,"name":"uint256","nodeType":"ElementaryTypeName","src":"325:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307831303030303030303030303030303030303030303030303030","id":603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"357:27:10","typeDescriptions":{"typeIdentifier":"t_rational_79228162514264337593543950336_by_1","typeString":"int_const 79228162514264337593543950336"},"value":"0x1000000000000000000000000"},"visibility":"internal"}],"scope":606,"src":"251:137:10"}],"src":"46:344:10"},"id":10},"contracts/elixir-core/libraries/FullMath.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","exportedSymbols":{"FullMath":[778]},"id":779,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":607,"literals":["solidity",">=","0.4",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:11"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":608,"nodeType":"StructuredDocumentation","src":"68:300:11","text":"@title Contains 512-bit math functions\n @notice Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\n @dev Handles \"phantom overflow\" i.e., allows multiplication and division where an intermediate value overflows 256 bits"},"fullyImplemented":true,"id":778,"linearizedBaseContracts":[778],"name":"FullMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":733,"nodeType":"Block","src":"894:3736:11","statements":[{"assignments":[621],"declarations":[{"constant":false,"id":621,"mutability":"mutable","name":"prod0","nodeType":"VariableDeclaration","scope":733,"src":"1213:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":620,"name":"uint256","nodeType":"ElementaryTypeName","src":"1213:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":622,"nodeType":"VariableDeclarationStatement","src":"1213:13:11"},{"assignments":[624],"declarations":[{"constant":false,"id":624,"mutability":"mutable","name":"prod1","nodeType":"VariableDeclaration","scope":733,"src":"1282:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":623,"name":"uint256","nodeType":"ElementaryTypeName","src":"1282:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":625,"nodeType":"VariableDeclarationStatement","src":"1282:13:11"},{"AST":{"nodeType":"YulBlock","src":"1359:145:11","statements":[{"nodeType":"YulVariableDeclaration","src":"1374:30:11","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"1391:1:11"},{"name":"b","nodeType":"YulIdentifier","src":"1394:1:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1401:1:11","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1397:3:11"},"nodeType":"YulFunctionCall","src":"1397:6:11"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"1384:6:11"},"nodeType":"YulFunctionCall","src":"1384:20:11"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"1378:2:11","type":""}]},{"nodeType":"YulAssignment","src":"1418:18:11","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"1431:1:11"},{"name":"b","nodeType":"YulIdentifier","src":"1434:1:11"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1427:3:11"},"nodeType":"YulFunctionCall","src":"1427:9:11"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"1418:5:11"}]},{"nodeType":"YulAssignment","src":"1450:43:11","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"1467:2:11"},{"name":"prod0","nodeType":"YulIdentifier","src":"1471:5:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1463:3:11"},"nodeType":"YulFunctionCall","src":"1463:14:11"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"1482:2:11"},{"name":"prod0","nodeType":"YulIdentifier","src":"1486:5:11"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1479:2:11"},"nodeType":"YulFunctionCall","src":"1479:13:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1459:3:11"},"nodeType":"YulFunctionCall","src":"1459:34:11"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"1450:5:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":611,"isOffset":false,"isSlot":false,"src":"1391:1:11","valueSize":1},{"declaration":611,"isOffset":false,"isSlot":false,"src":"1431:1:11","valueSize":1},{"declaration":613,"isOffset":false,"isSlot":false,"src":"1394:1:11","valueSize":1},{"declaration":613,"isOffset":false,"isSlot":false,"src":"1434:1:11","valueSize":1},{"declaration":621,"isOffset":false,"isSlot":false,"src":"1418:5:11","valueSize":1},{"declaration":621,"isOffset":false,"isSlot":false,"src":"1471:5:11","valueSize":1},{"declaration":621,"isOffset":false,"isSlot":false,"src":"1486:5:11","valueSize":1},{"declaration":624,"isOffset":false,"isSlot":false,"src":"1450:5:11","valueSize":1}],"id":626,"nodeType":"InlineAssembly","src":"1350:154:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":627,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"1579:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1588:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1579:10:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":640,"nodeType":"IfStatement","src":"1575:185:11","trueBody":{"id":639,"nodeType":"Block","src":"1591:169:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":631,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"1614:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1628:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1614:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":630,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1606:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1606:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":635,"nodeType":"ExpressionStatement","src":"1606:24:11"},{"AST":{"nodeType":"YulBlock","src":"1654:67:11","statements":[{"nodeType":"YulAssignment","src":"1673:33:11","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"1687:5:11"},{"name":"denominator","nodeType":"YulIdentifier","src":"1694:11:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"1683:3:11"},"nodeType":"YulFunctionCall","src":"1683:23:11"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"1673:6:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":615,"isOffset":false,"isSlot":false,"src":"1694:11:11","valueSize":1},{"declaration":621,"isOffset":false,"isSlot":false,"src":"1687:5:11","valueSize":1},{"declaration":618,"isOffset":false,"isSlot":false,"src":"1673:6:11","valueSize":1}],"id":636,"nodeType":"InlineAssembly","src":"1645:76:11"},{"expression":{"id":637,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"1742:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":619,"id":638,"nodeType":"Return","src":"1735:13:11"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":642,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"1877:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":643,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"1891:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1877:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":641,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1869:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1869:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":646,"nodeType":"ExpressionStatement","src":"1869:28:11"},{"assignments":[648],"declarations":[{"constant":false,"id":648,"mutability":"mutable","name":"remainder","nodeType":"VariableDeclaration","scope":733,"src":"2182:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":647,"name":"uint256","nodeType":"ElementaryTypeName","src":"2182:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"nodeType":"VariableDeclarationStatement","src":"2182:17:11"},{"AST":{"nodeType":"YulBlock","src":"2219:64:11","statements":[{"nodeType":"YulAssignment","src":"2234:38:11","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2254:1:11"},{"name":"b","nodeType":"YulIdentifier","src":"2257:1:11"},{"name":"denominator","nodeType":"YulIdentifier","src":"2260:11:11"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2247:6:11"},"nodeType":"YulFunctionCall","src":"2247:25:11"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"2234:9:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":611,"isOffset":false,"isSlot":false,"src":"2254:1:11","valueSize":1},{"declaration":613,"isOffset":false,"isSlot":false,"src":"2257:1:11","valueSize":1},{"declaration":615,"isOffset":false,"isSlot":false,"src":"2260:11:11","valueSize":1},{"declaration":648,"isOffset":false,"isSlot":false,"src":"2234:9:11","valueSize":1}],"id":650,"nodeType":"InlineAssembly","src":"2210:73:11"},{"AST":{"nodeType":"YulBlock","src":"2358:111:11","statements":[{"nodeType":"YulAssignment","src":"2373:41:11","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"2386:5:11"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"2396:9:11"},{"name":"prod0","nodeType":"YulIdentifier","src":"2407:5:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2393:2:11"},"nodeType":"YulFunctionCall","src":"2393:20:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2382:3:11"},"nodeType":"YulFunctionCall","src":"2382:32:11"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2373:5:11"}]},{"nodeType":"YulAssignment","src":"2428:30:11","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"2441:5:11"},{"name":"remainder","nodeType":"YulIdentifier","src":"2448:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2437:3:11"},"nodeType":"YulFunctionCall","src":"2437:21:11"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2428:5:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":621,"isOffset":false,"isSlot":false,"src":"2407:5:11","valueSize":1},{"declaration":621,"isOffset":false,"isSlot":false,"src":"2428:5:11","valueSize":1},{"declaration":621,"isOffset":false,"isSlot":false,"src":"2441:5:11","valueSize":1},{"declaration":624,"isOffset":false,"isSlot":false,"src":"2373:5:11","valueSize":1},{"declaration":624,"isOffset":false,"isSlot":false,"src":"2386:5:11","valueSize":1},{"declaration":648,"isOffset":false,"isSlot":false,"src":"2396:9:11","valueSize":1},{"declaration":648,"isOffset":false,"isSlot":false,"src":"2448:9:11","valueSize":1}],"id":651,"nodeType":"InlineAssembly","src":"2349:120:11"},{"assignments":[653],"declarations":[{"constant":false,"id":653,"mutability":"mutable","name":"twos","nodeType":"VariableDeclaration","scope":733,"src":"2623:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":652,"name":"uint256","nodeType":"ElementaryTypeName","src":"2623:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":658,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2638:12:11","subExpression":{"id":654,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"2639:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"2653:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2638:26:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2623:41:11"},{"AST":{"nodeType":"YulBlock","src":"2731:63:11","statements":[{"nodeType":"YulAssignment","src":"2746:37:11","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"2765:11:11"},{"name":"twos","nodeType":"YulIdentifier","src":"2778:4:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2761:3:11"},"nodeType":"YulFunctionCall","src":"2761:22:11"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"2746:11:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":615,"isOffset":false,"isSlot":false,"src":"2746:11:11","valueSize":1},{"declaration":615,"isOffset":false,"isSlot":false,"src":"2765:11:11","valueSize":1},{"declaration":653,"isOffset":false,"isSlot":false,"src":"2778:4:11","valueSize":1}],"id":659,"nodeType":"InlineAssembly","src":"2722:72:11"},{"AST":{"nodeType":"YulBlock","src":"2870:51:11","statements":[{"nodeType":"YulAssignment","src":"2885:25:11","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"2898:5:11"},{"name":"twos","nodeType":"YulIdentifier","src":"2905:4:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2894:3:11"},"nodeType":"YulFunctionCall","src":"2894:16:11"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2885:5:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":621,"isOffset":false,"isSlot":false,"src":"2885:5:11","valueSize":1},{"declaration":621,"isOffset":false,"isSlot":false,"src":"2898:5:11","valueSize":1},{"declaration":653,"isOffset":false,"isSlot":false,"src":"2905:4:11","valueSize":1}],"id":660,"nodeType":"InlineAssembly","src":"2861:60:11"},{"AST":{"nodeType":"YulBlock","src":"3113:65:11","statements":[{"nodeType":"YulAssignment","src":"3128:39:11","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3148:1:11","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"3151:4:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3144:3:11"},"nodeType":"YulFunctionCall","src":"3144:12:11"},{"name":"twos","nodeType":"YulIdentifier","src":"3158:4:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3140:3:11"},"nodeType":"YulFunctionCall","src":"3140:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"3165:1:11","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3136:3:11"},"nodeType":"YulFunctionCall","src":"3136:31:11"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"3128:4:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":653,"isOffset":false,"isSlot":false,"src":"3128:4:11","valueSize":1},{"declaration":653,"isOffset":false,"isSlot":false,"src":"3151:4:11","valueSize":1},{"declaration":653,"isOffset":false,"isSlot":false,"src":"3158:4:11","valueSize":1}],"id":661,"nodeType":"InlineAssembly","src":"3104:74:11"},{"expression":{"id":666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":662,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":621,"src":"3188:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":663,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"3197:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":664,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"3205:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3197:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3188:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":667,"nodeType":"ExpressionStatement","src":"3188:21:11"},{"assignments":[669],"declarations":[{"constant":false,"id":669,"mutability":"mutable","name":"inv","nodeType":"VariableDeclaration","scope":733,"src":"3550:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":668,"name":"uint256","nodeType":"ElementaryTypeName","src":"3550:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":676,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3565:1:11","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":671,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"3569:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3565:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":673,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3564:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3584:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3564:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3550:35:11"},{"expression":{"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":677,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"3804:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3811:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":679,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"3815:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":680,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"3829:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3815:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3811:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3804:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":684,"nodeType":"ExpressionStatement","src":"3804:28:11"},{"expression":{"id":691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":685,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"3863:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3870:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":687,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"3874:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":688,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"3888:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3874:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3870:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3863:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":692,"nodeType":"ExpressionStatement","src":"3863:28:11"},{"expression":{"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":693,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"3923:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3930:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":695,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"3934:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":696,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"3948:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3934:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3930:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3923:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":700,"nodeType":"ExpressionStatement","src":"3923:28:11"},{"expression":{"id":707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":701,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"3983:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3990:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":703,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"3994:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":704,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4008:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3994:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3990:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3983:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":708,"nodeType":"ExpressionStatement","src":"3983:28:11"},{"expression":{"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":709,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4043:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4050:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":711,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"4054:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":712,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4068:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4054:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4050:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4043:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":716,"nodeType":"ExpressionStatement","src":"4043:28:11"},{"expression":{"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":717,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4104:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4111:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"4115:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":720,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4129:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4115:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4111:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4104:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":724,"nodeType":"ExpressionStatement","src":"4104:28:11"},{"expression":{"id":729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":725,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"4578:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":726,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":621,"src":"4587:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":727,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4595:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4587:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4578:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":730,"nodeType":"ExpressionStatement","src":"4578:20:11"},{"expression":{"id":731,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"4616:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":619,"id":732,"nodeType":"Return","src":"4609:13:11"}]},"documentation":{"id":609,"nodeType":"StructuredDocumentation","src":"392:364:11","text":"@notice Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @param a The multiplicand\n @param b The multiplier\n @param denominator The divisor\n @return result The 256-bit result\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv"},"id":734,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nodeType":"FunctionDefinition","parameters":{"id":616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":734,"src":"788:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":610,"name":"uint256","nodeType":"ElementaryTypeName","src":"788:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":613,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":734,"src":"808:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":612,"name":"uint256","nodeType":"ElementaryTypeName","src":"808:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":615,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":734,"src":"828:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":614,"name":"uint256","nodeType":"ElementaryTypeName","src":"828:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"777:77:11"},"returnParameters":{"id":619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":618,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":734,"src":"878:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":617,"name":"uint256","nodeType":"ElementaryTypeName","src":"878:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"877:16:11"},"scope":778,"src":"762:3868:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":776,"nodeType":"Block","src":"5061:183:11","statements":[{"expression":{"id":752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":746,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"5072:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":748,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":737,"src":"5088:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":749,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":739,"src":"5091:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":750,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"5094:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":747,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"5081:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5081:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:34:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":753,"nodeType":"ExpressionStatement","src":"5072:34:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":755,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":737,"src":"5128:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":756,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":739,"src":"5131:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":757,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"5134:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":754,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"5121:6:11","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5121:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5149:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5121:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":775,"nodeType":"IfStatement","src":"5117:120:11","trueBody":{"id":774,"nodeType":"Block","src":"5152:85:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"5175:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5189:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":764,"name":"uint256","nodeType":"ElementaryTypeName","src":"5189:7:11","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":763,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5184:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5184:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"5184:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5175:26:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":761,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5167:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5167:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":770,"nodeType":"ExpressionStatement","src":"5167:35:11"},{"expression":{"id":772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5217:8:11","subExpression":{"id":771,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"5217:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":773,"nodeType":"ExpressionStatement","src":"5217:8:11"}]}}]},"documentation":{"id":735,"nodeType":"StructuredDocumentation","src":"4638:275:11","text":"@notice Calculates ceil(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @param a The multiplicand\n @param b The multiplier\n @param denominator The divisor\n @return result The 256-bit result"},"id":777,"implemented":true,"kind":"function","modifiers":[],"name":"mulDivRoundingUp","nodeType":"FunctionDefinition","parameters":{"id":742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":737,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":777,"src":"4955:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":736,"name":"uint256","nodeType":"ElementaryTypeName","src":"4955:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":739,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":777,"src":"4975:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":738,"name":"uint256","nodeType":"ElementaryTypeName","src":"4975:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":741,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":777,"src":"4995:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":740,"name":"uint256","nodeType":"ElementaryTypeName","src":"4995:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4944:77:11"},"returnParameters":{"id":745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":777,"src":"5045:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":743,"name":"uint256","nodeType":"ElementaryTypeName","src":"5045:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5044:16:11"},"scope":778,"src":"4919:325:11","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":779,"src":"368:4879:11"}],"src":"33:5216:11"},"id":11},"contracts/elixir-core/libraries/TickMath.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","exportedSymbols":{"TickMath":[1313]},"id":1314,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":780,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:12"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":781,"nodeType":"StructuredDocumentation","src":"81:238:12","text":"@title Math library for computing sqrt prices from ticks and vice versa\n @notice Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports\n prices between 2**-128 and 2**128"},"fullyImplemented":true,"id":1313,"linearizedBaseContracts":[1313],"name":"TickMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":782,"nodeType":"StructuredDocumentation","src":"343:108:12","text":"@dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128"},"id":786,"mutability":"constant","name":"MIN_TICK","nodeType":"VariableDeclaration","scope":1313,"src":"457:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":783,"name":"int24","nodeType":"ElementaryTypeName","src":"457:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"id":785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"492:7:12","subExpression":{"hexValue":"383837323732","id":784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"493:6:12","typeDescriptions":{"typeIdentifier":"t_rational_887272_by_1","typeString":"int_const 887272"},"value":"887272"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_887272_by_1","typeString":"int_const -887272"}},"visibility":"internal"},{"constant":true,"documentation":{"id":787,"nodeType":"StructuredDocumentation","src":"506:107:12","text":"@dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128"},"id":791,"mutability":"constant","name":"MAX_TICK","nodeType":"VariableDeclaration","scope":1313,"src":"619:44:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":788,"name":"int24","nodeType":"ElementaryTypeName","src":"619:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"id":790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"654:9:12","subExpression":{"id":789,"name":"MIN_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"655:8:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":true,"documentation":{"id":792,"nodeType":"StructuredDocumentation","src":"672:116:12","text":"@dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)"},"id":795,"mutability":"constant","name":"MIN_SQRT_RATIO","nodeType":"VariableDeclaration","scope":1313,"src":"794:53:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":793,"name":"uint160","nodeType":"ElementaryTypeName","src":"794:7:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"34323935313238373339","id":794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"837:10:12","typeDescriptions":{"typeIdentifier":"t_rational_4295128739_by_1","typeString":"int_const 4295128739"},"value":"4295128739"},"visibility":"internal"},{"constant":true,"documentation":{"id":796,"nodeType":"StructuredDocumentation","src":"854:116:12","text":"@dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)"},"id":799,"mutability":"constant","name":"MAX_SQRT_RATIO","nodeType":"VariableDeclaration","scope":1313,"src":"976:92:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":797,"name":"uint160","nodeType":"ElementaryTypeName","src":"976:7:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432","id":798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1019:49:12","typeDescriptions":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822378723970342_by_1","typeString":"int_const 1461...(41 digits omitted)...0342"},"value":"1461446703485210103287273052203988822378723970342"},"visibility":"internal"},{"body":{"id":1172,"nodeType":"Block","src":"1469:2526:12","statements":[{"assignments":[808],"declarations":[{"constant":false,"id":808,"mutability":"mutable","name":"absTick","nodeType":"VariableDeclaration","scope":1172,"src":"1480:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":807,"name":"uint256","nodeType":"ElementaryTypeName","src":"1480:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":809,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":802,"src":"1498:4:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1505:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1498:8:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":824,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":802,"src":"1549:4:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1542:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":822,"name":"int256","nodeType":"ElementaryTypeName","src":"1542:6:12","typeDescriptions":{}}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1542:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1534:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":820,"name":"uint256","nodeType":"ElementaryTypeName","src":"1534:7:12","typeDescriptions":{}}},"id":826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1534:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1498:57:12","trueExpression":{"arguments":[{"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1517:13:12","subExpression":{"arguments":[{"id":816,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":802,"src":"1525:4:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1518:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":814,"name":"int256","nodeType":"ElementaryTypeName","src":"1518:6:12","typeDescriptions":{}}},"id":817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1518:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1509:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":812,"name":"uint256","nodeType":"ElementaryTypeName","src":"1509:7:12","typeDescriptions":{}}},"id":819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1509:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1480:75:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":830,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"1574:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":833,"name":"MAX_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"1593:8:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1585:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":831,"name":"uint256","nodeType":"ElementaryTypeName","src":"1585:7:12","typeDescriptions":{}}},"id":834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1585:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1574:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"54","id":836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1604:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc","typeString":"literal_string \"T\""},"value":"T"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc","typeString":"literal_string \"T\""}],"id":829,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1566:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1566:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":838,"nodeType":"ExpressionStatement","src":"1566:42:12"},{"assignments":[840],"declarations":[{"constant":false,"id":840,"mutability":"mutable","name":"ratio","nodeType":"VariableDeclaration","scope":1172,"src":"1621:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":839,"name":"uint256","nodeType":"ElementaryTypeName","src":"1621:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":849,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":841,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"1637:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831","id":842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:3:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x1"},"src":"1637:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1654:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1637:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1695:35:12","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1637:93:12","trueExpression":{"hexValue":"30786666666362393333626436666164333761613264313632643161353934303031","id":846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1658:34:12","typeDescriptions":{"typeIdentifier":"t_rational_340265354078544963557816517032075149313_by_1","typeString":"int_const 3402...(31 digits omitted)...9313"},"value":"0xfffcb933bd6fad37aa2d162d1a594001"},"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"nodeType":"VariableDeclarationStatement","src":"1621:109:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":850,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"1745:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307832","id":851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1755:3:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x2"},"src":"1745:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1762:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1745:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":864,"nodeType":"IfStatement","src":"1741:83:12","trueBody":{"expression":{"id":862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":855,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"1765:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":856,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"1774:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666663937323732333733643431333235396134363939303538306532313361","id":857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1782:34:12","typeDescriptions":{"typeIdentifier":"t_rational_340248342086729790484326174814286782778_by_1","typeString":"int_const 3402...(31 digits omitted)...2778"},"value":"0xfff97272373d413259a46990580e213a"},"src":"1774:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":859,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1773:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1821:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1773:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1765:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":863,"nodeType":"ExpressionStatement","src":"1765:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":865,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"1839:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307834","id":866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1849:3:12","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"src":"1839:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1839:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":879,"nodeType":"IfStatement","src":"1835:83:12","trueBody":{"expression":{"id":877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":870,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"1859:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":871,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"1868:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666663265353066356636353639333265663132333537636633633766646363","id":872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1876:34:12","typeDescriptions":{"typeIdentifier":"t_rational_340214320654664324051920982716015181260_by_1","typeString":"int_const 3402...(31 digits omitted)...1260"},"value":"0xfff2e50f5f656932ef12357cf3c7fdcc"},"src":"1868:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":874,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1867:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1915:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1867:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":878,"nodeType":"ExpressionStatement","src":"1859:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":880,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"1933:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307838","id":881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1943:3:12","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x8"},"src":"1933:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1950:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1933:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":894,"nodeType":"IfStatement","src":"1929:83:12","trueBody":{"expression":{"id":892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":885,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"1953:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":886,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"1962:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666653563616361376531306534653631633336323465616130393431636430","id":887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1970:34:12","typeDescriptions":{"typeIdentifier":"t_rational_340146287995602323631171512101879684304_by_1","typeString":"int_const 3401...(31 digits omitted)...4304"},"value":"0xffe5caca7e10e4e61c3624eaa0941cd0"},"src":"1962:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":889,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1961:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2009:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1961:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1953:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":893,"nodeType":"ExpressionStatement","src":"1953:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":895,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2027:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2037:4:12","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"2027:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2045:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2027:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":909,"nodeType":"IfStatement","src":"2023:84:12","trueBody":{"expression":{"id":907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":900,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2048:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":901,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2057:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666636239383433643630663631353963396462353838333563393236363434","id":902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2065:34:12","typeDescriptions":{"typeIdentifier":"t_rational_340010263488231146823593991679159461444_by_1","typeString":"int_const 3400...(31 digits omitted)...1444"},"value":"0xffcb9843d60f6159c9db58835c926644"},"src":"2057:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2056:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2104:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2056:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2048:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":908,"nodeType":"ExpressionStatement","src":"2048:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":910,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2122:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2132:4:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"2122:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2140:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2122:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":924,"nodeType":"IfStatement","src":"2118:84:12","trueBody":{"expression":{"id":922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":915,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2143:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":916,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2152:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666393733623431666139386330383134373265363839366466623235346330","id":917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2160:34:12","typeDescriptions":{"typeIdentifier":"t_rational_339738377640345403697157401104375502016_by_1","typeString":"int_const 3397...(31 digits omitted)...2016"},"value":"0xff973b41fa98c081472e6896dfb254c0"},"src":"2152:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":919,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2151:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2199:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2151:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2143:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":923,"nodeType":"ExpressionStatement","src":"2143:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":925,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2217:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430","id":926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2227:4:12","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"src":"2217:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2235:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2217:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":939,"nodeType":"IfStatement","src":"2213:84:12","trueBody":{"expression":{"id":937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":930,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2238:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":931,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2247:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666326561313634363663393661333834336563373862333236623532383631","id":932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2255:34:12","typeDescriptions":{"typeIdentifier":"t_rational_339195258003219555707034227454543997025_by_1","typeString":"int_const 3391...(31 digits omitted)...7025"},"value":"0xff2ea16466c96a3843ec78b326b52861"},"src":"2247:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":934,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2246:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2294:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2246:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":938,"nodeType":"ExpressionStatement","src":"2238:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":940,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2312:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830","id":941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2322:4:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"src":"2312:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2330:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2312:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":954,"nodeType":"IfStatement","src":"2308:84:12","trueBody":{"expression":{"id":952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":945,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2333:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":946,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2342:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786665356465653034366139396132613831316334363166313936396333303533","id":947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:34:12","typeDescriptions":{"typeIdentifier":"t_rational_338111622100601834656805679988414885971_by_1","typeString":"int_const 3381...(31 digits omitted)...5971"},"value":"0xfe5dee046a99a2a811c461f1969c3053"},"src":"2342:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":949,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2341:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2389:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2341:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2333:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":953,"nodeType":"ExpressionStatement","src":"2333:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":955,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2407:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078313030","id":956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2417:5:12","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"src":"2407:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2426:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2407:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":969,"nodeType":"IfStatement","src":"2403:85:12","trueBody":{"expression":{"id":967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":960,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2429:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":961,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2438:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786663626538366337393030613838616564636666633833623437396161336134","id":962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2446:34:12","typeDescriptions":{"typeIdentifier":"t_rational_335954724994790223023589805789778977700_by_1","typeString":"int_const 3359...(31 digits omitted)...7700"},"value":"0xfcbe86c7900a88aedcffc83b479aa3a4"},"src":"2438:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":964,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2437:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2485:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2437:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2429:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":968,"nodeType":"ExpressionStatement","src":"2429:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":970,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2503:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078323030","id":971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2513:5:12","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"src":"2503:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2522:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2503:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":984,"nodeType":"IfStatement","src":"2499:85:12","trueBody":{"expression":{"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":975,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2525:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":976,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2534:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786639383761373235336163343133313736663262303734636637383135653534","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2542:34:12","typeDescriptions":{"typeIdentifier":"t_rational_331682121138379247127172139078559817300_by_1","typeString":"int_const 3316...(31 digits omitted)...7300"},"value":"0xf987a7253ac413176f2b074cf7815e54"},"src":"2534:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2533:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2581:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2533:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2525:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":983,"nodeType":"ExpressionStatement","src":"2525:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":985,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2599:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078343030","id":986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2609:5:12","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"},"value":"0x400"},"src":"2599:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2618:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2599:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":999,"nodeType":"IfStatement","src":"2595:85:12","trueBody":{"expression":{"id":997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":990,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2621:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":991,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2630:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786633333932623038323262373030303539343063376133393865346237306633","id":992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2638:34:12","typeDescriptions":{"typeIdentifier":"t_rational_323299236684853023288211250268160618739_by_1","typeString":"int_const 3232...(31 digits omitted)...8739"},"value":"0xf3392b0822b70005940c7a398e4b70f3"},"src":"2630:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":994,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2629:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2677:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2629:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2621:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":998,"nodeType":"ExpressionStatement","src":"2621:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1000,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2695:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078383030","id":1001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2705:5:12","typeDescriptions":{"typeIdentifier":"t_rational_2048_by_1","typeString":"int_const 2048"},"value":"0x800"},"src":"2695:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2695:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1014,"nodeType":"IfStatement","src":"2691:85:12","trueBody":{"expression":{"id":1012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1005,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2717:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1006,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2726:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786537313539343735613263323962373434336232396337666136653838396439","id":1007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2734:34:12","typeDescriptions":{"typeIdentifier":"t_rational_307163716377032989948697243942600083929_by_1","typeString":"int_const 3071...(31 digits omitted)...3929"},"value":"0xe7159475a2c29b7443b29c7fa6e889d9"},"src":"2726:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1009,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2725:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2773:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2725:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2717:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1013,"nodeType":"ExpressionStatement","src":"2717:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1015,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2791:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831303030","id":1016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2801:6:12","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"},"value":"0x1000"},"src":"2791:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2811:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2791:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"2787:86:12","trueBody":{"expression":{"id":1027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1020,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2814:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1021,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2823:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786430393766336264666432303232623838343561643866373932616135383235","id":1022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2831:34:12","typeDescriptions":{"typeIdentifier":"t_rational_277268403626896220162999269216087595045_by_1","typeString":"int_const 2772...(31 digits omitted)...5045"},"value":"0xd097f3bdfd2022b8845ad8f792aa5825"},"src":"2823:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1024,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2822:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2870:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2822:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2814:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1028,"nodeType":"ExpressionStatement","src":"2814:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2888:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307832303030","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2898:6:12","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"},"value":"0x2000"},"src":"2888:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2908:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2888:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1044,"nodeType":"IfStatement","src":"2884:86:12","trueBody":{"expression":{"id":1042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2911:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1036,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2920:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786139663734363436326438373066646638613635646331663930653036316535","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2928:34:12","typeDescriptions":{"typeIdentifier":"t_rational_225923453940442621947126027127485391333_by_1","typeString":"int_const 2259...(31 digits omitted)...1333"},"value":"0xa9f746462d870fdf8a65dc1f90e061e5"},"src":"2920:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1039,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2919:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2967:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2919:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2911:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1043,"nodeType":"ExpressionStatement","src":"2911:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1045,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2985:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307834303030","id":1046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2995:6:12","typeDescriptions":{"typeIdentifier":"t_rational_16384_by_1","typeString":"int_const 16384"},"value":"0x4000"},"src":"2985:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3005:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2985:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1059,"nodeType":"IfStatement","src":"2981:86:12","trueBody":{"expression":{"id":1057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1050,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3008:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1051,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3017:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783730643836396131353664326131623839306262336466363262616633326637","id":1052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3025:34:12","typeDescriptions":{"typeIdentifier":"t_rational_149997214084966997727330242082538205943_by_1","typeString":"int_const 1499...(31 digits omitted)...5943"},"value":"0x70d869a156d2a1b890bb3df62baf32f7"},"src":"3017:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1054,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3016:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3064:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3016:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3008:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1058,"nodeType":"ExpressionStatement","src":"3008:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1060,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"3082:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307838303030","id":1061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3092:6:12","typeDescriptions":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"},"value":"0x8000"},"src":"3082:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3102:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3082:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1074,"nodeType":"IfStatement","src":"3078:86:12","trueBody":{"expression":{"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1065,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3105:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1066,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3114:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783331626531333566393764303866643938313233313530353534326663666136","id":1067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3122:34:12","typeDescriptions":{"typeIdentifier":"t_rational_66119101136024775622716233608466517926_by_1","typeString":"int_const 6611...(30 digits omitted)...7926"},"value":"0x31be135f97d08fd981231505542fcfa6"},"src":"3114:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1069,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3113:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3161:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3113:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3105:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1073,"nodeType":"ExpressionStatement","src":"3105:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1075,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"3179:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130303030","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3189:7:12","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"value":"0x10000"},"src":"3179:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3200:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3179:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1089,"nodeType":"IfStatement","src":"3175:86:12","trueBody":{"expression":{"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1080,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3203:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3212:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"307839616135303862356237613834653163363737646535346633653939626339","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3220:33:12","typeDescriptions":{"typeIdentifier":"t_rational_12847376061809297530290974190478138313_by_1","typeString":"int_const 1284...(30 digits omitted)...8313"},"value":"0x9aa508b5b7a84e1c677de54f3e99bc9"},"src":"3212:41:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1084,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3211:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3258:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3211:50:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3203:58:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1088,"nodeType":"ExpressionStatement","src":"3203:58:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1090,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"3276:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230303030","id":1091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3286:7:12","typeDescriptions":{"typeIdentifier":"t_rational_131072_by_1","typeString":"int_const 131072"},"value":"0x20000"},"src":"3276:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3297:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3276:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1104,"nodeType":"IfStatement","src":"3272:85:12","trueBody":{"expression":{"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1095,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3300:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1096,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3309:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3078356436616638646564623831313936363939633332393232356565363034","id":1097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3317:32:12","typeDescriptions":{"typeIdentifier":"t_rational_485053260817066172746253684029974020_by_1","typeString":"int_const 4850...(28 digits omitted)...4020"},"value":"0x5d6af8dedb81196699c329225ee604"},"src":"3309:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1099,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3308:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3354:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3308:49:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3300:57:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1103,"nodeType":"ExpressionStatement","src":"3300:57:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1105,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"3372:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430303030","id":1106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3382:7:12","typeDescriptions":{"typeIdentifier":"t_rational_262144_by_1","typeString":"int_const 262144"},"value":"0x40000"},"src":"3372:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3393:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3372:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1119,"nodeType":"IfStatement","src":"3368:83:12","trueBody":{"expression":{"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1110,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3396:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1111,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3405:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"307832323136653538346635666131656139323630343162656466653938","id":1112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3413:30:12","typeDescriptions":{"typeIdentifier":"t_rational_691415978906521570653435304214168_by_1","typeString":"int_const 6914...(25 digits omitted)...4168"},"value":"0x2216e584f5fa1ea926041bedfe98"},"src":"3405:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3404:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3448:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3404:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3396:55:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1118,"nodeType":"ExpressionStatement","src":"3396:55:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1120,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"3466:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830303030","id":1121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3476:7:12","typeDescriptions":{"typeIdentifier":"t_rational_524288_by_1","typeString":"int_const 524288"},"value":"0x80000"},"src":"3466:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3487:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3466:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1134,"nodeType":"IfStatement","src":"3462:78:12","trueBody":{"expression":{"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1125,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3490:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1126,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3499:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783438613137303339316637646334323434346538666132","id":1127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3507:25:12","typeDescriptions":{"typeIdentifier":"t_rational_1404880482679654955896180642_by_1","typeString":"int_const 1404880482679654955896180642"},"value":"0x48a170391f7dc42444e8fa2"},"src":"3499:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1129,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3498:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3537:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3498:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3490:50:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1133,"nodeType":"ExpressionStatement","src":"3490:50:12"}},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1135,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":802,"src":"3557:4:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3564:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3557:8:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1148,"nodeType":"IfStatement","src":"3553:47:12","trueBody":{"expression":{"id":1146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1138,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3567:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3580:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1140,"name":"uint256","nodeType":"ElementaryTypeName","src":"3580:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1139,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3575:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3575:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3575:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1144,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3595:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3575:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3567:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1147,"nodeType":"ExpressionStatement","src":"3567:33:12"}},{"expression":{"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1149,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":805,"src":"3915:12:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1152,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3939:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3948:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3939:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1155,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3938:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1156,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3955:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":1159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3964:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3969:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3964:7:12","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":1160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3963:9:12","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"3955:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3976:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3955:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"31","id":1165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3984:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"id":1166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3955:30:12","trueExpression":{"hexValue":"30","id":1164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3980:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1167,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3954:32:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3938:48:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3930:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1150,"name":"uint160","nodeType":"ElementaryTypeName","src":"3930:7:12","typeDescriptions":{}}},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3915:72:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":1171,"nodeType":"ExpressionStatement","src":"3915:72:12"}]},"documentation":{"id":800,"nodeType":"StructuredDocumentation","src":"1077:301:12","text":"@notice Calculates sqrt(1.0001^tick) * 2^96\n @dev Throws if |tick| > max tick\n @param tick The input tick for the above formula\n @return sqrtPriceX96 A Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\n at the given tick"},"id":1173,"implemented":true,"kind":"function","modifiers":[],"name":"getSqrtRatioAtTick","nodeType":"FunctionDefinition","parameters":{"id":803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":802,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1173,"src":"1412:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":801,"name":"int24","nodeType":"ElementaryTypeName","src":"1412:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1411:12:12"},"returnParameters":{"id":806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":805,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":1173,"src":"1447:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":804,"name":"uint160","nodeType":"ElementaryTypeName","src":"1447:7:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1446:22:12"},"scope":1313,"src":"1384:2611:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1311,"nodeType":"Block","src":"4506:4339:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1182,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"4625:12:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1183,"name":"MIN_SQRT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":795,"src":"4641:14:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4625:30:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1185,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"4659:12:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1186,"name":"MAX_SQRT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"4674:14:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4659:29:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4625:63:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52","id":1189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4690:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef22bddd350b943170a67d35191c27e310709a28c38b5762a152ff640108f5b2","typeString":"literal_string \"R\""},"value":"R"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef22bddd350b943170a67d35191c27e310709a28c38b5762a152ff640108f5b2","typeString":"literal_string \"R\""}],"id":1181,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4617:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4617:77:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1191,"nodeType":"ExpressionStatement","src":"4617:77:12"},{"assignments":[1193],"declarations":[{"constant":false,"id":1193,"mutability":"mutable","name":"ratio","nodeType":"VariableDeclaration","scope":1311,"src":"4705:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1192,"name":"uint256","nodeType":"ElementaryTypeName","src":"4705:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1200,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1196,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"4729:12:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4721:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1194,"name":"uint256","nodeType":"ElementaryTypeName","src":"4721:7:12","typeDescriptions":{}}},"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4721:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":1198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4746:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"4721:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4705:43:12"},{"assignments":[1202],"declarations":[{"constant":false,"id":1202,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":1311,"src":"4761:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1201,"name":"uint256","nodeType":"ElementaryTypeName","src":"4761:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1204,"initialValue":{"id":1203,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"4773:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4761:17:12"},{"assignments":[1206],"declarations":[{"constant":false,"id":1206,"mutability":"mutable","name":"msb","nodeType":"VariableDeclaration","scope":1311,"src":"4789:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1205,"name":"uint256","nodeType":"ElementaryTypeName","src":"4789:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1208,"initialValue":{"hexValue":"30","id":1207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4803:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4789:15:12"},{"AST":{"nodeType":"YulBlock","src":"4826:143:12","statements":[{"nodeType":"YulVariableDeclaration","src":"4841:58:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4854:1:12","type":"","value":"7"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"4860:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"4863:34:12","type":"","value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4857:2:12"},"nodeType":"YulFunctionCall","src":"4857:41:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4850:3:12"},"nodeType":"YulFunctionCall","src":"4850:49:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"4845:1:12","type":""}]},{"nodeType":"YulAssignment","src":"4913:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"4923:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"4928:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4920:2:12"},"nodeType":"YulFunctionCall","src":"4920:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"4913:3:12"}]},{"nodeType":"YulAssignment","src":"4944:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"4953:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"4956:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4949:3:12"},"nodeType":"YulFunctionCall","src":"4949:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"4944:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1206,"isOffset":false,"isSlot":false,"src":"4913:3:12","valueSize":1},{"declaration":1206,"isOffset":false,"isSlot":false,"src":"4923:3:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"4860:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"4944:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"4956:1:12","valueSize":1}],"id":1209,"nodeType":"InlineAssembly","src":"4817:152:12"},{"AST":{"nodeType":"YulBlock","src":"4988:127:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5003:42:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5016:1:12","type":"","value":"6"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5022:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5025:18:12","type":"","value":"0xFFFFFFFFFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5019:2:12"},"nodeType":"YulFunctionCall","src":"5019:25:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5012:3:12"},"nodeType":"YulFunctionCall","src":"5012:33:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5007:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5059:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5069:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5074:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5066:2:12"},"nodeType":"YulFunctionCall","src":"5066:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5059:3:12"}]},{"nodeType":"YulAssignment","src":"5090:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5099:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5102:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5095:3:12"},"nodeType":"YulFunctionCall","src":"5095:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5090:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5059:3:12","valueSize":1},{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5069:3:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5022:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5090:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5102:1:12","valueSize":1}],"id":1210,"nodeType":"InlineAssembly","src":"4979:136:12"},{"AST":{"nodeType":"YulBlock","src":"5134:119:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5149:34:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5162:1:12","type":"","value":"5"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5168:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5171:10:12","type":"","value":"0xFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5165:2:12"},"nodeType":"YulFunctionCall","src":"5165:17:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5158:3:12"},"nodeType":"YulFunctionCall","src":"5158:25:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5153:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5197:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5207:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5212:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5204:2:12"},"nodeType":"YulFunctionCall","src":"5204:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5197:3:12"}]},{"nodeType":"YulAssignment","src":"5228:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5237:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5240:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5233:3:12"},"nodeType":"YulFunctionCall","src":"5233:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5228:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5197:3:12","valueSize":1},{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5207:3:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5168:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5228:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5240:1:12","valueSize":1}],"id":1211,"nodeType":"InlineAssembly","src":"5125:128:12"},{"AST":{"nodeType":"YulBlock","src":"5272:115:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5287:30:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5300:1:12","type":"","value":"4"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5306:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5309:6:12","type":"","value":"0xFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5303:2:12"},"nodeType":"YulFunctionCall","src":"5303:13:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5296:3:12"},"nodeType":"YulFunctionCall","src":"5296:21:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5291:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5331:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5341:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5346:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5338:2:12"},"nodeType":"YulFunctionCall","src":"5338:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5331:3:12"}]},{"nodeType":"YulAssignment","src":"5362:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5371:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5374:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5367:3:12"},"nodeType":"YulFunctionCall","src":"5367:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5362:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5331:3:12","valueSize":1},{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5341:3:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5306:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5362:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5374:1:12","valueSize":1}],"id":1212,"nodeType":"InlineAssembly","src":"5263:124:12"},{"AST":{"nodeType":"YulBlock","src":"5406:113:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5421:28:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5434:1:12","type":"","value":"3"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5440:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5443:4:12","type":"","value":"0xFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5437:2:12"},"nodeType":"YulFunctionCall","src":"5437:11:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5430:3:12"},"nodeType":"YulFunctionCall","src":"5430:19:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5425:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5463:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5473:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5478:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5470:2:12"},"nodeType":"YulFunctionCall","src":"5470:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5463:3:12"}]},{"nodeType":"YulAssignment","src":"5494:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5503:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5506:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5499:3:12"},"nodeType":"YulFunctionCall","src":"5499:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5494:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5463:3:12","valueSize":1},{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5473:3:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5440:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5494:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5506:1:12","valueSize":1}],"id":1213,"nodeType":"InlineAssembly","src":"5397:122:12"},{"AST":{"nodeType":"YulBlock","src":"5538:112:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5553:27:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5566:1:12","type":"","value":"2"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5572:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5575:3:12","type":"","value":"0xF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5569:2:12"},"nodeType":"YulFunctionCall","src":"5569:10:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5562:3:12"},"nodeType":"YulFunctionCall","src":"5562:18:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5557:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5594:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5604:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5609:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5601:2:12"},"nodeType":"YulFunctionCall","src":"5601:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5594:3:12"}]},{"nodeType":"YulAssignment","src":"5625:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5634:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5637:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5630:3:12"},"nodeType":"YulFunctionCall","src":"5630:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5625:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5594:3:12","valueSize":1},{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5604:3:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5572:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5625:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5637:1:12","valueSize":1}],"id":1214,"nodeType":"InlineAssembly","src":"5529:121:12"},{"AST":{"nodeType":"YulBlock","src":"5669:112:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5684:27:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5697:1:12","type":"","value":"1"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5703:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5706:3:12","type":"","value":"0x3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5700:2:12"},"nodeType":"YulFunctionCall","src":"5700:10:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5693:3:12"},"nodeType":"YulFunctionCall","src":"5693:18:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5688:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5725:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5735:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5740:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5732:2:12"},"nodeType":"YulFunctionCall","src":"5732:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5725:3:12"}]},{"nodeType":"YulAssignment","src":"5756:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5765:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5768:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5761:3:12"},"nodeType":"YulFunctionCall","src":"5761:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5756:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5725:3:12","valueSize":1},{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5735:3:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5703:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5756:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5768:1:12","valueSize":1}],"id":1215,"nodeType":"InlineAssembly","src":"5660:121:12"},{"AST":{"nodeType":"YulBlock","src":"5800:76:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5815:19:12","value":{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5827:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5830:3:12","type":"","value":"0x1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5824:2:12"},"nodeType":"YulFunctionCall","src":"5824:10:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5819:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5848:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5858:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5863:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5855:2:12"},"nodeType":"YulFunctionCall","src":"5855:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5848:3:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5848:3:12","valueSize":1},{"declaration":1206,"isOffset":false,"isSlot":false,"src":"5858:3:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"5827:1:12","valueSize":1}],"id":1216,"nodeType":"InlineAssembly","src":"5791:85:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1217,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5892:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"313238","id":1218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5899:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5892:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1229,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"5944:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1230,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"5948:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313237","id":1231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5958:3:12","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1232,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5964:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5958:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1234,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5957:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5948:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5944:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1237,"nodeType":"ExpressionStatement","src":"5944:24:12"},"id":1238,"nodeType":"IfStatement","src":"5888:80:12","trueBody":{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1220,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"5904:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1221,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"5908:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1222,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5918:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"313237","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5924:3:12","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"src":"5918:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1225,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5917:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5908:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5904:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"5904:24:12"}},{"assignments":[1240],"declarations":[{"constant":false,"id":1240,"mutability":"mutable","name":"log_2","nodeType":"VariableDeclaration","scope":1311,"src":"5981:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1239,"name":"int256","nodeType":"ElementaryTypeName","src":"5981:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1250,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1243,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"6004:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5997:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1241,"name":"int256","nodeType":"ElementaryTypeName","src":"5997:6:12","typeDescriptions":{}}},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5997:11:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"313238","id":1245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6011:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5997:17:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1247,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5996:19:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":1248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6019:2:12","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"5996:25:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5981:40:12"},{"AST":{"nodeType":"YulBlock","src":"6043:156:12","statements":[{"nodeType":"YulAssignment","src":"6058:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6067:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6076:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6079:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6072:3:12"},"nodeType":"YulFunctionCall","src":"6072:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6063:3:12"},"nodeType":"YulFunctionCall","src":"6063:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6058:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6096:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6109:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6114:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6105:3:12"},"nodeType":"YulFunctionCall","src":"6105:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6100:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6130:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6142:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6153:2:12","type":"","value":"63"},{"name":"f","nodeType":"YulIdentifier","src":"6157:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6149:3:12"},"nodeType":"YulFunctionCall","src":"6149:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6139:2:12"},"nodeType":"YulFunctionCall","src":"6139:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6130:5:12"}]},{"nodeType":"YulAssignment","src":"6174:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6183:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6186:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6179:3:12"},"nodeType":"YulFunctionCall","src":"6179:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6174:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"6130:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"6142:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6058:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6076:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6079:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6114:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6174:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6186:1:12","valueSize":1}],"id":1251,"nodeType":"InlineAssembly","src":"6034:165:12"},{"AST":{"nodeType":"YulBlock","src":"6218:156:12","statements":[{"nodeType":"YulAssignment","src":"6233:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6242:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6251:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6254:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6247:3:12"},"nodeType":"YulFunctionCall","src":"6247:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6238:3:12"},"nodeType":"YulFunctionCall","src":"6238:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6233:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6271:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6284:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6289:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6280:3:12"},"nodeType":"YulFunctionCall","src":"6280:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6275:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6305:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6317:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6328:2:12","type":"","value":"62"},{"name":"f","nodeType":"YulIdentifier","src":"6332:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6324:3:12"},"nodeType":"YulFunctionCall","src":"6324:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6314:2:12"},"nodeType":"YulFunctionCall","src":"6314:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6305:5:12"}]},{"nodeType":"YulAssignment","src":"6349:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6358:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6361:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6354:3:12"},"nodeType":"YulFunctionCall","src":"6354:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6349:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"6305:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"6317:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6233:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6251:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6254:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6289:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6349:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6361:1:12","valueSize":1}],"id":1252,"nodeType":"InlineAssembly","src":"6209:165:12"},{"AST":{"nodeType":"YulBlock","src":"6393:156:12","statements":[{"nodeType":"YulAssignment","src":"6408:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6417:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6426:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6429:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6422:3:12"},"nodeType":"YulFunctionCall","src":"6422:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6413:3:12"},"nodeType":"YulFunctionCall","src":"6413:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6408:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6446:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6459:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6464:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6455:3:12"},"nodeType":"YulFunctionCall","src":"6455:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6450:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6480:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6492:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6503:2:12","type":"","value":"61"},{"name":"f","nodeType":"YulIdentifier","src":"6507:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6499:3:12"},"nodeType":"YulFunctionCall","src":"6499:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6489:2:12"},"nodeType":"YulFunctionCall","src":"6489:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6480:5:12"}]},{"nodeType":"YulAssignment","src":"6524:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6533:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6536:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6529:3:12"},"nodeType":"YulFunctionCall","src":"6529:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6524:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"6480:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"6492:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6408:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6426:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6429:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6464:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6524:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6536:1:12","valueSize":1}],"id":1253,"nodeType":"InlineAssembly","src":"6384:165:12"},{"AST":{"nodeType":"YulBlock","src":"6568:156:12","statements":[{"nodeType":"YulAssignment","src":"6583:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6592:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6601:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6604:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6597:3:12"},"nodeType":"YulFunctionCall","src":"6597:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6588:3:12"},"nodeType":"YulFunctionCall","src":"6588:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6583:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6621:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6634:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6639:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6630:3:12"},"nodeType":"YulFunctionCall","src":"6630:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6625:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6655:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6667:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6678:2:12","type":"","value":"60"},{"name":"f","nodeType":"YulIdentifier","src":"6682:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6674:3:12"},"nodeType":"YulFunctionCall","src":"6674:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6664:2:12"},"nodeType":"YulFunctionCall","src":"6664:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6655:5:12"}]},{"nodeType":"YulAssignment","src":"6699:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6708:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6711:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6704:3:12"},"nodeType":"YulFunctionCall","src":"6704:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6699:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"6655:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"6667:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6583:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6601:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6604:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6639:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6699:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6711:1:12","valueSize":1}],"id":1254,"nodeType":"InlineAssembly","src":"6559:165:12"},{"AST":{"nodeType":"YulBlock","src":"6743:156:12","statements":[{"nodeType":"YulAssignment","src":"6758:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6767:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6776:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6779:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6772:3:12"},"nodeType":"YulFunctionCall","src":"6772:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6763:3:12"},"nodeType":"YulFunctionCall","src":"6763:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6758:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6796:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6809:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6814:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6805:3:12"},"nodeType":"YulFunctionCall","src":"6805:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6800:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6830:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6842:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6853:2:12","type":"","value":"59"},{"name":"f","nodeType":"YulIdentifier","src":"6857:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6849:3:12"},"nodeType":"YulFunctionCall","src":"6849:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6839:2:12"},"nodeType":"YulFunctionCall","src":"6839:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6830:5:12"}]},{"nodeType":"YulAssignment","src":"6874:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6883:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6886:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6879:3:12"},"nodeType":"YulFunctionCall","src":"6879:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6874:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"6830:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"6842:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6758:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6776:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6779:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6814:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6874:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6886:1:12","valueSize":1}],"id":1255,"nodeType":"InlineAssembly","src":"6734:165:12"},{"AST":{"nodeType":"YulBlock","src":"6918:156:12","statements":[{"nodeType":"YulAssignment","src":"6933:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6942:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6951:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6954:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6947:3:12"},"nodeType":"YulFunctionCall","src":"6947:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6938:3:12"},"nodeType":"YulFunctionCall","src":"6938:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6933:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6971:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6984:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6989:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6980:3:12"},"nodeType":"YulFunctionCall","src":"6980:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6975:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7005:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7017:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7028:2:12","type":"","value":"58"},{"name":"f","nodeType":"YulIdentifier","src":"7032:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7024:3:12"},"nodeType":"YulFunctionCall","src":"7024:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7014:2:12"},"nodeType":"YulFunctionCall","src":"7014:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7005:5:12"}]},{"nodeType":"YulAssignment","src":"7049:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7058:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7061:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7054:3:12"},"nodeType":"YulFunctionCall","src":"7054:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7049:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7005:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7017:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6933:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6951:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6954:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"6989:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7049:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7061:1:12","valueSize":1}],"id":1256,"nodeType":"InlineAssembly","src":"6909:165:12"},{"AST":{"nodeType":"YulBlock","src":"7093:156:12","statements":[{"nodeType":"YulAssignment","src":"7108:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7117:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7126:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7129:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7122:3:12"},"nodeType":"YulFunctionCall","src":"7122:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7113:3:12"},"nodeType":"YulFunctionCall","src":"7113:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7108:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"7146:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7159:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7164:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7155:3:12"},"nodeType":"YulFunctionCall","src":"7155:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7150:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7180:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7192:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7203:2:12","type":"","value":"57"},{"name":"f","nodeType":"YulIdentifier","src":"7207:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7199:3:12"},"nodeType":"YulFunctionCall","src":"7199:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7189:2:12"},"nodeType":"YulFunctionCall","src":"7189:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7180:5:12"}]},{"nodeType":"YulAssignment","src":"7224:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7233:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7236:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7229:3:12"},"nodeType":"YulFunctionCall","src":"7229:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7224:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7180:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7192:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7108:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7126:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7129:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7164:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7224:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7236:1:12","valueSize":1}],"id":1257,"nodeType":"InlineAssembly","src":"7084:165:12"},{"AST":{"nodeType":"YulBlock","src":"7268:156:12","statements":[{"nodeType":"YulAssignment","src":"7283:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7292:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7301:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7304:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7297:3:12"},"nodeType":"YulFunctionCall","src":"7297:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7288:3:12"},"nodeType":"YulFunctionCall","src":"7288:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7283:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"7321:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7334:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7339:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7330:3:12"},"nodeType":"YulFunctionCall","src":"7330:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7325:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7355:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7367:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7378:2:12","type":"","value":"56"},{"name":"f","nodeType":"YulIdentifier","src":"7382:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7374:3:12"},"nodeType":"YulFunctionCall","src":"7374:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7364:2:12"},"nodeType":"YulFunctionCall","src":"7364:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7355:5:12"}]},{"nodeType":"YulAssignment","src":"7399:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7408:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7411:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7404:3:12"},"nodeType":"YulFunctionCall","src":"7404:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7399:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7355:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7367:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7283:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7301:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7304:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7339:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7399:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7411:1:12","valueSize":1}],"id":1258,"nodeType":"InlineAssembly","src":"7259:165:12"},{"AST":{"nodeType":"YulBlock","src":"7443:156:12","statements":[{"nodeType":"YulAssignment","src":"7458:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7467:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7476:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7479:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7472:3:12"},"nodeType":"YulFunctionCall","src":"7472:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7463:3:12"},"nodeType":"YulFunctionCall","src":"7463:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7458:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"7496:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7509:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7514:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7505:3:12"},"nodeType":"YulFunctionCall","src":"7505:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7500:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7530:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7542:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7553:2:12","type":"","value":"55"},{"name":"f","nodeType":"YulIdentifier","src":"7557:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7549:3:12"},"nodeType":"YulFunctionCall","src":"7549:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7539:2:12"},"nodeType":"YulFunctionCall","src":"7539:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7530:5:12"}]},{"nodeType":"YulAssignment","src":"7574:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7583:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7586:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7579:3:12"},"nodeType":"YulFunctionCall","src":"7579:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7574:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7530:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7542:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7458:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7476:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7479:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7514:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7574:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7586:1:12","valueSize":1}],"id":1259,"nodeType":"InlineAssembly","src":"7434:165:12"},{"AST":{"nodeType":"YulBlock","src":"7618:156:12","statements":[{"nodeType":"YulAssignment","src":"7633:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7642:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7651:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7654:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7647:3:12"},"nodeType":"YulFunctionCall","src":"7647:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7638:3:12"},"nodeType":"YulFunctionCall","src":"7638:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7633:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"7671:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7684:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7689:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7680:3:12"},"nodeType":"YulFunctionCall","src":"7680:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7675:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7705:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7717:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7728:2:12","type":"","value":"54"},{"name":"f","nodeType":"YulIdentifier","src":"7732:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7724:3:12"},"nodeType":"YulFunctionCall","src":"7724:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7714:2:12"},"nodeType":"YulFunctionCall","src":"7714:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7705:5:12"}]},{"nodeType":"YulAssignment","src":"7749:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7758:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7761:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7754:3:12"},"nodeType":"YulFunctionCall","src":"7754:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7749:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7705:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7717:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7633:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7651:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7654:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7689:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7749:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7761:1:12","valueSize":1}],"id":1260,"nodeType":"InlineAssembly","src":"7609:165:12"},{"AST":{"nodeType":"YulBlock","src":"7793:156:12","statements":[{"nodeType":"YulAssignment","src":"7808:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7817:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7826:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7829:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7822:3:12"},"nodeType":"YulFunctionCall","src":"7822:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7813:3:12"},"nodeType":"YulFunctionCall","src":"7813:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7808:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"7846:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7859:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7864:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7855:3:12"},"nodeType":"YulFunctionCall","src":"7855:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7850:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7880:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7892:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7903:2:12","type":"","value":"53"},{"name":"f","nodeType":"YulIdentifier","src":"7907:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7899:3:12"},"nodeType":"YulFunctionCall","src":"7899:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7889:2:12"},"nodeType":"YulFunctionCall","src":"7889:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7880:5:12"}]},{"nodeType":"YulAssignment","src":"7924:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7933:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7936:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7929:3:12"},"nodeType":"YulFunctionCall","src":"7929:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7924:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7880:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"7892:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7808:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7826:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7829:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7864:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7924:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7936:1:12","valueSize":1}],"id":1261,"nodeType":"InlineAssembly","src":"7784:165:12"},{"AST":{"nodeType":"YulBlock","src":"7968:156:12","statements":[{"nodeType":"YulAssignment","src":"7983:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7992:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"8001:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"8004:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7997:3:12"},"nodeType":"YulFunctionCall","src":"7997:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7988:3:12"},"nodeType":"YulFunctionCall","src":"7988:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7983:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"8021:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8034:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"8039:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8030:3:12"},"nodeType":"YulFunctionCall","src":"8030:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"8025:1:12","type":""}]},{"nodeType":"YulAssignment","src":"8055:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"8067:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8078:2:12","type":"","value":"52"},{"name":"f","nodeType":"YulIdentifier","src":"8082:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8074:3:12"},"nodeType":"YulFunctionCall","src":"8074:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8064:2:12"},"nodeType":"YulFunctionCall","src":"8064:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"8055:5:12"}]},{"nodeType":"YulAssignment","src":"8099:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"8108:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"8111:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8104:3:12"},"nodeType":"YulFunctionCall","src":"8104:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8099:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"8055:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"8067:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"7983:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8001:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8004:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8039:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8099:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8111:1:12","valueSize":1}],"id":1262,"nodeType":"InlineAssembly","src":"7959:165:12"},{"AST":{"nodeType":"YulBlock","src":"8143:156:12","statements":[{"nodeType":"YulAssignment","src":"8158:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8167:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"8176:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"8179:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8172:3:12"},"nodeType":"YulFunctionCall","src":"8172:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8163:3:12"},"nodeType":"YulFunctionCall","src":"8163:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8158:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"8196:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8209:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"8214:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8205:3:12"},"nodeType":"YulFunctionCall","src":"8205:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"8200:1:12","type":""}]},{"nodeType":"YulAssignment","src":"8230:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"8242:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8253:2:12","type":"","value":"51"},{"name":"f","nodeType":"YulIdentifier","src":"8257:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8249:3:12"},"nodeType":"YulFunctionCall","src":"8249:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8239:2:12"},"nodeType":"YulFunctionCall","src":"8239:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"8230:5:12"}]},{"nodeType":"YulAssignment","src":"8274:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"8283:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"8286:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8279:3:12"},"nodeType":"YulFunctionCall","src":"8279:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8274:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"8230:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"8242:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8158:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8176:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8179:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8214:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8274:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8286:1:12","valueSize":1}],"id":1263,"nodeType":"InlineAssembly","src":"8134:165:12"},{"AST":{"nodeType":"YulBlock","src":"8318:128:12","statements":[{"nodeType":"YulAssignment","src":"8333:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8342:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"8351:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"8354:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8347:3:12"},"nodeType":"YulFunctionCall","src":"8347:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8338:3:12"},"nodeType":"YulFunctionCall","src":"8338:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8333:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"8371:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8384:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"8389:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8380:3:12"},"nodeType":"YulFunctionCall","src":"8380:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"8375:1:12","type":""}]},{"nodeType":"YulAssignment","src":"8405:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"8417:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8428:2:12","type":"","value":"50"},{"name":"f","nodeType":"YulIdentifier","src":"8432:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8424:3:12"},"nodeType":"YulFunctionCall","src":"8424:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8414:2:12"},"nodeType":"YulFunctionCall","src":"8414:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"8405:5:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1240,"isOffset":false,"isSlot":false,"src":"8405:5:12","valueSize":1},{"declaration":1240,"isOffset":false,"isSlot":false,"src":"8417:5:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8333:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8351:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8354:1:12","valueSize":1},{"declaration":1202,"isOffset":false,"isSlot":false,"src":"8389:1:12","valueSize":1}],"id":1264,"nodeType":"InlineAssembly","src":"8309:137:12"},{"assignments":[1266],"declarations":[{"constant":false,"id":1266,"mutability":"mutable","name":"log_sqrt10001","nodeType":"VariableDeclaration","scope":1311,"src":"8458:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1265,"name":"int256","nodeType":"ElementaryTypeName","src":"8458:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1270,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1267,"name":"log_2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1240,"src":"8481:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"323535373338393538393939363033383236333437313431","id":1268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8489:24:12","typeDescriptions":{"typeIdentifier":"t_rational_255738958999603826347141_by_1","typeString":"int_const 255738958999603826347141"},"value":"255738958999603826347141"},"src":"8481:32:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"8458:55:12"},{"assignments":[1272],"declarations":[{"constant":false,"id":1272,"mutability":"mutable","name":"tickLow","nodeType":"VariableDeclaration","scope":1311,"src":"8544:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1271,"name":"int24","nodeType":"ElementaryTypeName","src":"8544:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":1282,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1275,"name":"log_sqrt10001","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"8567:13:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"33343032393932393536383039313332343138353936313430313030363630323437323130","id":1276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8583:37:12","typeDescriptions":{"typeIdentifier":"t_rational_3402992956809132418596140100660247210_by_1","typeString":"int_const 3402...(29 digits omitted)...7210"},"value":"3402992956809132418596140100660247210"},"src":"8567:53:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8566:55:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8625:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8566:62:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8560:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":1273,"name":"int24","nodeType":"ElementaryTypeName","src":"8560:5:12","typeDescriptions":{}}},"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8560:69:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"8544:85:12"},{"assignments":[1284],"declarations":[{"constant":false,"id":1284,"mutability":"mutable","name":"tickHi","nodeType":"VariableDeclaration","scope":1311,"src":"8640:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1283,"name":"int24","nodeType":"ElementaryTypeName","src":"8640:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":1294,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1287,"name":"log_sqrt10001","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"8662:13:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323931333339343634373731393839363232393037303237363231313533333938303838343935","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8678:39:12","typeDescriptions":{"typeIdentifier":"t_rational_291339464771989622907027621153398088495_by_1","typeString":"int_const 2913...(31 digits omitted)...8495"},"value":"291339464771989622907027621153398088495"},"src":"8662:55:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1290,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8661:57:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8722:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8661:64:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8655:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":1285,"name":"int24","nodeType":"ElementaryTypeName","src":"8655:5:12","typeDescriptions":{}}},"id":1293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8655:71:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"8640:86:12"},{"expression":{"id":1309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1295,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"8739:4:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1296,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"8746:7:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1297,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1284,"src":"8757:6:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8746:17:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1301,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1284,"src":"8795:6:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1300,"name":"getSqrtRatioAtTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"8776:18:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":1302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8776:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1303,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"8806:12:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"8776:42:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1306,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"8830:7:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8776:61:12","trueExpression":{"id":1305,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1284,"src":"8821:6:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8746:91:12","trueExpression":{"id":1299,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"8766:7:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8739:98:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1310,"nodeType":"ExpressionStatement","src":"8739:98:12"}]},"documentation":{"id":1174,"nodeType":"StructuredDocumentation","src":"4003:412:12","text":"@notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\n @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n ever return.\n @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\n @return tick The greatest tick for which the ratio is less than or equal to the input ratio"},"id":1312,"implemented":true,"kind":"function","modifiers":[],"name":"getTickAtSqrtRatio","nodeType":"FunctionDefinition","parameters":{"id":1177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1176,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":1312,"src":"4449:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1175,"name":"uint160","nodeType":"ElementaryTypeName","src":"4449:7:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"4448:22:12"},"returnParameters":{"id":1180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1179,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1312,"src":"4494:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1178,"name":"int24","nodeType":"ElementaryTypeName","src":"4494:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4493:12:12"},"scope":1313,"src":"4421:4424:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1314,"src":"319:8529:12"}],"src":"46:8804:12"},"id":12},"contracts/elixir-periphery/NonfungiblePositionManager.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/NonfungiblePositionManager.sol","exportedSymbols":{"Address":[6985],"CallbackValidation":[4309],"ChainId":[4321],"Context":[7008],"ERC165":[5108],"ERC721":[6497],"ERC721Permit":[2922],"EnumerableMap":[7568],"EnumerableSet":[8060],"FixedPoint128":[595],"FixedPoint96":[605],"FullMath":[778],"IERC1271":[4206],"IERC165":[5120],"IERC20":[5553],"IERC20Permit":[5051],"IERC20PermitAllowed":[4230],"IERC721":[6613],"IERC721Enumerable":[6644],"IERC721Metadata":[6671],"IERC721Permit":[3791],"IERC721Receiver":[6689],"IElixirFactory":[88],"IElixirMintCallback":[124],"IElixirPool":[110],"IElixirPoolActions":[220],"IElixirPoolDerivedState":[256],"IElixirPoolEvents":[382],"IElixirPoolImmutables":[422],"IElixirPoolOwnerActions":[468],"IElixirPoolState":[588],"IElixirRewarder":[5015],"IMulticall":[3806],"INonfungiblePositionManager":[4048],"INonfungibleTokenPositionDescriptor":[4063],"IPeripheryImmutableState":[4079],"IPeripheryPayments":[4105],"IPoolInitializer":[4124],"ISelfPermit":[4192],"IWETH9":[4247],"LiquidityAmounts":[4661],"LiquidityManagement":[3137],"Multicall":[3222],"NonfungiblePositionManager":[2720],"PeripheryImmutableState":[3253],"PeripheryPayments":[3470],"PeripheryValidation":[3497],"PoolAddress":[4753],"PoolInitializer":[3589],"PositionKey":[4778],"SafeMath":[5475],"SelfPermit":[3756],"Strings":[8147],"TickMath":[1313],"TransferHelper":[4949]},"id":2721,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1315,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:13"},{"id":1316,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"71:19:13"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../elixir-core/interfaces/IElixirPool.sol","id":1317,"nodeType":"ImportDirective","scope":2721,"sourceUnit":111,"src":"94:51:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FixedPoint128.sol","file":"../elixir-core/libraries/FixedPoint128.sol","id":1318,"nodeType":"ImportDirective","scope":2721,"sourceUnit":596,"src":"147:52:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"../elixir-core/libraries/FullMath.sol","id":1319,"nodeType":"ImportDirective","scope":2721,"sourceUnit":779,"src":"201:47:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-rewarder/interfaces/IElixirRewarder.sol","file":"../elixir-rewarder/interfaces/IElixirRewarder.sol","id":1320,"nodeType":"ImportDirective","scope":2721,"sourceUnit":5016,"src":"250:59:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol","file":"./interfaces/INonfungiblePositionManager.sol","id":1321,"nodeType":"ImportDirective","scope":2721,"sourceUnit":4049,"src":"313:54:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol","file":"./interfaces/INonfungibleTokenPositionDescriptor.sol","id":1322,"nodeType":"ImportDirective","scope":2721,"sourceUnit":4064,"src":"369:62:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PositionKey.sol","file":"./libraries/PositionKey.sol","id":1323,"nodeType":"ImportDirective","scope":2721,"sourceUnit":4779,"src":"433:37:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"./libraries/PoolAddress.sol","id":1324,"nodeType":"ImportDirective","scope":2721,"sourceUnit":4754,"src":"472:37:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/LiquidityManagement.sol","file":"./base/LiquidityManagement.sol","id":1325,"nodeType":"ImportDirective","scope":2721,"sourceUnit":3138,"src":"511:40:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"./base/PeripheryImmutableState.sol","id":1326,"nodeType":"ImportDirective","scope":2721,"sourceUnit":3254,"src":"553:44:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/Multicall.sol","file":"./base/Multicall.sol","id":1327,"nodeType":"ImportDirective","scope":2721,"sourceUnit":3223,"src":"599:30:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/ERC721Permit.sol","file":"./base/ERC721Permit.sol","id":1328,"nodeType":"ImportDirective","scope":2721,"sourceUnit":2923,"src":"631:33:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/SelfPermit.sol","file":"./base/SelfPermit.sol","id":1329,"nodeType":"ImportDirective","scope":2721,"sourceUnit":3757,"src":"666:31:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PoolInitializer.sol","file":"./base/PoolInitializer.sol","id":1330,"nodeType":"ImportDirective","scope":2721,"sourceUnit":3590,"src":"699:36:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1332,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":4048,"src":"888:27:13","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$4048","typeString":"contract INonfungiblePositionManager"}},"id":1333,"nodeType":"InheritanceSpecifier","src":"888:27:13"},{"baseName":{"id":1334,"name":"Multicall","nodeType":"UserDefinedTypeName","referencedDeclaration":3222,"src":"922:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$3222","typeString":"contract Multicall"}},"id":1335,"nodeType":"InheritanceSpecifier","src":"922:9:13"},{"baseName":{"id":1336,"name":"ERC721Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":2922,"src":"938:12:13","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721Permit_$2922","typeString":"contract ERC721Permit"}},"id":1337,"nodeType":"InheritanceSpecifier","src":"938:12:13"},{"baseName":{"id":1338,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":3253,"src":"957:23:13","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$3253","typeString":"contract PeripheryImmutableState"}},"id":1339,"nodeType":"InheritanceSpecifier","src":"957:23:13"},{"baseName":{"id":1340,"name":"PoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":3589,"src":"987:15:13","typeDescriptions":{"typeIdentifier":"t_contract$_PoolInitializer_$3589","typeString":"contract PoolInitializer"}},"id":1341,"nodeType":"InheritanceSpecifier","src":"987:15:13"},{"baseName":{"id":1342,"name":"LiquidityManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3137,"src":"1009:19:13","typeDescriptions":{"typeIdentifier":"t_contract$_LiquidityManagement_$3137","typeString":"contract LiquidityManagement"}},"id":1343,"nodeType":"InheritanceSpecifier","src":"1009:19:13"},{"baseName":{"id":1344,"name":"SelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":3756,"src":"1035:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$3756","typeString":"contract SelfPermit"}},"id":1345,"nodeType":"InheritanceSpecifier","src":"1035:10:13"}],"contractDependencies":[124,2922,3137,3222,3253,3470,3497,3589,3756,3791,3806,4048,4079,4105,4124,4192,5108,5120,6497,6613,6644,6671,7008],"contractKind":"contract","documentation":{"id":1331,"nodeType":"StructuredDocumentation","src":"739:105:13","text":"@title NFT positions\n @notice Wraps Elixir positions in the ERC721 non-fungible token interface"},"fullyImplemented":true,"id":2720,"linearizedBaseContracts":[2720,3756,4192,3137,3470,3589,3253,2922,3222,3806,4048,3791,6497,6644,6671,6613,5108,5120,4079,4105,124,4124,7008,3497],"name":"NonfungiblePositionManager","nodeType":"ContractDefinition","nodes":[{"canonicalName":"NonfungiblePositionManager.Position","id":1374,"members":[{"constant":false,"id":1347,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":1374,"src":"1157:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1346,"name":"uint96","nodeType":"ElementaryTypeName","src":"1157:6:13","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":1349,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":1374,"src":"1245:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1348,"name":"address","nodeType":"ElementaryTypeName","src":"1245:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1351,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":1374,"src":"1338:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":1350,"name":"uint80","nodeType":"ElementaryTypeName","src":"1338:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":1353,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":1374,"src":"1405:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1352,"name":"int24","nodeType":"ElementaryTypeName","src":"1405:5:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1355,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":1374,"src":"1431:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1354,"name":"int24","nodeType":"ElementaryTypeName","src":"1431:5:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1357,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":1374,"src":"1499:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1356,"name":"uint128","nodeType":"ElementaryTypeName","src":"1499:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1359,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":1374,"src":"1629:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1358,"name":"uint256","nodeType":"ElementaryTypeName","src":"1629:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1361,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":1374,"src":"1672:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1360,"name":"uint256","nodeType":"ElementaryTypeName","src":"1672:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1363,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":1374,"src":"1808:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1362,"name":"uint128","nodeType":"ElementaryTypeName","src":"1808:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1365,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":1374,"src":"1838:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1364,"name":"uint128","nodeType":"ElementaryTypeName","src":"1838:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1367,"mutability":"mutable","name":"rewardPerLiquidityInsideLastX64","nodeType":"VariableDeclaration","scope":1374,"src":"1893:39:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":1366,"name":"uint192","nodeType":"ElementaryTypeName","src":"1893:7:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"},{"constant":false,"id":1369,"mutability":"mutable","name":"rewardLastUpdated","nodeType":"VariableDeclaration","scope":1374,"src":"1943:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1368,"name":"uint32","nodeType":"ElementaryTypeName","src":"1943:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1371,"mutability":"mutable","name":"rewardLastCollected","nodeType":"VariableDeclaration","scope":1374,"src":"1978:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1370,"name":"uint32","nodeType":"ElementaryTypeName","src":"1978:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1373,"mutability":"mutable","name":"rewardOwed","nodeType":"VariableDeclaration","scope":1374,"src":"2015:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1372,"name":"uint256","nodeType":"ElementaryTypeName","src":"2015:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Position","nodeType":"StructDefinition","scope":2720,"src":"1096:945:13","visibility":"public"},{"constant":false,"documentation":{"id":1375,"nodeType":"StructuredDocumentation","src":"2049:47:13","text":"@dev IDs of pools assigned by this contract"},"id":1379,"mutability":"mutable","name":"_poolIds","nodeType":"VariableDeclaration","scope":2720,"src":"2102:43:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint80_$","typeString":"mapping(address => uint80)"},"typeName":{"id":1378,"keyType":{"id":1376,"name":"address","nodeType":"ElementaryTypeName","src":"2110:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2102:26:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint80_$","typeString":"mapping(address => uint80)"},"valueType":{"id":1377,"name":"uint80","nodeType":"ElementaryTypeName","src":"2121:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}}},"visibility":"private"},{"constant":false,"documentation":{"id":1380,"nodeType":"StructuredDocumentation","src":"2154:67:13","text":"@dev Pool keys by pool ID, to save on SSTOREs for position data"},"id":1384,"mutability":"mutable","name":"_poolIdToPoolKey","nodeType":"VariableDeclaration","scope":2720,"src":"2227:63:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$4674_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey)"},"typeName":{"id":1383,"keyType":{"id":1381,"name":"uint80","nodeType":"ElementaryTypeName","src":"2235:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"Mapping","src":"2227:38:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$4674_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey)"},"valueType":{"id":1382,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"2245:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}}},"visibility":"private"},{"constant":false,"documentation":{"id":1385,"nodeType":"StructuredDocumentation","src":"2299:35:13","text":"@dev The token ID position data"},"id":1389,"mutability":"mutable","name":"_positions","nodeType":"VariableDeclaration","scope":2720,"src":"2340:47:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position)"},"typeName":{"id":1388,"keyType":{"id":1386,"name":"uint256","nodeType":"ElementaryTypeName","src":"2348:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2340:28:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position)"},"valueType":{"id":1387,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"2359:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}}},"visibility":"private"},{"constant":false,"documentation":{"id":1390,"nodeType":"StructuredDocumentation","src":"2396:62:13","text":"@dev The ID of the next token that will be minted. Skips 0"},"id":1393,"mutability":"mutable","name":"_nextId","nodeType":"VariableDeclaration","scope":2720,"src":"2464:27:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":1391,"name":"uint176","nodeType":"ElementaryTypeName","src":"2464:7:13","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"value":{"hexValue":"31","id":1392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2490:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"documentation":{"id":1394,"nodeType":"StructuredDocumentation","src":"2498:73:13","text":"@dev The ID of the next pool that is used for the first time. Skips 0"},"id":1397,"mutability":"mutable","name":"_nextPoolId","nodeType":"VariableDeclaration","scope":2720,"src":"2577:30:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":1395,"name":"uint80","nodeType":"ElementaryTypeName","src":"2577:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"value":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2606:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"documentation":{"id":1398,"nodeType":"StructuredDocumentation","src":"2616:110:13","text":"@dev The address of the token descriptor contract, which handles generating token URIs for position tokens"},"id":1400,"mutability":"mutable","name":"_tokenDescriptor","nodeType":"VariableDeclaration","scope":2720,"src":"2732:32:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1399,"name":"address","nodeType":"ElementaryTypeName","src":"2732:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"documentation":{"id":1401,"nodeType":"StructuredDocumentation","src":"2773:101:13","text":"@dev The address that will send rewards to the user based on the amount in `claimReward` function"},"id":1403,"mutability":"mutable","name":"_elixirRewarder","nodeType":"VariableDeclaration","scope":2720,"src":"2880:31:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1402,"name":"address","nodeType":"ElementaryTypeName","src":"2880:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":1431,"nodeType":"Block","src":"3158:100:13","statements":[{"expression":{"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1423,"name":"_tokenDescriptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"3169:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1424,"name":"_tokenDescriptor_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"3188:17:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3169:36:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1426,"nodeType":"ExpressionStatement","src":"3169:36:13"},{"expression":{"id":1429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1427,"name":"_elixirRewarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"3216:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1428,"name":"_elixirRewarder_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1411,"src":"3234:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3216:34:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1430,"nodeType":"ExpressionStatement","src":"3216:34:13"}]},"id":1432,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"456c6978697220506f736974696f6e73204e4654","id":1414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3075:22:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_a3dc2830f1197ff7d480a84ee92eac9232fd55f212f78fe72160ccf1dfdcabcc","typeString":"literal_string \"Elixir Positions NFT\""},"value":"Elixir Positions NFT"},{"hexValue":"495849522d504f53","id":1415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3099:10:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_3fb41d848be38a0b57e0ac2725b427cad432857a2893c41681fdedda64adf51c","typeString":"literal_string \"IXIR-POS\""},"value":"IXIR-POS"},{"hexValue":"31","id":1416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3111:3:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":1417,"modifierName":{"id":1413,"name":"ERC721Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2922,"src":"3062:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Permit_$2922_$","typeString":"type(contract ERC721Permit)"}},"nodeType":"ModifierInvocation","src":"3062:53:13"},{"arguments":[{"id":1419,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"3140:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1420,"name":"_WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"3150:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1421,"modifierName":{"id":1418,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"3116:23:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$3253_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"3116:41:13"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":1412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":1432,"src":"2942:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1404,"name":"address","nodeType":"ElementaryTypeName","src":"2942:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"_WETH9","nodeType":"VariableDeclaration","scope":1432,"src":"2969:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1406,"name":"address","nodeType":"ElementaryTypeName","src":"2969:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1409,"mutability":"mutable","name":"_tokenDescriptor_","nodeType":"VariableDeclaration","scope":1432,"src":"2994:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1408,"name":"address","nodeType":"ElementaryTypeName","src":"2994:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1411,"mutability":"mutable","name":"_elixirRewarder_","nodeType":"VariableDeclaration","scope":1432,"src":"3030:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1410,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2931:130:13"},"returnParameters":{"id":1422,"nodeType":"ParameterList","parameters":[],"src":"3158:0:13"},"scope":2720,"src":"2920:338:13","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3899],"body":{"id":1512,"nodeType":"Block","src":"3830:645:13","statements":[{"assignments":[1464],"declarations":[{"constant":false,"id":1464,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":1512,"src":"3841:24:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":1463,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"3841:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":1468,"initialValue":{"baseExpression":{"id":1465,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"3868:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":1467,"indexExpression":{"id":1466,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1435,"src":"3879:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3868:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3841:46:13"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint80","typeString":"uint80"},"id":1473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1470,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"3906:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":1351,"src":"3906:15:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3925:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3906:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420746f6b656e204944","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3928:18:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_b44e5a2e76d616f71f124d91f8560c46215c55a45ba6a1b6e492edf2295dcc48","typeString":"literal_string \"Invalid token ID\""},"value":"Invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b44e5a2e76d616f71f124d91f8560c46215c55a45ba6a1b6e492edf2295dcc48","typeString":"literal_string \"Invalid token ID\""}],"id":1469,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3898:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3898:49:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"ExpressionStatement","src":"3898:49:13"},{"assignments":[1480],"declarations":[{"constant":false,"id":1480,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":1512,"src":"3958:34:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":1479,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"3958:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":1485,"initialValue":{"baseExpression":{"id":1481,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"3995:16:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$4674_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":1484,"indexExpression":{"expression":{"id":1482,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"4012:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1483,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":1351,"src":"4012:15:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3995:33:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3958:70:13"},{"expression":{"components":[{"expression":{"id":1486,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"4061:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":1347,"src":"4061:14:13","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"id":1488,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"4090:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"operator","nodeType":"MemberAccess","referencedDeclaration":1349,"src":"4090:17:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1490,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1480,"src":"4122:7:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":1491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":4669,"src":"4122:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1492,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1480,"src":"4151:7:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":1493,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":4671,"src":"4151:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1494,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1480,"src":"4180:7:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":1495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":4673,"src":"4180:11:13","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":1496,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"4206:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1497,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1353,"src":"4206:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1498,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"4239:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1499,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1355,"src":"4239:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1500,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"4272:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"4272:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":1502,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"4305:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":1359,"src":"4305:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1504,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"4353:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":1361,"src":"4353:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1506,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"4401:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1507,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":1363,"src":"4401:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":1508,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"4436:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":1365,"src":"4436:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":1510,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4046:421:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"tuple(uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)"}},"functionReturnParameters":1462,"id":1511,"nodeType":"Return","src":"4039:428:13"}]},"documentation":{"id":1433,"nodeType":"StructuredDocumentation","src":"3266:43:13","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"99fbab88","id":1513,"implemented":true,"kind":"function","modifiers":[],"name":"positions","nodeType":"FunctionDefinition","overrides":{"id":1437,"nodeType":"OverrideSpecifier","overrides":[],"src":"3392:8:13"},"parameters":{"id":1436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1435,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":1513,"src":"3334:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1434,"name":"uint256","nodeType":"ElementaryTypeName","src":"3334:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3333:17:13"},"returnParameters":{"id":1462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1439,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":1513,"src":"3433:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1438,"name":"uint96","nodeType":"ElementaryTypeName","src":"3433:6:13","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":1441,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":1513,"src":"3460:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1440,"name":"address","nodeType":"ElementaryTypeName","src":"3460:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1443,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":1513,"src":"3491:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1442,"name":"address","nodeType":"ElementaryTypeName","src":"3491:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1445,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":1513,"src":"3520:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1444,"name":"address","nodeType":"ElementaryTypeName","src":"3520:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1447,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":1513,"src":"3549:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":1446,"name":"uint24","nodeType":"ElementaryTypeName","src":"3549:6:13","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":1449,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":1513,"src":"3574:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1448,"name":"int24","nodeType":"ElementaryTypeName","src":"3574:5:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1451,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":1513,"src":"3604:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1450,"name":"int24","nodeType":"ElementaryTypeName","src":"3604:5:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1453,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":1513,"src":"3634:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1452,"name":"uint128","nodeType":"ElementaryTypeName","src":"3634:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1455,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":1513,"src":"3666:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1454,"name":"uint256","nodeType":"ElementaryTypeName","src":"3666:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1457,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":1513,"src":"3713:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1456,"name":"uint256","nodeType":"ElementaryTypeName","src":"3713:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1459,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":1513,"src":"3760:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1458,"name":"uint128","nodeType":"ElementaryTypeName","src":"3760:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1461,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":1513,"src":"3794:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1460,"name":"uint128","nodeType":"ElementaryTypeName","src":"3794:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3418:406:13"},"scope":2720,"src":"3315:1160:13","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3913],"body":{"id":1552,"nodeType":"Block","src":"4824:327:13","statements":[{"assignments":[1529],"declarations":[{"constant":false,"id":1529,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":1552,"src":"4835:24:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":1528,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"4835:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":1533,"initialValue":{"baseExpression":{"id":1530,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"4862:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":1532,"indexExpression":{"id":1531,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"4873:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4862:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4835:46:13"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint80","typeString":"uint80"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1535,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1529,"src":"4900:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":1351,"src":"4900:15:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4919:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4900:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420746f6b656e204944","id":1539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4922:18:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_b44e5a2e76d616f71f124d91f8560c46215c55a45ba6a1b6e492edf2295dcc48","typeString":"literal_string \"Invalid token ID\""},"value":"Invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b44e5a2e76d616f71f124d91f8560c46215c55a45ba6a1b6e492edf2295dcc48","typeString":"literal_string \"Invalid token ID\""}],"id":1534,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4892:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4892:49:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1541,"nodeType":"ExpressionStatement","src":"4892:49:13"},{"expression":{"components":[{"expression":{"id":1542,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1529,"src":"4974:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1543,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityInsideLastX64","nodeType":"MemberAccess","referencedDeclaration":1367,"src":"4974:40:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},{"expression":{"id":1544,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1529,"src":"5029:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1545,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardLastUpdated","nodeType":"MemberAccess","referencedDeclaration":1369,"src":"5029:26:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1546,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1529,"src":"5070:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardLastCollected","nodeType":"MemberAccess","referencedDeclaration":1371,"src":"5070:28:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1548,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1529,"src":"5113:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":1549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardOwed","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"5113:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4959:184:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint192_$_t_uint32_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint192,uint32,uint32,uint256)"}},"functionReturnParameters":1527,"id":1551,"nodeType":"Return","src":"4952:191:13"}]},"documentation":{"id":1514,"nodeType":"StructuredDocumentation","src":"4483:43:13","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"75e39cec","id":1553,"implemented":true,"kind":"function","modifiers":[],"name":"positionReward","nodeType":"FunctionDefinition","overrides":{"id":1518,"nodeType":"OverrideSpecifier","overrides":[],"src":"4614:8:13"},"parameters":{"id":1517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1516,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":1553,"src":"4556:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1515,"name":"uint256","nodeType":"ElementaryTypeName","src":"4556:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4555:17:13"},"returnParameters":{"id":1527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1520,"mutability":"mutable","name":"rewardPerLiquidityInsideLastX64","nodeType":"VariableDeclaration","scope":1553,"src":"4655:39:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":1519,"name":"uint192","nodeType":"ElementaryTypeName","src":"4655:7:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"},{"constant":false,"id":1522,"mutability":"mutable","name":"rewardLastUpdated","nodeType":"VariableDeclaration","scope":1553,"src":"4709:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1521,"name":"uint32","nodeType":"ElementaryTypeName","src":"4709:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1524,"mutability":"mutable","name":"rewardLastCollected","nodeType":"VariableDeclaration","scope":1553,"src":"4748:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1523,"name":"uint32","nodeType":"ElementaryTypeName","src":"4748:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1526,"mutability":"mutable","name":"rewardOwed","nodeType":"VariableDeclaration","scope":1553,"src":"4789:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1525,"name":"uint256","nodeType":"ElementaryTypeName","src":"4789:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4640:178:13"},"scope":2720,"src":"4532:619:13","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":1590,"nodeType":"Block","src":"5295:186:13","statements":[{"expression":{"id":1567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1563,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"5306:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1564,"name":"_poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1379,"src":"5315:8:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint80_$","typeString":"mapping(address => uint80)"}},"id":1566,"indexExpression":{"id":1565,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1556,"src":"5324:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5315:14:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"5306:23:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"id":1568,"nodeType":"ExpressionStatement","src":"5306:23:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint80","typeString":"uint80"},"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1569,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"5344:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5354:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5344:11:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1589,"nodeType":"IfStatement","src":"5340:134:13","trueBody":{"id":1588,"nodeType":"Block","src":"5357:117:13","statements":[{"expression":{"id":1580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1572,"name":"_poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1379,"src":"5372:8:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint80_$","typeString":"mapping(address => uint80)"}},"id":1574,"indexExpression":{"id":1573,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1556,"src":"5381:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5372:14:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":1578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1575,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"5390:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5399:13:13","subExpression":{"id":1576,"name":"_nextPoolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"5399:11:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"5390:22:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}}],"id":1579,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5389:24:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"5372:41:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"id":1581,"nodeType":"ExpressionStatement","src":"5372:41:13"},{"expression":{"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1582,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"5428:16:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$4674_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":1584,"indexExpression":{"id":1583,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"5445:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5428:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1585,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"5455:7:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"src":"5428:34:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"id":1587,"nodeType":"ExpressionStatement","src":"5428:34:13"}]}}]},"documentation":{"id":1554,"nodeType":"StructuredDocumentation","src":"5159:26:13","text":"@dev Caches a pool key"},"id":1591,"implemented":true,"kind":"function","modifiers":[],"name":"cachePoolKey","nodeType":"FunctionDefinition","parameters":{"id":1559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1556,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":1591,"src":"5213:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1555,"name":"address","nodeType":"ElementaryTypeName","src":"5213:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1558,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":1591,"src":"5227:34:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":1557,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"5227:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"5212:50:13"},"returnParameters":{"id":1562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1561,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":1591,"src":"5280:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":1560,"name":"uint80","nodeType":"ElementaryTypeName","src":"5280:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"5279:15:13"},"scope":2720,"src":"5191:290:13","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[3950],"body":{"id":1730,"nodeType":"Block","src":"5829:1796:13","statements":[{"assignments":[1611],"declarations":[{"constant":false,"id":1611,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":1730,"src":"5840:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"},"typeName":{"id":1610,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"5840:11:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"visibility":"internal"}],"id":1612,"nodeType":"VariableDeclarationStatement","src":"5840:16:13"},{"expression":{"id":1644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1613,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"5868:9:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1614,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1606,"src":"5879:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1615,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1608,"src":"5888:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1616,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1611,"src":"5897:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}}],"id":1617,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5867:35:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IElixirPool_$110_$","typeString":"tuple(uint128,uint256,uint256,contract IElixirPool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":1620,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"5978:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":3915,"src":"5978:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1622,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6018:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3917,"src":"6018:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1624,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6055:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":3919,"src":"6055:10:13","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"arguments":[{"id":1628,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6103:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}],"id":1627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6095:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1626,"name":"address","nodeType":"ElementaryTypeName","src":"6095:7:13","typeDescriptions":{}}},"id":1629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6095:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":1630,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6138:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":3921,"src":"6138:16:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1632,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6184:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":3923,"src":"6184:16:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1634,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6235:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Desired","nodeType":"MemberAccess","referencedDeclaration":3925,"src":"6235:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1636,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6291:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Desired","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"6291:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1638,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6343:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":3929,"src":"6343:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1640,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6391:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":3931,"src":"6391:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1619,"name":"AddLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3025,"src":"5932:18:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityParams_$3025_storage_ptr_$","typeString":"type(struct LiquidityManagement.AddLiquidityParams storage pointer)"}},"id":1642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee","recipient","tickLower","tickUpper","amount0Desired","amount1Desired","amount0Min","amount1Min"],"nodeType":"FunctionCall","src":"5932:492:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}],"id":1618,"name":"addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3136,"src":"5905:12:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddLiquidityParams_$3025_memory_ptr_$returns$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IElixirPool_$110_$","typeString":"function (struct LiquidityManagement.AddLiquidityParams memory) returns (uint128,uint256,uint256,contract IElixirPool)"}},"id":1643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5905:530:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IElixirPool_$110_$","typeString":"tuple(uint128,uint256,uint256,contract IElixirPool)"}},"src":"5867:568:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1645,"nodeType":"ExpressionStatement","src":"5867:568:13"},{"expression":{"arguments":[{"expression":{"id":1647,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6454:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":3933,"src":"6454:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"components":[{"id":1652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1649,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1602,"src":"6473:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6483:9:13","subExpression":{"id":1650,"name":"_nextId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1393,"src":"6483:7:13","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6473:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1653,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6472:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1646,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6229,"src":"6448:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6448:46:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1655,"nodeType":"ExpressionStatement","src":"6448:46:13"},{"assignments":[1657],"declarations":[{"constant":false,"id":1657,"mutability":"mutable","name":"positionKey","nodeType":"VariableDeclaration","scope":1730,"src":"6507:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1656,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6507:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1669,"initialValue":{"arguments":[{"arguments":[{"id":1662,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6557:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}],"id":1661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6549:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1660,"name":"address","nodeType":"ElementaryTypeName","src":"6549:7:13","typeDescriptions":{}}},"id":1663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6549:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":1664,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6564:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":3921,"src":"6564:16:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1666,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6582:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":3923,"src":"6582:16:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1658,"name":"PositionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4778,"src":"6529:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionKey_$4778_$","typeString":"type(library PositionKey)"}},"id":1659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"compute","nodeType":"MemberAccess","referencedDeclaration":4777,"src":"6529:19:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_int24_$_t_int24_$returns$_t_bytes32_$","typeString":"function (address,int24,int24) pure returns (bytes32)"}},"id":1668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6529:70:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6507:92:13"},{"assignments":[null,1671,1673,null,null],"declarations":[null,{"constant":false,"id":1671,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":1730,"src":"6613:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1670,"name":"uint256","nodeType":"ElementaryTypeName","src":"6613:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":1730,"src":"6647:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1672,"name":"uint256","nodeType":"ElementaryTypeName","src":"6647:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":1678,"initialValue":{"arguments":[{"id":1676,"name":"positionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1657,"src":"6702:11:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1674,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1611,"src":"6687:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":1675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":571,"src":"6687:14:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"function (bytes32) view external returns (uint128,uint256,uint256,uint128,uint128)"}},"id":1677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6687:27:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint256,uint256,uint128,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"6610:104:13"},{"assignments":[1680],"declarations":[{"constant":false,"id":1680,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":1730,"src":"6754:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":1679,"name":"uint80","nodeType":"ElementaryTypeName","src":"6754:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"id":1696,"initialValue":{"arguments":[{"arguments":[{"id":1684,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1611,"src":"6822:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}],"id":1683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6814:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"6814:7:13","typeDescriptions":{}}},"id":1685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6814:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":1688,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6875:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":3915,"src":"6875:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1690,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6898:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3917,"src":"6898:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1692,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"6918:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":3919,"src":"6918:10:13","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":1686,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"6846:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$4753_$","typeString":"type(library PoolAddress)"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":4674,"src":"6846:19:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$4674_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"6846:84:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"id":1681,"name":"cachePoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"6783:12:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_PoolKey_$4674_memory_ptr_$returns$_t_uint80_$","typeString":"function (address,struct PoolAddress.PoolKey memory) returns (uint80)"}},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6783:162:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"VariableDeclarationStatement","src":"6754:191:13"},{"expression":{"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1697,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"6958:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":1699,"indexExpression":{"id":1698,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1602,"src":"6969:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6958:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":1701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7011:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"30","id":1704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7045:1:13","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":1703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7037:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"7037:7:13","typeDescriptions":{}}},"id":1705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7037:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":1706,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"7070:6:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},{"expression":{"id":1707,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"7102:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":3921,"src":"7102:16:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1709,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"7144:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":3923,"src":"7144:16:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1711,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"7186:9:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1712,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1671,"src":"7236:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1713,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1673,"src":"7301:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":1714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7353:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7382:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7431:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7466:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7503:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7531:1:13","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"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint80","typeString":"uint80"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1700,"name":"Position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1374,"src":"6980:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Position_$1374_storage_ptr_$","typeString":"type(struct NonfungiblePositionManager.Position storage pointer)"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["nonce","operator","poolId","tickLower","tickUpper","liquidity","feeGrowthInside0LastX128","feeGrowthInside1LastX128","tokensOwed0","tokensOwed1","rewardPerLiquidityInsideLastX64","rewardLastUpdated","rewardLastCollected","rewardOwed"],"nodeType":"FunctionCall","src":"6980:564:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"src":"6958:586:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"id":1722,"nodeType":"ExpressionStatement","src":"6958:586:13"},{"eventCall":{"arguments":[{"id":1724,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1602,"src":"7580:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1725,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"7589:9:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1726,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1606,"src":"7600:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1727,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1608,"src":"7609:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1723,"name":"IncreaseLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3840,"src":"7562:17:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint128,uint256,uint256)"}},"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7562:55:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1729,"nodeType":"EmitStatement","src":"7557:60:13"}]},"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"5489:43:13","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"88316456","id":1731,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":1598,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"5656:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":1599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":3935,"src":"5656:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1600,"modifierName":{"id":1597,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3482,"src":"5642:13:13","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"5642:30:13"}],"name":"mint","nodeType":"FunctionDefinition","overrides":{"id":1596,"nodeType":"OverrideSpecifier","overrides":[],"src":"5624:8:13"},"parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":1731,"src":"5552:26:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams"},"typeName":{"id":1593,"name":"MintParams","nodeType":"UserDefinedTypeName","referencedDeclaration":3936,"src":"5552:10:13","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_storage_ptr","typeString":"struct INonfungiblePositionManager.MintParams"}},"visibility":"internal"}],"src":"5551:28:13"},"returnParameters":{"id":1609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1602,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":1731,"src":"5705:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1601,"name":"uint256","nodeType":"ElementaryTypeName","src":"5705:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1604,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":1731,"src":"5735:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1603,"name":"uint128","nodeType":"ElementaryTypeName","src":"5735:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1606,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":1731,"src":"5767:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1605,"name":"uint256","nodeType":"ElementaryTypeName","src":"5767:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1608,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":1731,"src":"5797:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1607,"name":"uint256","nodeType":"ElementaryTypeName","src":"5797:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5690:133:13"},"scope":2720,"src":"5538:2087:13","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":1745,"nodeType":"Block","src":"7695:83:13","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":1738,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7733:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7733:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":1740,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"7745:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1737,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6126,"src":"7714:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7714:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f7420617070726f766564","id":1742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7755:14:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_70356c467a9713064077b7fa0ff1a074c93b1f7c48415be181b9cd799b628361","typeString":"literal_string \"Not approved\""},"value":"Not approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_70356c467a9713064077b7fa0ff1a074c93b1f7c48415be181b9cd799b628361","typeString":"literal_string \"Not approved\""}],"id":1736,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7706:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7706:64:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1744,"nodeType":"ExpressionStatement","src":"7706:64:13"}]},"id":1746,"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorizedForToken","nodeType":"FunctionDefinition","parameters":{"id":1734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1733,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":1746,"src":"7664:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1732,"name":"uint256","nodeType":"ElementaryTypeName","src":"7664:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7663:17:13"},"returnParameters":{"id":1735,"nodeType":"ParameterList","parameters":[],"src":"7695:0:13"},"scope":2720,"src":"7633:145:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1755,"nodeType":"Block","src":"7831:61:13","statements":[{"expression":{"arguments":[{"id":1751,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1748,"src":"7864:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1750,"name":"_isAuthorizedForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1746,"src":"7842:21:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":1752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7842:30:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1753,"nodeType":"ExpressionStatement","src":"7842:30:13"},{"id":1754,"nodeType":"PlaceholderStatement","src":"7883:1:13"}]},"id":1756,"name":"isAuthorizedForToken","nodeType":"ModifierDefinition","parameters":{"id":1749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1748,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":1756,"src":"7814:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1747,"name":"uint256","nodeType":"ElementaryTypeName","src":"7814:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7813:17:13"},"src":"7784:108:13","virtual":false,"visibility":"internal"},{"body":{"id":1770,"nodeType":"Block","src":"7943:73:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1760,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7962:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7962:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1763,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"7991:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1762,"name":"IElixirFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"7976:14:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirFactory_$88_$","typeString":"type(contract IElixirFactory)"}},"id":1764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7976:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirFactory_$88","typeString":"contract IElixirFactory"}},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":41,"src":"7976:29:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7976:31:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7962:45:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1759,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7954:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7954:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1769,"nodeType":"ExpressionStatement","src":"7954:54:13"}]},"id":1771,"implemented":true,"kind":"function","modifiers":[],"name":"_onlyFactoryOwner","nodeType":"FunctionDefinition","parameters":{"id":1757,"nodeType":"ParameterList","parameters":[],"src":"7926:2:13"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[],"src":"7943:0:13"},"scope":2720,"src":"7900:116:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1777,"nodeType":"Block","src":"8050:50:13","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1773,"name":"_onlyFactoryOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"8061:17:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8061:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1775,"nodeType":"ExpressionStatement","src":"8061:19:13"},{"id":1776,"nodeType":"PlaceholderStatement","src":"8091:1:13"}]},"id":1778,"name":"onlyFactoryOwner","nodeType":"ModifierDefinition","parameters":{"id":1772,"nodeType":"ParameterList","parameters":[],"src":"8047:2:13"},"src":"8022:78:13","virtual":false,"visibility":"internal"},{"baseFunctions":[5789,6670],"body":{"id":1802,"nodeType":"Block","src":"8213:139:13","statements":[{"expression":{"arguments":[{"arguments":[{"id":1790,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"8240:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1789,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6084,"src":"8232:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8232:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1788,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8224:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8224:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1793,"nodeType":"ExpressionStatement","src":"8224:25:13"},{"expression":{"arguments":[{"id":1798,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8330:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}},{"id":1799,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"8336:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1795,"name":"_tokenDescriptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"8303:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1794,"name":"INonfungibleTokenPositionDescriptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"8267:35:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_INonfungibleTokenPositionDescriptor_$4063_$","typeString":"type(contract INonfungibleTokenPositionDescriptor)"}},"id":1796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8267:53:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_INonfungibleTokenPositionDescriptor_$4063","typeString":"contract INonfungibleTokenPositionDescriptor"}},"id":1797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenURI","nodeType":"MemberAccess","referencedDeclaration":4062,"src":"8267:62:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_INonfungiblePositionManager_$4048_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (contract INonfungiblePositionManager,uint256) view external returns (string memory)"}},"id":1800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8267:77:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1787,"id":1801,"nodeType":"Return","src":"8260:84:13"}]},"functionSelector":"c87b56dd","id":1803,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","overrides":{"id":1784,"nodeType":"OverrideSpecifier","overrides":[{"id":1782,"name":"ERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":6497,"src":"8164:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$6497","typeString":"contract ERC721"}},{"id":1783,"name":"IERC721Metadata","nodeType":"UserDefinedTypeName","referencedDeclaration":6671,"src":"8172:15:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$6671","typeString":"contract IERC721Metadata"}}],"src":"8155:33:13"},"parameters":{"id":1781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1780,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":1803,"src":"8126:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1779,"name":"uint256","nodeType":"ElementaryTypeName","src":"8126:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8125:17:13"},"returnParameters":{"id":1787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1786,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1803,"src":"8198:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1785,"name":"string","nodeType":"ElementaryTypeName","src":"8198:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8197:15:13"},"scope":2720,"src":"8108:244:13","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[5798],"body":{"id":1809,"nodeType":"Block","src":"8490:2:13","statements":[]},"functionSelector":"6c0360eb","id":1810,"implemented":true,"kind":"function","modifiers":[],"name":"baseURI","nodeType":"FunctionDefinition","overrides":{"id":1805,"nodeType":"OverrideSpecifier","overrides":[],"src":"8457:8:13"},"parameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"8442:2:13"},"returnParameters":{"id":1808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1807,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1810,"src":"8475:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1806,"name":"string","nodeType":"ElementaryTypeName","src":"8475:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8474:15:13"},"scope":2720,"src":"8426:66:13","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[3975],"body":{"id":1971,"nodeType":"Block","src":"8836:1913:13","statements":[{"assignments":[1828],"declarations":[{"constant":false,"id":1828,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":1971,"src":"8847:25:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":1827,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"8847:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":1833,"initialValue":{"baseExpression":{"id":1829,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"8875:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":1832,"indexExpression":{"expression":{"id":1830,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"8886:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":1831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":3952,"src":"8886:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8875:26:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8847:54:13"},{"assignments":[1837],"declarations":[{"constant":false,"id":1837,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":1971,"src":"8914:34:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":1836,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"8914:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":1842,"initialValue":{"baseExpression":{"id":1838,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"8951:16:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$4674_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":1841,"indexExpression":{"expression":{"id":1839,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"8968:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":1351,"src":"8968:15:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8951:33:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8914:70:13"},{"assignments":[1844],"declarations":[{"constant":false,"id":1844,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":1971,"src":"8997:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"},"typeName":{"id":1843,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"8997:11:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"visibility":"internal"}],"id":1845,"nodeType":"VariableDeclarationStatement","src":"8997:16:13"},{"expression":{"id":1877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1846,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"9025:9:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1847,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1823,"src":"9036:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1848,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1825,"src":"9045:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1849,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"9054:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}}],"id":1850,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9024:35:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IElixirPool_$110_$","typeString":"tuple(uint128,uint256,uint256,contract IElixirPool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":1853,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"9135:7:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":1854,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":4669,"src":"9135:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1855,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"9176:7:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":1856,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":4671,"src":"9176:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1857,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"9214:7:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":1858,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":4673,"src":"9214:11:13","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":1859,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"9255:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1353,"src":"9255:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1861,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"9303:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1355,"src":"9303:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1863,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"9356:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Desired","nodeType":"MemberAccess","referencedDeclaration":3954,"src":"9356:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1865,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"9412:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":1866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Desired","nodeType":"MemberAccess","referencedDeclaration":3956,"src":"9412:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1867,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"9464:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":1868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":3958,"src":"9464:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1869,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"9512:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":1870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":3960,"src":"9512:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":1873,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9567:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}],"id":1872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9559:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1871,"name":"address","nodeType":"ElementaryTypeName","src":"9559:7:13","typeDescriptions":{}}},"id":1874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9559:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":1852,"name":"AddLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3025,"src":"9089:18:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityParams_$3025_storage_ptr_$","typeString":"type(struct LiquidityManagement.AddLiquidityParams storage pointer)"}},"id":1875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee","tickLower","tickUpper","amount0Desired","amount1Desired","amount0Min","amount1Min","recipient"],"nodeType":"FunctionCall","src":"9089:499:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}],"id":1851,"name":"addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3136,"src":"9062:12:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddLiquidityParams_$3025_memory_ptr_$returns$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IElixirPool_$110_$","typeString":"function (struct LiquidityManagement.AddLiquidityParams memory) returns (uint128,uint256,uint256,contract IElixirPool)"}},"id":1876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9062:537:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IElixirPool_$110_$","typeString":"tuple(uint128,uint256,uint256,contract IElixirPool)"}},"src":"9024:575:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1878,"nodeType":"ExpressionStatement","src":"9024:575:13"},{"assignments":[1880],"declarations":[{"constant":false,"id":1880,"mutability":"mutable","name":"positionKey","nodeType":"VariableDeclaration","scope":1971,"src":"9612:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1879,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9612:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1892,"initialValue":{"arguments":[{"arguments":[{"id":1885,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9662:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}],"id":1884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9654:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1883,"name":"address","nodeType":"ElementaryTypeName","src":"9654:7:13","typeDescriptions":{}}},"id":1886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9654:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":1887,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"9669:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1888,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1353,"src":"9669:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1889,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"9689:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1890,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1355,"src":"9689:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1881,"name":"PositionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4778,"src":"9634:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionKey_$4778_$","typeString":"type(library PositionKey)"}},"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"compute","nodeType":"MemberAccess","referencedDeclaration":4777,"src":"9634:19:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_int24_$_t_int24_$returns$_t_bytes32_$","typeString":"function (address,int24,int24) pure returns (bytes32)"}},"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9634:74:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9612:96:13"},{"assignments":[null,1894,1896,null,null],"declarations":[null,{"constant":false,"id":1894,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":1971,"src":"9783:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1893,"name":"uint256","nodeType":"ElementaryTypeName","src":"9783:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1896,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":1971,"src":"9817:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1895,"name":"uint256","nodeType":"ElementaryTypeName","src":"9817:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":1901,"initialValue":{"arguments":[{"id":1899,"name":"positionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1880,"src":"9872:11:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1897,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"9857:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":1898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":571,"src":"9857:14:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"function (bytes32) view external returns (uint128,uint256,uint256,uint128,uint128)"}},"id":1900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9857:27:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint256,uint256,uint128,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"9780:104:13"},{"expression":{"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1902,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"9897:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":1363,"src":"9897:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1909,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"9977:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1910,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10004:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1911,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":1359,"src":"10004:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9977:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1913,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10056:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"10056:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":1915,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":595,"src":"10093:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$595_$","typeString":"type(library FixedPoint128)"}},"id":1916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":594,"src":"10093:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1907,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"9943:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"9943:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9943:183:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9921:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":1905,"name":"uint128","nodeType":"ElementaryTypeName","src":"9921:7:13","typeDescriptions":{}}},"id":1918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9921:216:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9897:240:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1920,"nodeType":"ExpressionStatement","src":"9897:240:13"},{"expression":{"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1921,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10148:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":1365,"src":"10148:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1928,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"10228:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1929,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10255:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":1361,"src":"10255:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10228:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1932,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10307:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1933,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"10307:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":1934,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":595,"src":"10344:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$595_$","typeString":"type(library FixedPoint128)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":594,"src":"10344:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1926,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"10194:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"10194:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10194:183:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10172:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":1924,"name":"uint128","nodeType":"ElementaryTypeName","src":"10172:7:13","typeDescriptions":{}}},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10172:216:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10148:240:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1939,"nodeType":"ExpressionStatement","src":"10148:240:13"},{"expression":{"arguments":[{"id":1941,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10415:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},{"id":1942,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"10425:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"},{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}],"id":1940,"name":"_updateReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10401:13:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Position_$1374_storage_ptr_$_t_contract$_IElixirPool_$110_$returns$__$","typeString":"function (struct NonfungiblePositionManager.Position storage pointer,contract IElixirPool)"}},"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10401:29:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1944,"nodeType":"ExpressionStatement","src":"10401:29:13"},{"expression":{"id":1949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1945,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10488:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":1359,"src":"10488:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1948,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"10524:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10488:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1950,"nodeType":"ExpressionStatement","src":"10488:60:13"},{"expression":{"id":1955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1951,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10559:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":1361,"src":"10559:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1954,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"10595:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10559:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1956,"nodeType":"ExpressionStatement","src":"10559:60:13"},{"expression":{"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1957,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"10630:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":1959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"10630:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1960,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"10652:9:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10630:31:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1962,"nodeType":"ExpressionStatement","src":"10630:31:13"},{"eventCall":{"arguments":[{"expression":{"id":1964,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"10697:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":3952,"src":"10697:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1966,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"10713:9:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1967,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1823,"src":"10724:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1968,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1825,"src":"10733:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1963,"name":"IncreaseLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3840,"src":"10679:17:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint128,uint256,uint256)"}},"id":1969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10679:62:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1970,"nodeType":"EmitStatement","src":"10674:67:13"}]},"documentation":{"id":1811,"nodeType":"StructuredDocumentation","src":"8500:43:13","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"219f5d17","id":1972,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":1817,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"8693:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":1818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":3962,"src":"8693:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1819,"modifierName":{"id":1816,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3482,"src":"8679:13:13","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"8679:30:13"}],"name":"increaseLiquidity","nodeType":"FunctionDefinition","overrides":{"id":1815,"nodeType":"OverrideSpecifier","overrides":[],"src":"8661:8:13"},"parameters":{"id":1814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1813,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":1972,"src":"8576:39:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"},"typeName":{"id":1812,"name":"IncreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":3963,"src":"8576:23:13","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_storage_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"}},"visibility":"internal"}],"src":"8575:41:13"},"returnParameters":{"id":1826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1821,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":1972,"src":"8742:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1820,"name":"uint128","nodeType":"ElementaryTypeName","src":"8742:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1823,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":1972,"src":"8774:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1822,"name":"uint256","nodeType":"ElementaryTypeName","src":"8774:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1825,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":1972,"src":"8804:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1824,"name":"uint256","nodeType":"ElementaryTypeName","src":"8804:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8727:103:13"},"scope":2720,"src":"8549:2200:13","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[3996],"body":{"id":2167,"nodeType":"Block","src":"11070:2056:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1992,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"11089:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":1993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3979,"src":"11089:16:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11108:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11089:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1991,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11081:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11081:29:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1997,"nodeType":"ExpressionStatement","src":"11081:29:13"},{"assignments":[1999],"declarations":[{"constant":false,"id":1999,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":2167,"src":"11121:25:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":1998,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"11121:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":2004,"initialValue":{"baseExpression":{"id":2000,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"11149:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":2003,"indexExpression":{"expression":{"id":2001,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"11160:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":3977,"src":"11160:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11149:26:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11121:54:13"},{"assignments":[2006],"declarations":[{"constant":false,"id":2006,"mutability":"mutable","name":"positionLiquidity","nodeType":"VariableDeclaration","scope":2167,"src":"11188:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2005,"name":"uint128","nodeType":"ElementaryTypeName","src":"11188:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":2009,"initialValue":{"expression":{"id":2007,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"11216:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"11216:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"11188:46:13"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2011,"name":"positionLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"11253:17:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":2012,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"11274:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":2013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3979,"src":"11274:16:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"11253:37:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2010,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11245:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11245:46:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2016,"nodeType":"ExpressionStatement","src":"11245:46:13"},{"assignments":[2020],"declarations":[{"constant":false,"id":2020,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":2167,"src":"11304:34:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":2019,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"11304:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":2025,"initialValue":{"baseExpression":{"id":2021,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"11341:16:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$4674_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":2024,"indexExpression":{"expression":{"id":2022,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"11358:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2023,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":1351,"src":"11358:15:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11341:33:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11304:70:13"},{"assignments":[2027],"declarations":[{"constant":false,"id":2027,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":2167,"src":"11385:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"},"typeName":{"id":2026,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"11385:11:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"visibility":"internal"}],"id":2035,"initialValue":{"arguments":[{"arguments":[{"id":2031,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"11443:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2032,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"11452:7:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":2029,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"11416:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$4753_$","typeString":"type(library PoolAddress)"}},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":4752,"src":"11416:26:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$4674_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":2033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11416:44:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2028,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"11404:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$110_$","typeString":"type(contract IElixirPool)"}},"id":2034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11404:57:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"nodeType":"VariableDeclarationStatement","src":"11385:76:13"},{"expression":{"arguments":[{"id":2037,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"11581:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},{"id":2038,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"11591:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"},{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}],"id":2036,"name":"_updateReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"11567:13:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Position_$1374_storage_ptr_$_t_contract$_IElixirPool_$110_$returns$__$","typeString":"function (struct NonfungiblePositionManager.Position storage pointer,contract IElixirPool)"}},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11567:29:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2040,"nodeType":"ExpressionStatement","src":"11567:29:13"},{"expression":{"id":2053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2041,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"11610:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2042,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1989,"src":"11619:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2043,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11609:18:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2046,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"11640:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2047,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1353,"src":"11640:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2048,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"11660:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2049,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1355,"src":"11660:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2050,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"11680:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3979,"src":"11680:16:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":2044,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"11630:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":183,"src":"11630:9:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_int24_$_t_int24_$_t_uint128_$returns$_t_uint256_$_t_uint256_$","typeString":"function (int24,int24,uint128) external returns (uint256,uint256)"}},"id":2052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11630:67:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"11609:88:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2054,"nodeType":"ExpressionStatement","src":"11609:88:13"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2056,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"11718:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":2057,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"11729:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":2058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":3981,"src":"11729:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11718:28:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2060,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1989,"src":"11750:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":2061,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"11761:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":2062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"11761:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11750:28:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11718:60:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"507269636520736c69707061676520636865636b","id":2065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11780:22:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34","typeString":"literal_string \"Price slippage check\""},"value":"Price slippage check"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34","typeString":"literal_string \"Price slippage check\""}],"id":2055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11710:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11710:93:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2067,"nodeType":"ExpressionStatement","src":"11710:93:13"},{"assignments":[2069],"declarations":[{"constant":false,"id":2069,"mutability":"mutable","name":"positionKey","nodeType":"VariableDeclaration","scope":2167,"src":"11816:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2068,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11816:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2081,"initialValue":{"arguments":[{"arguments":[{"id":2074,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11866:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}],"id":2073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11858:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2072,"name":"address","nodeType":"ElementaryTypeName","src":"11858:7:13","typeDescriptions":{}}},"id":2075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11858:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":2076,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"11873:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1353,"src":"11873:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2078,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"11893:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1355,"src":"11893:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":2070,"name":"PositionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4778,"src":"11838:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionKey_$4778_$","typeString":"type(library PositionKey)"}},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"compute","nodeType":"MemberAccess","referencedDeclaration":4777,"src":"11838:19:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_int24_$_t_int24_$returns$_t_bytes32_$","typeString":"function (address,int24,int24) pure returns (bytes32)"}},"id":2080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11838:74:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11816:96:13"},{"assignments":[null,2083,2085,null,null],"declarations":[null,{"constant":false,"id":2083,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":2167,"src":"11985:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2082,"name":"uint256","nodeType":"ElementaryTypeName","src":"11985:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2085,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":2167,"src":"12019:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2084,"name":"uint256","nodeType":"ElementaryTypeName","src":"12019:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":2090,"initialValue":{"arguments":[{"id":2088,"name":"positionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2069,"src":"12074:11:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2086,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"12059:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":2087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":571,"src":"12059:14:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"function (bytes32) view external returns (uint128,uint256,uint256,uint128,uint128)"}},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12059:27:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint256,uint256,uint128,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"11982:104:13"},{"expression":{"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2091,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"12099:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":1363,"src":"12099:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2096,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"12144:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2095,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12136:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2094,"name":"uint128","nodeType":"ElementaryTypeName","src":"12136:7:13","typeDescriptions":{}}},"id":2097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12136:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2102,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2083,"src":"12232:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2103,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"12259:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":1359,"src":"12259:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12232:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2106,"name":"positionLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"12315:17:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":2107,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":595,"src":"12355:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$595_$","typeString":"type(library FixedPoint128)"}},"id":2108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":594,"src":"12355:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2100,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"12194:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"12194:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12194:198:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12168:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2098,"name":"uint128","nodeType":"ElementaryTypeName","src":"12168:7:13","typeDescriptions":{}}},"id":2110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12168:239:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"12136:271:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"12099:308:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2113,"nodeType":"ExpressionStatement","src":"12099:308:13"},{"expression":{"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2114,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"12418:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":1365,"src":"12418:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2119,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1989,"src":"12463:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12455:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2117,"name":"uint128","nodeType":"ElementaryTypeName","src":"12455:7:13","typeDescriptions":{}}},"id":2120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12455:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2125,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2085,"src":"12551:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2126,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"12578:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":1361,"src":"12578:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12551:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2129,"name":"positionLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"12634:17:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":2130,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":595,"src":"12674:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$595_$","typeString":"type(library FixedPoint128)"}},"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":594,"src":"12674:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2123,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"12513:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":2124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"12513:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12513:198:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12487:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2121,"name":"uint128","nodeType":"ElementaryTypeName","src":"12487:7:13","typeDescriptions":{}}},"id":2133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12487:239:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"12455:271:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"12418:308:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2136,"nodeType":"ExpressionStatement","src":"12418:308:13"},{"expression":{"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2137,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"12739:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":1359,"src":"12739:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2140,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2083,"src":"12775:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12739:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2142,"nodeType":"ExpressionStatement","src":"12739:60:13"},{"expression":{"id":2147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2143,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"12810:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":1361,"src":"12810:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2146,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2085,"src":"12846:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12810:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2148,"nodeType":"ExpressionStatement","src":"12810:60:13"},{"expression":{"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2149,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"12974:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"12974:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2152,"name":"positionLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"12995:17:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2153,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"13015:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":2154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3979,"src":"13015:16:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"12995:36:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"12974:57:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2157,"nodeType":"ExpressionStatement","src":"12974:57:13"},{"eventCall":{"arguments":[{"expression":{"id":2159,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"13067:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":2160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":3977,"src":"13067:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2161,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"13083:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3979,"src":"13083:16:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":2163,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"13101:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2164,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1989,"src":"13110:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2158,"name":"DecreaseLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"13049:17:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint128,uint256,uint256)"}},"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13049:69:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2166,"nodeType":"EmitStatement","src":"13044:74:13"}]},"documentation":{"id":1973,"nodeType":"StructuredDocumentation","src":"10757:43:13","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"0c49ccbe","id":2168,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":1979,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"10957:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":3977,"src":"10957:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1981,"modifierName":{"id":1978,"name":"isAuthorizedForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"10936:20:13","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"10936:36:13"},{"arguments":[{"expression":{"id":1983,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"10996:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":1984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":3985,"src":"10996:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1985,"modifierName":{"id":1982,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3482,"src":"10982:13:13","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"10982:30:13"}],"name":"decreaseLiquidity","nodeType":"FunctionDefinition","overrides":{"id":1977,"nodeType":"OverrideSpecifier","overrides":[],"src":"10918:8:13"},"parameters":{"id":1976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1975,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":2168,"src":"10833:39:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"},"typeName":{"id":1974,"name":"DecreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":3986,"src":"10833:23:13","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_storage_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"}},"visibility":"internal"}],"src":"10832:41:13"},"returnParameters":{"id":1990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1987,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":2168,"src":"11031:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1986,"name":"uint256","nodeType":"ElementaryTypeName","src":"11031:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1989,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":2168,"src":"11048:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1988,"name":"uint256","nodeType":"ElementaryTypeName","src":"11048:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11030:34:13"},"scope":2720,"src":"10806:2320:13","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4015],"body":{"id":2389,"nodeType":"Block","src":"13387:2707:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2184,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"13406:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Max","nodeType":"MemberAccess","referencedDeclaration":4002,"src":"13406:17:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13426:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13406:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2188,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"13431:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Max","nodeType":"MemberAccess","referencedDeclaration":4004,"src":"13431:17:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13451:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13431:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13406:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2183,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13398:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13398:55:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2194,"nodeType":"ExpressionStatement","src":"13398:55:13"},{"assignments":[2196],"declarations":[{"constant":false,"id":2196,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2389,"src":"13544:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2195,"name":"address","nodeType":"ElementaryTypeName","src":"13544:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2211,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2197,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"13564:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":4000,"src":"13564:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13592:1:13","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":2200,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13584:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2199,"name":"address","nodeType":"ElementaryTypeName","src":"13584:7:13","typeDescriptions":{}}},"id":2202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13584:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"13564:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":2208,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"13613:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":4000,"src":"13613:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13564:65:13","trueExpression":{"arguments":[{"id":2206,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13605:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}],"id":2205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13597:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2204,"name":"address","nodeType":"ElementaryTypeName","src":"13597:7:13","typeDescriptions":{}}},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13597:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13544:85:13"},{"assignments":[2213],"declarations":[{"constant":false,"id":2213,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":2389,"src":"13642:25:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":2212,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"13642:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":2218,"initialValue":{"baseExpression":{"id":2214,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"13670:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":2217,"indexExpression":{"expression":{"id":2215,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"13681:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":3998,"src":"13681:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13670:26:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13642:54:13"},{"assignments":[2222],"declarations":[{"constant":false,"id":2222,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":2389,"src":"13709:34:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":2221,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"13709:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":2227,"initialValue":{"baseExpression":{"id":2223,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"13746:16:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$4674_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":2226,"indexExpression":{"expression":{"id":2224,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"13763:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2225,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":1351,"src":"13763:15:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13746:33:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13709:70:13"},{"assignments":[2229],"declarations":[{"constant":false,"id":2229,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":2389,"src":"13792:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"},"typeName":{"id":2228,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"13792:11:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"arguments":[{"id":2233,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"13850:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2234,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2222,"src":"13859:7:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":2231,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"13823:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$4753_$","typeString":"type(library PoolAddress)"}},"id":2232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":4752,"src":"13823:26:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$4674_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":2235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13823:44:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2230,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"13811:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$110_$","typeString":"type(contract IElixirPool)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13811:57:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"nodeType":"VariableDeclarationStatement","src":"13792:76:13"},{"assignments":[2239,2241],"declarations":[{"constant":false,"id":2239,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":2389,"src":"13882:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2238,"name":"uint128","nodeType":"ElementaryTypeName","src":"13882:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":2241,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":2389,"src":"13903:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2240,"name":"uint128","nodeType":"ElementaryTypeName","src":"13903:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":2247,"initialValue":{"components":[{"expression":{"id":2242,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"13927:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2243,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":1363,"src":"13927:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":2244,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"13949:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2245,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":1365,"src":"13949:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":2246,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13926:44:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"13881:89:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2248,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"14092:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"14092:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14113:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14092:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2328,"nodeType":"IfStatement","src":"14088:1000:13","trueBody":{"id":2327,"nodeType":"Block","src":"14116:972:13","statements":[{"expression":{"arguments":[{"expression":{"id":2255,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"14141:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2256,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1353,"src":"14141:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2257,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"14161:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2258,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1355,"src":"14161:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"30","id":2259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14181:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":2252,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"14131:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":183,"src":"14131:9:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_int24_$_t_int24_$_t_uint128_$returns$_t_uint256_$_t_uint256_$","typeString":"function (int24,int24,uint128) external returns (uint256,uint256)"}},"id":2260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14131:52:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":2261,"nodeType":"ExpressionStatement","src":"14131:52:13"},{"assignments":[null,2263,2265,null,null],"declarations":[null,{"constant":false,"id":2263,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":2327,"src":"14201:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2262,"name":"uint256","nodeType":"ElementaryTypeName","src":"14201:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2265,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":2327,"src":"14235:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2264,"name":"uint256","nodeType":"ElementaryTypeName","src":"14235:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":2280,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":2272,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"14335:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}],"id":2271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14327:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2270,"name":"address","nodeType":"ElementaryTypeName","src":"14327:7:13","typeDescriptions":{}}},"id":2273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14327:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":2274,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"14342:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1353,"src":"14342:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2276,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"14362:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2277,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1355,"src":"14362:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":2268,"name":"PositionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4778,"src":"14307:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionKey_$4778_$","typeString":"type(library PositionKey)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"compute","nodeType":"MemberAccess","referencedDeclaration":4777,"src":"14307:19:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_int24_$_t_int24_$returns$_t_bytes32_$","typeString":"function (address,int24,int24) pure returns (bytes32)"}},"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14307:74:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2266,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"14292:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":571,"src":"14292:14:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"function (bytes32) view external returns (uint128,uint256,uint256,uint128,uint128)"}},"id":2279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14292:90:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint256,uint256,uint128,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"14198:184:13"},{"expression":{"id":2296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2281,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"14399:11:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2286,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"14478:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2287,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"14505:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":1359,"src":"14505:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14478:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2290,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"14561:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"14561:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":2292,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":595,"src":"14602:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$595_$","typeString":"type(library FixedPoint128)"}},"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":594,"src":"14602:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2284,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"14440:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"14440:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14440:199:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14414:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2282,"name":"uint128","nodeType":"ElementaryTypeName","src":"14414:7:13","typeDescriptions":{}}},"id":2295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14414:240:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"14399:255:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2297,"nodeType":"ExpressionStatement","src":"14399:255:13"},{"expression":{"id":2313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2298,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"14669:11:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2303,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"14748:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2304,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"14775:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":1361,"src":"14775:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14748:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2307,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"14831:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"14831:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":2309,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":595,"src":"14872:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$595_$","typeString":"type(library FixedPoint128)"}},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":594,"src":"14872:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2301,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"14710:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":2302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"14710:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14710:199:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14684:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2299,"name":"uint128","nodeType":"ElementaryTypeName","src":"14684:7:13","typeDescriptions":{}}},"id":2312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14684:240:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"14669:255:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2314,"nodeType":"ExpressionStatement","src":"14669:255:13"},{"expression":{"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2315,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"14941:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":1359,"src":"14941:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2318,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"14977:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14941:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2320,"nodeType":"ExpressionStatement","src":"14941:60:13"},{"expression":{"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2321,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"15016:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2323,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":1361,"src":"15016:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2324,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"15052:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15016:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2326,"nodeType":"ExpressionStatement","src":"15016:60:13"}]}},{"assignments":[2330,2332],"declarations":[{"constant":false,"id":2330,"mutability":"mutable","name":"amount0Collect","nodeType":"VariableDeclaration","scope":2389,"src":"15170:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2329,"name":"uint128","nodeType":"ElementaryTypeName","src":"15170:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":2332,"mutability":"mutable","name":"amount1Collect","nodeType":"VariableDeclaration","scope":2389,"src":"15194:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2331,"name":"uint128","nodeType":"ElementaryTypeName","src":"15194:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":2350,"initialValue":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2333,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"15252:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Max","nodeType":"MemberAccess","referencedDeclaration":4002,"src":"15252:17:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2335,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"15272:11:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"15252:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":2338,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"15300:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Max","nodeType":"MemberAccess","referencedDeclaration":4002,"src":"15300:17:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15252:65:13","trueExpression":{"id":2337,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"15286:11:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2341,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"15336:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Max","nodeType":"MemberAccess","referencedDeclaration":4004,"src":"15336:17:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2343,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"15356:11:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"15336:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":2346,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"15384:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Max","nodeType":"MemberAccess","referencedDeclaration":4004,"src":"15384:17:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15336:65:13","trueExpression":{"id":2345,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"15370:11:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":2349,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15233:183:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"15169:247:13"},{"expression":{"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2351,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2179,"src":"15484:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2352,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"15493:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2353,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"15483:18:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2356,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2196,"src":"15531:9:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2357,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"15555:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1353,"src":"15555:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2359,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"15588:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2360,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1355,"src":"15588:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":2361,"name":"amount0Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2330,"src":"15621:14:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":2362,"name":"amount1Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2332,"src":"15650:14:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":2354,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"15504:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"collect","nodeType":"MemberAccess","referencedDeclaration":169,"src":"15504:12:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint128_$returns$_t_uint128_$_t_uint128_$","typeString":"function (address,int24,int24,uint128,uint128) external returns (uint128,uint128)"}},"id":2363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15504:171:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"src":"15483:192:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2365,"nodeType":"ExpressionStatement","src":"15483:192:13"},{"expression":{"id":2379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":2366,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"15896:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2368,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":1363,"src":"15896:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":2369,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2213,"src":"15918:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":1365,"src":"15918:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":2371,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"15895:44:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2372,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"15943:11:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2373,"name":"amount0Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2330,"src":"15957:14:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"15943:28:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2375,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"15973:11:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2376,"name":"amount1Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2332,"src":"15987:14:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"15973:28:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":2378,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15942:60:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"src":"15895:107:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2380,"nodeType":"ExpressionStatement","src":"15895:107:13"},{"eventCall":{"arguments":[{"expression":{"id":2382,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"16028:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":3998,"src":"16028:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2384,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2196,"src":"16044:9:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2385,"name":"amount0Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2330,"src":"16055:14:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":2386,"name":"amount1Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2332,"src":"16071:14:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":2381,"name":"Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3862,"src":"16020:7:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256,uint256)"}},"id":2387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16020:66:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2388,"nodeType":"EmitStatement","src":"16015:71:13"}]},"documentation":{"id":2169,"nodeType":"StructuredDocumentation","src":"13134:43:13","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"fc6f7865","id":2390,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":2175,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"13314:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":2176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":3998,"src":"13314:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2177,"modifierName":{"id":2174,"name":"isAuthorizedForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"13293:20:13","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"13293:36:13"}],"name":"collect","nodeType":"FunctionDefinition","overrides":{"id":2173,"nodeType":"OverrideSpecifier","overrides":[],"src":"13275:8:13"},"parameters":{"id":2172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2171,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":2390,"src":"13200:29:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"},"typeName":{"id":2170,"name":"CollectParams","nodeType":"UserDefinedTypeName","referencedDeclaration":4005,"src":"13200:13:13","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_storage_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"}},"visibility":"internal"}],"src":"13199:31:13"},"returnParameters":{"id":2182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2179,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":2390,"src":"13348:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2178,"name":"uint256","nodeType":"ElementaryTypeName","src":"13348:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2181,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":2390,"src":"13365:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2180,"name":"uint256","nodeType":"ElementaryTypeName","src":"13365:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13347:34:13"},"scope":2720,"src":"13183:2911:13","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4023],"body":{"id":2459,"nodeType":"Block","src":"16264:619:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2403,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2395,"src":"16283:9:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16304:1:13","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":2405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16296:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2404,"name":"address","nodeType":"ElementaryTypeName","src":"16296:7:13","typeDescriptions":{}}},"id":2407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16296:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"16283:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2402,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16275:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16275:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2410,"nodeType":"ExpressionStatement","src":"16275:32:13"},{"assignments":[2412],"declarations":[{"constant":false,"id":2412,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":2459,"src":"16320:25:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":2411,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"16320:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":2416,"initialValue":{"baseExpression":{"id":2413,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"16348:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":2415,"indexExpression":{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2393,"src":"16359:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16348:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"16320:47:13"},{"assignments":[2418],"declarations":[{"constant":false,"id":2418,"mutability":"mutable","name":"rewardOwed","nodeType":"VariableDeclaration","scope":2459,"src":"16380:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2417,"name":"uint256","nodeType":"ElementaryTypeName","src":"16380:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2421,"initialValue":{"expression":{"id":2419,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2412,"src":"16401:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2420,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardOwed","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"16401:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16380:40:13"},{"assignments":[2423],"declarations":[{"constant":false,"id":2423,"mutability":"mutable","name":"rewardLastCollected","nodeType":"VariableDeclaration","scope":2459,"src":"16431:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2422,"name":"uint32","nodeType":"ElementaryTypeName","src":"16431:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":2426,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2424,"name":"_clampedTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"16460:17:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":2425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16460:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"16431:48:13"},{"expression":{"id":2431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2427,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2412,"src":"16492:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardOwed","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"16492:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16514:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16492:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2432,"nodeType":"ExpressionStatement","src":"16492:23:13"},{"expression":{"id":2437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2433,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2412,"src":"16526:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardLastCollected","nodeType":"MemberAccess","referencedDeclaration":1371,"src":"16526:28:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2436,"name":"rewardLastCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2423,"src":"16557:19:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"16526:50:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":2438,"nodeType":"ExpressionStatement","src":"16526:50:13"},{"expression":{"arguments":[{"id":2443,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2395,"src":"16648:9:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2444,"name":"rewardOwed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"16672:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2445,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2393,"src":"16697:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":2448,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"16746:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":2449,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"16755:16:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$4674_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":2452,"indexExpression":{"expression":{"id":2450,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2412,"src":"16772:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2451,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":1351,"src":"16772:15:13","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16755:33:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage","typeString":"struct PoolAddress.PoolKey storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$4674_storage","typeString":"struct PoolAddress.PoolKey storage ref"}],"expression":{"id":2446,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"16719:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$4753_$","typeString":"type(library PoolAddress)"}},"id":2447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":4752,"src":"16719:26:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$4674_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":2453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16719:70:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2454,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2412,"src":"16804:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardLastUpdated","nodeType":"MemberAccess","referencedDeclaration":1369,"src":"16804:26:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":2456,"name":"rewardLastCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2423,"src":"16845:19:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"arguments":[{"id":2440,"name":"_elixirRewarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"16605:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2439,"name":"IElixirRewarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5015,"src":"16589:15:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirRewarder_$5015_$","typeString":"type(contract IElixirRewarder)"}},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16589:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirRewarder_$5015","typeString":"contract IElixirRewarder"}},"id":2442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"claimReward","nodeType":"MemberAccess","referencedDeclaration":5014,"src":"16589:44:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint32_$_t_uint32_$returns$__$","typeString":"function (address,uint256,uint256,address,uint32,uint32) external"}},"id":2457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16589:286:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2458,"nodeType":"ExpressionStatement","src":"16589:286:13"}]},"documentation":{"id":2391,"nodeType":"StructuredDocumentation","src":"16102:43:13","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"e70eb392","id":2460,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2399,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2393,"src":"16255:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2400,"modifierName":{"id":2398,"name":"isAuthorizedForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"16234:20:13","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"16234:29:13"}],"name":"claimReward","nodeType":"FunctionDefinition","overrides":{"id":2397,"nodeType":"OverrideSpecifier","overrides":[],"src":"16225:8:13"},"parameters":{"id":2396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2393,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2460,"src":"16172:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2392,"name":"uint256","nodeType":"ElementaryTypeName","src":"16172:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2395,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2460,"src":"16189:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2394,"name":"address","nodeType":"ElementaryTypeName","src":"16189:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16171:36:13"},"returnParameters":{"id":2401,"nodeType":"ParameterList","parameters":[],"src":"16264:0:13"},"scope":2720,"src":"16151:732:13","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4029],"body":{"id":2489,"nodeType":"Block","src":"17034:161:13","statements":[{"assignments":[2471],"declarations":[{"constant":false,"id":2471,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":2489,"src":"17045:25:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":2470,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"17045:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":2475,"initialValue":{"baseExpression":{"id":2472,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"17073:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":2474,"indexExpression":{"id":2473,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"17084:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17073:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"17045:47:13"},{"expression":{"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2476,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"17103:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardLastCollected","nodeType":"MemberAccess","referencedDeclaration":1371,"src":"17103:28:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2479,"name":"_clampedTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"17134:17:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":2480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17134:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"17103:50:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":2482,"nodeType":"ExpressionStatement","src":"17103:50:13"},{"expression":{"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2483,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"17164:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardOwed","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"17164:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17186:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17164:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2488,"nodeType":"ExpressionStatement","src":"17164:23:13"}]},"documentation":{"id":2461,"nodeType":"StructuredDocumentation","src":"16891:43:13","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"29048e7b","id":2490,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2467,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"17025:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2468,"modifierName":{"id":2466,"name":"isAuthorizedForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"17004:20:13","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"17004:29:13"}],"name":"forgoReward","nodeType":"FunctionDefinition","overrides":{"id":2465,"nodeType":"OverrideSpecifier","overrides":[],"src":"16995:8:13"},"parameters":{"id":2464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2463,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2490,"src":"16961:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2462,"name":"uint256","nodeType":"ElementaryTypeName","src":"16961:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16960:17:13"},"returnParameters":{"id":2469,"nodeType":"ParameterList","parameters":[],"src":"17034:0:13"},"scope":2720,"src":"16940:255:13","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4035],"body":{"id":2537,"nodeType":"Block","src":"17339:320:13","statements":[{"assignments":[2501],"declarations":[{"constant":false,"id":2501,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":2537,"src":"17350:25:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":2500,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"17350:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":2505,"initialValue":{"baseExpression":{"id":2502,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"17378:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":2504,"indexExpression":{"id":2503,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"17389:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17378:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"17350:47:13"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2507,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"17430:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2508,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"17430:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17452:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17430:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2511,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"17470:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2512,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":1363,"src":"17470:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17494:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17470:25:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17430:65:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2516,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"17512:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":1365,"src":"17512:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17536:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17512:25:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17430:107:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2521,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"17554:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardOwed","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"17554:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17577:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17554:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17430:148:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2506,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17408:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17408:181:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2527,"nodeType":"ExpressionStatement","src":"17408:181:13"},{"expression":{"id":2531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"17600:26:13","subExpression":{"baseExpression":{"id":2528,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"17607:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":2530,"indexExpression":{"id":2529,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"17618:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17607:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2532,"nodeType":"ExpressionStatement","src":"17600:26:13"},{"expression":{"arguments":[{"id":2534,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"17643:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2533,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6298,"src":"17637:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17637:14:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"17637:14:13"}]},"documentation":{"id":2491,"nodeType":"StructuredDocumentation","src":"17203:43:13","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"42966c68","id":2538,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2497,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"17330:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2498,"modifierName":{"id":2496,"name":"isAuthorizedForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"17309:20:13","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"17309:29:13"}],"name":"burn","nodeType":"FunctionDefinition","overrides":{"id":2495,"nodeType":"OverrideSpecifier","overrides":[],"src":"17300:8:13"},"parameters":{"id":2494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2493,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2538,"src":"17266:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2492,"name":"uint256","nodeType":"ElementaryTypeName","src":"17266:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17265:17:13"},"returnParameters":{"id":2499,"nodeType":"ParameterList","parameters":[],"src":"17339:0:13"},"scope":2720,"src":"17252:407:13","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4041],"body":{"id":2550,"nodeType":"Block","src":"17768:55:13","statements":[{"expression":{"id":2548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2546,"name":"_tokenDescriptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"17779:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2547,"name":"_tokenDescriptor_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2540,"src":"17798:17:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17779:36:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2549,"nodeType":"ExpressionStatement","src":"17779:36:13"}]},"functionSelector":"97f12a83","id":2551,"implemented":true,"kind":"function","modifiers":[{"id":2544,"modifierName":{"id":2543,"name":"onlyFactoryOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1778,"src":"17751:16:13","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"17751:16:13"}],"name":"updateTokenDescriptor","nodeType":"FunctionDefinition","overrides":{"id":2542,"nodeType":"OverrideSpecifier","overrides":[],"src":"17742:8:13"},"parameters":{"id":2541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2540,"mutability":"mutable","name":"_tokenDescriptor_","nodeType":"VariableDeclaration","scope":2551,"src":"17698:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2539,"name":"address","nodeType":"ElementaryTypeName","src":"17698:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17697:27:13"},"returnParameters":{"id":2545,"nodeType":"ParameterList","parameters":[],"src":"17768:0:13"},"scope":2720,"src":"17667:156:13","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4047],"body":{"id":2563,"nodeType":"Block","src":"17929:53:13","statements":[{"expression":{"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2559,"name":"_elixirRewarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"17940:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2560,"name":"_elixirRewarder_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2553,"src":"17958:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17940:34:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2562,"nodeType":"ExpressionStatement","src":"17940:34:13"}]},"functionSelector":"050eb2eb","id":2564,"implemented":true,"kind":"function","modifiers":[{"id":2557,"modifierName":{"id":2556,"name":"onlyFactoryOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1778,"src":"17912:16:13","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"17912:16:13"}],"name":"updateRewardManager","nodeType":"FunctionDefinition","overrides":{"id":2555,"nodeType":"OverrideSpecifier","overrides":[],"src":"17903:8:13"},"parameters":{"id":2554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2553,"mutability":"mutable","name":"_elixirRewarder_","nodeType":"VariableDeclaration","scope":2564,"src":"17860:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2552,"name":"address","nodeType":"ElementaryTypeName","src":"17860:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17859:26:13"},"returnParameters":{"id":2558,"nodeType":"ParameterList","parameters":[],"src":"17929:0:13"},"scope":2720,"src":"17831:151:13","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":2589,"nodeType":"Block","src":"18050:105:13","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2569,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18068:5:13","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"18068:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18091:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":2572,"name":"uint32","nodeType":"ElementaryTypeName","src":"18091:6:13","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":2571,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"18086:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18086:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":2575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"18086:16:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18068:34:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"expression":{"id":2584,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18131:5:13","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"18131:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18124:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":2582,"name":"uint32","nodeType":"ElementaryTypeName","src":"18124:6:13","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18124:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18068:79:13","trueExpression":{"expression":{"arguments":[{"id":2579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18110:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":2578,"name":"uint32","nodeType":"ElementaryTypeName","src":"18110:6:13","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":2577,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"18105:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18105:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":2581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"18105:16:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":2568,"id":2588,"nodeType":"Return","src":"18061:86:13"}]},"id":2590,"implemented":true,"kind":"function","modifiers":[],"name":"_clampedTimestamp","nodeType":"FunctionDefinition","parameters":{"id":2565,"nodeType":"ParameterList","parameters":[],"src":"18016:2:13"},"returnParameters":{"id":2568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2567,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2590,"src":"18042:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2566,"name":"uint32","nodeType":"ElementaryTypeName","src":"18042:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"18041:8:13"},"scope":2720,"src":"17990:165:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2650,"nodeType":"Block","src":"18240:719:13","statements":[{"assignments":[null,null,null,2598],"declarations":[null,null,null,{"constant":false,"id":2598,"mutability":"mutable","name":"rewardPerLiquidityInsideCurrentX64","nodeType":"VariableDeclaration","scope":2650,"src":"18258:42:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":2597,"name":"uint192","nodeType":"ElementaryTypeName","src":"18258:7:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"id":2606,"initialValue":{"arguments":[{"expression":{"id":2601,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"18348:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1353,"src":"18348:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2603,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"18368:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2604,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1355,"src":"18368:18:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":2599,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"18317:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"snapshotCumulativesInside","nodeType":"MemberAccess","referencedDeclaration":255,"src":"18317:30:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int24_$_t_int24_$returns$_t_int56_$_t_uint160_$_t_uint32_$_t_uint192_$","typeString":"function (int24,int24) view external returns (int56,uint160,uint32,uint192)"}},"id":2605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18317:70:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_uint192_$","typeString":"tuple(int56,uint160,uint32,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"18251:136:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2607,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"18404:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2608,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityInsideLastX64","nodeType":"MemberAccess","referencedDeclaration":1367,"src":"18404:40:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2609,"name":"rewardPerLiquidityInsideCurrentX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"18448:34:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"18404:78:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2613,"nodeType":"IfStatement","src":"18400:117:13","trueBody":{"id":2612,"nodeType":"Block","src":"18484:33:13","statements":[{"functionReturnParameters":2596,"id":2611,"nodeType":"Return","src":"18499:7:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2614,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"18533:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardLastUpdated","nodeType":"MemberAccess","referencedDeclaration":1369,"src":"18533:26:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18563:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18533:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2636,"nodeType":"IfStatement","src":"18529:274:13","trueBody":{"id":2635,"nodeType":"Block","src":"18566:237:13","statements":[{"expression":{"id":2633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2618,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"18581:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2620,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardOwed","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"18581:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":2626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2623,"name":"rewardPerLiquidityInsideCurrentX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"18638:34:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2624,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"18675:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2625,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityInsideLastX64","nodeType":"MemberAccess","referencedDeclaration":1367,"src":"18675:40:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"18638:77:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},{"expression":{"id":2627,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"18734:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2628,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"18734:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":2631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18771:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18774:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18771:5:13","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint192","typeString":"uint192"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}],"expression":{"id":2621,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"18604:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":2622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"18604:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18604:187:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18581:210:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2634,"nodeType":"ExpressionStatement","src":"18581:210:13"}]}},{"expression":{"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2637,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"18815:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardPerLiquidityInsideLastX64","nodeType":"MemberAccess","referencedDeclaration":1367,"src":"18815:40:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2640,"name":"rewardPerLiquidityInsideCurrentX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"18858:34:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"18815:77:13","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":2642,"nodeType":"ExpressionStatement","src":"18815:77:13"},{"expression":{"id":2648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2643,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"18903:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":2645,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardLastUpdated","nodeType":"MemberAccess","referencedDeclaration":1369,"src":"18903:26:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2646,"name":"_clampedTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"18932:17:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18932:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18903:48:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":2649,"nodeType":"ExpressionStatement","src":"18903:48:13"}]},"id":2651,"implemented":true,"kind":"function","modifiers":[],"name":"_updateReward","nodeType":"FunctionDefinition","parameters":{"id":2595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2592,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":2651,"src":"18186:25:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":2591,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"18186:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"},{"constant":false,"id":2594,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":2651,"src":"18213:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"},"typeName":{"id":2593,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"18213:11:13","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"visibility":"internal"}],"src":"18185:45:13"},"returnParameters":{"id":2596,"nodeType":"ParameterList","parameters":[],"src":"18240:0:13"},"scope":2720,"src":"18163:796:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2743],"body":{"id":2668,"nodeType":"Block","src":"19051:62:13","statements":[{"expression":{"arguments":[{"id":2665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19077:27:13","subExpression":{"expression":{"baseExpression":{"id":2661,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"19077:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":2663,"indexExpression":{"id":2662,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"19088:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19077:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"id":2664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":1347,"src":"19077:25:13","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":2660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19069:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2659,"name":"uint256","nodeType":"ElementaryTypeName","src":"19069:7:13","typeDescriptions":{}}},"id":2666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19069:36:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2658,"id":2667,"nodeType":"Return","src":"19062:43:13"}]},"id":2669,"implemented":true,"kind":"function","modifiers":[],"name":"_getAndIncrementNonce","nodeType":"FunctionDefinition","overrides":{"id":2655,"nodeType":"OverrideSpecifier","overrides":[],"src":"19024:8:13"},"parameters":{"id":2654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2653,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2669,"src":"18998:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2652,"name":"uint256","nodeType":"ElementaryTypeName","src":"18998:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18997:17:13"},"returnParameters":{"id":2658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2657,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2669,"src":"19042:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2656,"name":"uint256","nodeType":"ElementaryTypeName","src":"19042:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19041:9:13"},"scope":2720,"src":"18967:146:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[5913,6582],"body":{"id":2692,"nodeType":"Block","src":"19244:121:13","statements":[{"expression":{"arguments":[{"arguments":[{"id":2682,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"19271:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2681,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6084,"src":"19263:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19263:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206e6f6e6578697374656e7420746f6b656e","id":2684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19281:27:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_a34d5d5fb66a7aa1196581d4b63842b184b648ae201438341d04b3396c6896a9","typeString":"literal_string \"ERC721: nonexistent token\""},"value":"ERC721: nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a34d5d5fb66a7aa1196581d4b63842b184b648ae201438341d04b3396c6896a9","typeString":"literal_string \"ERC721: nonexistent token\""}],"id":2680,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19255:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19255:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2686,"nodeType":"ExpressionStatement","src":"19255:54:13"},{"expression":{"expression":{"baseExpression":{"id":2687,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"19329:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":2689,"indexExpression":{"id":2688,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"19340:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19329:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"id":2690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"operator","nodeType":"MemberAccess","referencedDeclaration":1349,"src":"19329:28:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2679,"id":2691,"nodeType":"Return","src":"19322:35:13"}]},"documentation":{"id":2670,"nodeType":"StructuredDocumentation","src":"19121:23:13","text":"@inheritdoc IERC721"},"functionSelector":"081812fc","id":2693,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nodeType":"FunctionDefinition","overrides":{"id":2676,"nodeType":"OverrideSpecifier","overrides":[{"id":2674,"name":"ERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":6497,"src":"19209:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$6497","typeString":"contract ERC721"}},{"id":2675,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":6613,"src":"19217:7:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$6613","typeString":"contract IERC721"}}],"src":"19200:25:13"},"parameters":{"id":2673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2672,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2693,"src":"19171:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2671,"name":"uint256","nodeType":"ElementaryTypeName","src":"19171:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19170:17:13"},"returnParameters":{"id":2679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2678,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2693,"src":"19235:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2677,"name":"address","nodeType":"ElementaryTypeName","src":"19235:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19234:9:13"},"scope":2720,"src":"19150:215:13","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[6485],"body":{"id":2718,"nodeType":"Block","src":"19563:107:13","statements":[{"expression":{"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2703,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"19574:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$1374_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":2705,"indexExpression":{"id":2704,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"19585:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19574:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$1374_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"id":2706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"operator","nodeType":"MemberAccess","referencedDeclaration":1349,"src":"19574:28:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2707,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"19605:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19574:33:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2709,"nodeType":"ExpressionStatement","src":"19574:33:13"},{"eventCall":{"arguments":[{"arguments":[{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"19640:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2711,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5701,"src":"19632:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19632:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2714,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"19650:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2715,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"19654:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2710,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6521,"src":"19623:8:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19623:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2717,"nodeType":"EmitStatement","src":"19618:44:13"}]},"documentation":{"id":2694,"nodeType":"StructuredDocumentation","src":"19373:111:13","text":"@dev Overrides _approve to use the operator in the position, which is packed with the position permit nonce"},"id":2719,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","overrides":{"id":2701,"nodeType":"OverrideSpecifier","overrides":[{"id":2700,"name":"ERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":6497,"src":"19555:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$6497","typeString":"contract ERC721"}}],"src":"19546:16:13"},"parameters":{"id":2699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2696,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2719,"src":"19508:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2695,"name":"address","nodeType":"ElementaryTypeName","src":"19508:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2698,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2719,"src":"19520:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2697,"name":"uint256","nodeType":"ElementaryTypeName","src":"19520:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19507:29:13"},"returnParameters":{"id":2702,"nodeType":"ParameterList","parameters":[],"src":"19563:0:13"},"scope":2720,"src":"19490:180:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2721,"src":"844:18829:13"}],"src":"46:19629:13"},"id":13},"contracts/elixir-periphery/base/ERC721Permit.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/ERC721Permit.sol","exportedSymbols":{"Address":[6985],"ChainId":[4321],"Context":[7008],"ERC165":[5108],"ERC721":[6497],"ERC721Permit":[2922],"EnumerableMap":[7568],"EnumerableSet":[8060],"IERC1271":[4206],"IERC165":[5120],"IERC721":[6613],"IERC721Enumerable":[6644],"IERC721Metadata":[6671],"IERC721Permit":[3791],"IERC721Receiver":[6689],"PeripheryValidation":[3497],"SafeMath":[5475],"Strings":[8147]},"id":2923,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2722,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:14"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol","id":2723,"nodeType":"ImportDirective","scope":2923,"sourceUnit":6498,"src":"73:65:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Address.sol","file":"openzeppelin-contracts-solc-0.7/utils/Address.sol","id":2724,"nodeType":"ImportDirective","scope":2923,"sourceUnit":6986,"src":"140:59:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/ChainId.sol","file":"../libraries/ChainId.sol","id":2725,"nodeType":"ImportDirective","scope":2923,"sourceUnit":4322,"src":"203:34:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/external/IERC1271.sol","file":"../interfaces/external/IERC1271.sol","id":2726,"nodeType":"ImportDirective","scope":2923,"sourceUnit":4207,"src":"239:45:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IERC721Permit.sol","file":"../interfaces/IERC721Permit.sol","id":2727,"nodeType":"ImportDirective","scope":2923,"sourceUnit":3792,"src":"286:41:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryValidation.sol","file":"./PeripheryValidation.sol","id":2728,"nodeType":"ImportDirective","scope":2923,"sourceUnit":3498,"src":"329:35:14","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2730,"name":"PeripheryValidation","nodeType":"UserDefinedTypeName","referencedDeclaration":3497,"src":"516:19:14","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryValidation_$3497","typeString":"contract PeripheryValidation"}},"id":2731,"nodeType":"InheritanceSpecifier","src":"516:19:14"},{"baseName":{"id":2732,"name":"ERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":6497,"src":"537:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$6497","typeString":"contract ERC721"}},"id":2733,"nodeType":"InheritanceSpecifier","src":"537:6:14"},{"baseName":{"id":2734,"name":"IERC721Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":3791,"src":"545:13:14","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Permit_$3791","typeString":"contract IERC721Permit"}},"id":2735,"nodeType":"InheritanceSpecifier","src":"545:13:14"}],"contractDependencies":[3497,3791,5108,5120,6497,6613,6644,6671,7008],"contractKind":"contract","documentation":{"id":2729,"nodeType":"StructuredDocumentation","src":"368:114:14","text":"@title ERC721 with permit\n @notice Nonfungible tokens that support an approve via signature, i.e. permit"},"fullyImplemented":false,"id":2922,"linearizedBaseContracts":[2922,3791,6497,6644,6671,6613,5108,5120,7008,3497],"name":"ERC721Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2736,"nodeType":"StructuredDocumentation","src":"566:99:14","text":"@dev Gets the current nonce for a token ID and then increments it, returning the original value"},"id":2743,"implemented":false,"kind":"function","modifiers":[],"name":"_getAndIncrementNonce","nodeType":"FunctionDefinition","parameters":{"id":2739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2738,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2743,"src":"702:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2737,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"701:17:14"},"returnParameters":{"id":2742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2741,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2743,"src":"745:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2740,"name":"uint256","nodeType":"ElementaryTypeName","src":"745:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"744:9:14"},"scope":2922,"src":"671:83:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":2744,"nodeType":"StructuredDocumentation","src":"762:71:14","text":"@dev The hash of the name used in the permit signature verification"},"id":2746,"mutability":"immutable","name":"nameHash","nodeType":"VariableDeclaration","scope":2922,"src":"839:34:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2745,"name":"bytes32","nodeType":"ElementaryTypeName","src":"839:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"documentation":{"id":2747,"nodeType":"StructuredDocumentation","src":"882:81:14","text":"@dev The hash of the version string used in the permit signature verification"},"id":2749,"mutability":"immutable","name":"versionHash","nodeType":"VariableDeclaration","scope":2922,"src":"969:37:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2748,"name":"bytes32","nodeType":"ElementaryTypeName","src":"969:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":2781,"nodeType":"Block","src":"1207:104:14","statements":[{"expression":{"id":2770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2763,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"1218:8:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":2767,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"1245:5:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1239:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2765,"name":"bytes","nodeType":"ElementaryTypeName","src":"1239:5:14","typeDescriptions":{}}},"id":2768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1239:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2764,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1229:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1229:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1218:34:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2771,"nodeType":"ExpressionStatement","src":"1218:34:14"},{"expression":{"id":2779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2772,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"1263:11:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":2776,"name":"version_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2756,"src":"1293:8:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1287:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2774,"name":"bytes","nodeType":"ElementaryTypeName","src":"1287:5:14","typeDescriptions":{}}},"id":2777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1287:15:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2773,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1277:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1277:26:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1263:40:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2780,"nodeType":"ExpressionStatement","src":"1263:40:14"}]},"documentation":{"id":2750,"nodeType":"StructuredDocumentation","src":"1015:49:14","text":"@notice Computes the nameHash and versionHash"},"id":2782,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2759,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"1191:5:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2760,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2754,"src":"1198:7:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":2761,"modifierName":{"id":2758,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"1184:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$6497_$","typeString":"type(contract ERC721)"}},"nodeType":"ModifierInvocation","src":"1184:22:14"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":2757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2752,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":2782,"src":"1092:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2751,"name":"string","nodeType":"ElementaryTypeName","src":"1092:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2754,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":2782,"src":"1122:21:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2753,"name":"string","nodeType":"ElementaryTypeName","src":"1122:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2756,"mutability":"mutable","name":"version_","nodeType":"VariableDeclaration","scope":2782,"src":"1154:22:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2755,"name":"string","nodeType":"ElementaryTypeName","src":"1154:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1081:102:14"},"returnParameters":{"id":2762,"nodeType":"ParameterList","parameters":[],"src":"1207:0:14"},"scope":2922,"src":"1070:241:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3774],"body":{"id":2805,"nodeType":"Block","src":"1421:457:14","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066","id":2792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1633:66:14","typeDescriptions":{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},"value":"0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"},{"id":2793,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"1722:8:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2794,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"1753:11:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2795,"name":"ChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4321,"src":"1787:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChainId_$4321_$","typeString":"type(library ChainId)"}},"id":2796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"get","nodeType":"MemberAccess","referencedDeclaration":4320,"src":"1787:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1787:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":2800,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1831:4:14","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721Permit_$2922","typeString":"contract ERC721Permit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC721Permit_$2922","typeString":"contract ERC721Permit"}],"id":2799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1823:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2798,"name":"address","nodeType":"ElementaryTypeName","src":"1823:7:14","typeDescriptions":{}}},"id":2801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1823:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2790,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1480:3:14","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1480:10:14","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1480:375:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2789,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1452:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1452:418:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2788,"id":2804,"nodeType":"Return","src":"1432:438:14"}]},"documentation":{"id":2783,"nodeType":"StructuredDocumentation","src":"1319:29:14","text":"@inheritdoc IERC721Permit"},"functionSelector":"3644e515","id":2806,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":{"id":2785,"nodeType":"OverrideSpecifier","overrides":[],"src":"1394:8:14"},"parameters":{"id":2784,"nodeType":"ParameterList","parameters":[],"src":"1379:2:14"},"returnParameters":{"id":2788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2787,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2806,"src":"1412:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2786,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1412:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1411:9:14"},"scope":2922,"src":"1354:524:14","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3768],"constant":true,"documentation":{"id":2807,"nodeType":"StructuredDocumentation","src":"1886:146:14","text":"@inheritdoc IERC721Permit\n @dev Value is equal to keccak256(\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\");"},"functionSelector":"30adf81f","id":2811,"mutability":"constant","name":"PERMIT_TYPEHASH","nodeType":"VariableDeclaration","overrides":{"id":2809,"nodeType":"OverrideSpecifier","overrides":[],"src":"2062:8:14"},"scope":2922,"src":"2038:126:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2808,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2038:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834396563663333336535623863393563343066646166633935633161643133366538393134613866623535653964633862623031656161383361326466396164","id":2810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2098:66:14","typeDescriptions":{"typeIdentifier":"t_rational_33437492377378226760087498811281282659873828549087316441254475749622436198829_by_1","typeString":"int_const 3343...(69 digits omitted)...8829"},"value":"0x49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad"},"visibility":"public"},{"baseFunctions":[3790],"body":{"id":2920,"nodeType":"Block","src":"2418:890:14","statements":[{"assignments":[2832],"declarations":[{"constant":false,"id":2832,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":2920,"src":"2429:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2831,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2429:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2853,"initialValue":{"arguments":[{"arguments":[{"hexValue":"1901","id":2836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2526:10:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":2837,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"2559:16:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2559:18:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":2842,"name":"PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"2621:15:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2843,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2814,"src":"2638:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2844,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"2647:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":2846,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"2678:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2845,"name":"_getAndIncrementNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"2656:21:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":2847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2656:30:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2848,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2818,"src":"2688:8:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2840,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2610:3:14","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2841,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2610:10:14","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2610:87:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2839,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2600:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2600:98:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2834,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2487:3:14","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2487:16:14","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2487:230:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2833,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2459:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2459:273:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2429:303:14"},{"assignments":[2855],"declarations":[{"constant":false,"id":2855,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2920,"src":"2743:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2854,"name":"address","nodeType":"ElementaryTypeName","src":"2743:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2859,"initialValue":{"arguments":[{"id":2857,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"2767:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2856,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5701,"src":"2759:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2759:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2743:32:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2861,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2814,"src":"2794:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2862,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"2805:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2794:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732315065726d69743a20617070726f76616c20746f206f776e6572","id":2864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2812:33:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_99779a3a50d1aa184b1171397a4bb9abb7558220b5a24b3fa36ed6aa1232ef51","typeString":"literal_string \"ERC721Permit: approval to owner\""},"value":"ERC721Permit: approval to owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_99779a3a50d1aa184b1171397a4bb9abb7558220b5a24b3fa36ed6aa1232ef51","typeString":"literal_string \"ERC721Permit: approval to owner\""}],"id":2860,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2786:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2786:60:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2866,"nodeType":"ExpressionStatement","src":"2786:60:14"},{"condition":{"arguments":[{"id":2869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"2882:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2867,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6985,"src":"2863:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$6985_$","typeString":"type(library Address)"}},"id":2868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":6709,"src":"2863:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":2870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2863:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2913,"nodeType":"Block","src":"3029:233:14","statements":[{"assignments":[2891],"declarations":[{"constant":false,"id":2891,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","scope":2913,"src":"3044:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2890,"name":"address","nodeType":"ElementaryTypeName","src":"3044:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2898,"initialValue":{"arguments":[{"id":2893,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"3081:6:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2894,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2820,"src":"3089:1:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2895,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"3092:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2896,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2824,"src":"3095:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2892,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"3071:9:14","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":2897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3071:26:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3044:53:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2900,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2891,"src":"3138:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3166:1:14","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":2902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3158:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2901,"name":"address","nodeType":"ElementaryTypeName","src":"3158:7:14","typeDescriptions":{}}},"id":2904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3158:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3138:30:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2906,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2891,"src":"3172:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2907,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"3192:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3172:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3138:59:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964207369676e6174757265","id":2910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3216:19:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7","typeString":"literal_string \"Invalid signature\""},"value":"Invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7","typeString":"literal_string \"Invalid signature\""}],"id":2899,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3112:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3112:138:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2912,"nodeType":"ExpressionStatement","src":"3112:138:14"}]},"id":2914,"nodeType":"IfStatement","src":"2859:403:14","trueBody":{"id":2889,"nodeType":"Block","src":"2890:133:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2876,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"2946:6:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":2879,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"2971:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2880,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2824,"src":"2974:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2881,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2820,"src":"2977:1:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":2877,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2954:3:14","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2954:16:14","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2954:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2873,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"2922:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2872,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4206,"src":"2913:8:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$4206_$","typeString":"type(contract IERC1271)"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2913:15:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$4206","typeString":"contract IERC1271"}},"id":2875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":4205,"src":"2913:32:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes32,bytes memory) view external returns (bytes4)"}},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2913:67:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783136323662613765","id":2884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2984:10:14","typeDescriptions":{"typeIdentifier":"t_rational_371636862_by_1","typeString":"int_const 371636862"},"value":"0x1626ba7e"},"src":"2913:81:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a6564","id":2886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2996:14:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_1b2638459828301e8cd6c7c02856073bacf975379e0867f689bb14feacb780c5","typeString":"literal_string \"Unauthorized\""},"value":"Unauthorized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1b2638459828301e8cd6c7c02856073bacf975379e0867f689bb14feacb780c5","typeString":"literal_string \"Unauthorized\""}],"id":2871,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2905:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2905:106:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2888,"nodeType":"ExpressionStatement","src":"2905:106:14"}]}},{"expression":{"arguments":[{"id":2916,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2814,"src":"3283:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2917,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"3292:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2915,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6485,"src":"3274:8:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3274:26:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2919,"nodeType":"ExpressionStatement","src":"3274:26:14"}]},"documentation":{"id":2812,"nodeType":"StructuredDocumentation","src":"2173:29:14","text":"@inheritdoc IERC721Permit"},"functionSelector":"7ac2ff7b","id":2921,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2828,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2818,"src":"2408:8:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2829,"modifierName":{"id":2827,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3482,"src":"2394:13:14","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"2394:23:14"}],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":2826,"nodeType":"OverrideSpecifier","overrides":[],"src":"2385:8:14"},"parameters":{"id":2825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2814,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2921,"src":"2234:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2813,"name":"address","nodeType":"ElementaryTypeName","src":"2234:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2816,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2921,"src":"2260:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2815,"name":"uint256","nodeType":"ElementaryTypeName","src":"2260:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2818,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2921,"src":"2286:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2817,"name":"uint256","nodeType":"ElementaryTypeName","src":"2286:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2820,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2921,"src":"2313:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2819,"name":"uint8","nodeType":"ElementaryTypeName","src":"2313:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2822,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2921,"src":"2331:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2821,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2331:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2824,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2921,"src":"2351:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2823,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2351:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2223:144:14"},"returnParameters":{"id":2830,"nodeType":"ParameterList","parameters":[],"src":"2418:0:14"},"scope":2922,"src":"2208:1100:14","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":2923,"src":"482:2829:14"}],"src":"46:3267:14"},"id":14},"contracts/elixir-periphery/base/LiquidityManagement.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/LiquidityManagement.sol","exportedSymbols":{"CallbackValidation":[4309],"FixedPoint96":[605],"FullMath":[778],"IERC20":[5553],"IElixirFactory":[88],"IElixirMintCallback":[124],"IElixirPool":[110],"IElixirPoolActions":[220],"IElixirPoolDerivedState":[256],"IElixirPoolEvents":[382],"IElixirPoolImmutables":[422],"IElixirPoolOwnerActions":[468],"IElixirPoolState":[588],"IPeripheryImmutableState":[4079],"IPeripheryPayments":[4105],"IWETH9":[4247],"LiquidityAmounts":[4661],"LiquidityManagement":[3137],"PeripheryImmutableState":[3253],"PeripheryPayments":[3470],"PoolAddress":[4753],"TickMath":[1313],"TransferHelper":[4949]},"id":3138,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2924,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:15"},{"id":2925,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"71:19:15"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirFactory.sol","file":"../../elixir-core/interfaces/IElixirFactory.sol","id":2926,"nodeType":"ImportDirective","scope":3138,"sourceUnit":89,"src":"94:57:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol","file":"../../elixir-core/interfaces/callback/IElixirMintCallback.sol","id":2927,"nodeType":"ImportDirective","scope":3138,"sourceUnit":125,"src":"153:71:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../../elixir-core/libraries/TickMath.sol","id":2928,"nodeType":"ImportDirective","scope":3138,"sourceUnit":1314,"src":"226:50:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":2929,"nodeType":"ImportDirective","scope":3138,"sourceUnit":4754,"src":"280:38:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/CallbackValidation.sol","file":"../libraries/CallbackValidation.sol","id":2930,"nodeType":"ImportDirective","scope":3138,"sourceUnit":4310,"src":"320:45:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/LiquidityAmounts.sol","file":"../libraries/LiquidityAmounts.sol","id":2931,"nodeType":"ImportDirective","scope":3138,"sourceUnit":4662,"src":"367:43:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryPayments.sol","file":"./PeripheryPayments.sol","id":2932,"nodeType":"ImportDirective","scope":3138,"sourceUnit":3471,"src":"414:33:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":2933,"nodeType":"ImportDirective","scope":3138,"sourceUnit":3254,"src":"449:39:15","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2935,"name":"IElixirMintCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":124,"src":"648:19:15","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirMintCallback_$124","typeString":"contract IElixirMintCallback"}},"id":2936,"nodeType":"InheritanceSpecifier","src":"648:19:15"},{"baseName":{"id":2937,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":3253,"src":"669:23:15","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$3253","typeString":"contract PeripheryImmutableState"}},"id":2938,"nodeType":"InheritanceSpecifier","src":"669:23:15"},{"baseName":{"id":2939,"name":"PeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":3470,"src":"694:17:15","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}},"id":2940,"nodeType":"InheritanceSpecifier","src":"694:17:15"}],"contractDependencies":[124,3253,3470,4079,4105],"contractKind":"contract","documentation":{"id":2934,"nodeType":"StructuredDocumentation","src":"492:115:15","text":"@title Liquidity management functions\n @notice Internal functions for safely managing liquidity in Elixir"},"fullyImplemented":false,"id":3137,"linearizedBaseContracts":[3137,3470,3253,4079,4105,124],"name":"LiquidityManagement","nodeType":"ContractDefinition","nodes":[{"canonicalName":"LiquidityManagement.MintCallbackData","id":2945,"members":[{"constant":false,"id":2942,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":2945,"src":"754:27:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":2941,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"754:19:15","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"},{"constant":false,"id":2944,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":2945,"src":"792:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2943,"name":"address","nodeType":"ElementaryTypeName","src":"792:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"MintCallbackData","nodeType":"StructDefinition","scope":3137,"src":"719:94:15","visibility":"public"},{"baseFunctions":[123],"body":{"id":3003,"nodeType":"Block","src":"1005:359:15","statements":[{"assignments":[2957],"declarations":[{"constant":false,"id":2957,"mutability":"mutable","name":"decoded","nodeType":"VariableDeclaration","scope":3003,"src":"1016:31:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$2945_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData"},"typeName":{"id":2956,"name":"MintCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":2945,"src":"1016:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$2945_storage_ptr","typeString":"struct LiquidityManagement.MintCallbackData"}},"visibility":"internal"}],"id":2964,"initialValue":{"arguments":[{"id":2960,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"1061:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":2961,"name":"MintCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2945,"src":"1068:16:15","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$2945_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}}],"id":2962,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1067:18:15","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$2945_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$2945_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}],"expression":{"id":2958,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1050:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1050:10:15","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1050:36:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$2945_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"nodeType":"VariableDeclarationStatement","src":"1016:70:15"},{"expression":{"arguments":[{"id":2968,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"1131:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2969,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"1140:7:15","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$2945_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":2970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":2942,"src":"1140:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":2965,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4309,"src":"1097:18:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$4309_$","typeString":"type(library CallbackValidation)"}},"id":2967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":4308,"src":"1097:33:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_struct$_PoolKey_$4674_memory_ptr_$returns$_t_contract$_IElixirPool_$110_$","typeString":"function (address,struct PoolAddress.PoolKey memory) view returns (contract IElixirPool)"}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1097:59:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":2972,"nodeType":"ExpressionStatement","src":"1097:59:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2973,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2948,"src":"1173:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1187:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1173:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2987,"nodeType":"IfStatement","src":"1169:88:15","trueBody":{"expression":{"arguments":[{"expression":{"expression":{"id":2977,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"1194:7:15","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$2945_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":2978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":2942,"src":"1194:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":2979,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":4669,"src":"1194:22:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2980,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"1218:7:15","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$2945_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":2981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":2944,"src":"1218:13:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2982,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1233:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1233:10:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2984,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2948,"src":"1245:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2976,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3469,"src":"1190:3:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1190:67:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2986,"nodeType":"ExpressionStatement","src":"1190:67:15"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2988,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"1272:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1286:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1272:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3002,"nodeType":"IfStatement","src":"1268:88:15","trueBody":{"expression":{"arguments":[{"expression":{"expression":{"id":2992,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"1293:7:15","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$2945_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":2993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":2942,"src":"1293:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":2994,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":4671,"src":"1293:22:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2995,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"1317:7:15","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$2945_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":2996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":2944,"src":"1317:13:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2997,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1332:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1332:10:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2999,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"1344:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2991,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3469,"src":"1289:3:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1289:67:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3001,"nodeType":"ExpressionStatement","src":"1289:67:15"}}]},"documentation":{"id":2946,"nodeType":"StructuredDocumentation","src":"821:35:15","text":"@inheritdoc IElixirMintCallback"},"functionSelector":"1507a8f4","id":3004,"implemented":true,"kind":"function","modifiers":[],"name":"elixirMintCallback","nodeType":"FunctionDefinition","overrides":{"id":2954,"nodeType":"OverrideSpecifier","overrides":[],"src":"996:8:15"},"parameters":{"id":2953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2948,"mutability":"mutable","name":"amount0Owed","nodeType":"VariableDeclaration","scope":3004,"src":"900:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2947,"name":"uint256","nodeType":"ElementaryTypeName","src":"900:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2950,"mutability":"mutable","name":"amount1Owed","nodeType":"VariableDeclaration","scope":3004,"src":"930:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2949,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2952,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3004,"src":"960:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2951,"name":"bytes","nodeType":"ElementaryTypeName","src":"960:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"889:97:15"},"returnParameters":{"id":2955,"nodeType":"ParameterList","parameters":[],"src":"1005:0:15"},"scope":3137,"src":"862:502:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"LiquidityManagement.AddLiquidityParams","id":3025,"members":[{"constant":false,"id":3006,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":3025,"src":"1409:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3005,"name":"address","nodeType":"ElementaryTypeName","src":"1409:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3008,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":3025,"src":"1434:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3007,"name":"address","nodeType":"ElementaryTypeName","src":"1434:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3010,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":3025,"src":"1459:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3009,"name":"uint24","nodeType":"ElementaryTypeName","src":"1459:6:15","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3012,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3025,"src":"1480:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3011,"name":"address","nodeType":"ElementaryTypeName","src":"1480:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3014,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":3025,"src":"1508:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3013,"name":"int24","nodeType":"ElementaryTypeName","src":"1508:5:15","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3016,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":3025,"src":"1534:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3015,"name":"int24","nodeType":"ElementaryTypeName","src":"1534:5:15","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3018,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":3025,"src":"1560:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3017,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3020,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":3025,"src":"1593:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3019,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3022,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":3025,"src":"1626:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3021,"name":"uint256","nodeType":"ElementaryTypeName","src":"1626:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3024,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":3025,"src":"1655:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3023,"name":"uint256","nodeType":"ElementaryTypeName","src":"1655:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AddLiquidityParams","nodeType":"StructDefinition","scope":3137,"src":"1372:309:15","visibility":"public"},{"body":{"id":3135,"nodeType":"Block","src":"1974:1144:15","statements":[{"assignments":[3042],"declarations":[{"constant":false,"id":3042,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":3135,"src":"1985:34:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":3041,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"1985:19:15","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":3052,"initialValue":{"arguments":[{"expression":{"id":3045,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"2064:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":3006,"src":"2064:13:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3047,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"2087:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3008,"src":"2087:13:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3049,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"2107:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3050,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":3010,"src":"2107:10:15","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":3043,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"2035:11:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$4753_$","typeString":"type(library PoolAddress)"}},"id":3044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":4674,"src":"2035:19:15","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$4674_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":3051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"2035:84:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"nodeType":"VariableDeclarationStatement","src":"1985:134:15"},{"expression":{"id":3061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3053,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"2132:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":3057,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"2178:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3058,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3042,"src":"2187:7:15","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":3055,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"2151:11:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$4753_$","typeString":"type(library PoolAddress)"}},"id":3056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":4752,"src":"2151:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$4674_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":3059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2151:44:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3054,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"2139:11:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$110_$","typeString":"type(contract IElixirPool)"}},"id":3060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2139:57:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"src":"2132:64:15","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":3062,"nodeType":"ExpressionStatement","src":"2132:64:15"},{"id":3098,"nodeType":"Block","src":"2250:502:15","statements":[{"assignments":[3064,null,null,null,null,null,null],"declarations":[{"constant":false,"id":3064,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":3098,"src":"2266:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3063,"name":"uint160","nodeType":"ElementaryTypeName","src":"2266:7:15","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},null,null,null,null,null,null],"id":3068,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3065,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"2302:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":3066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":489,"src":"2302:10:15","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"id":3067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2302:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"nodeType":"VariableDeclarationStatement","src":"2265:49:15"},{"assignments":[3070],"declarations":[{"constant":false,"id":3070,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":3098,"src":"2329:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3069,"name":"uint160","nodeType":"ElementaryTypeName","src":"2329:7:15","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":3076,"initialValue":{"arguments":[{"expression":{"id":3073,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"2381:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":3014,"src":"2381:16:15","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":3071,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1313,"src":"2353:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$1313_$","typeString":"type(library TickMath)"}},"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":1173,"src":"2353:27:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":3075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2353:45:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2329:69:15"},{"assignments":[3078],"declarations":[{"constant":false,"id":3078,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":3098,"src":"2413:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3077,"name":"uint160","nodeType":"ElementaryTypeName","src":"2413:7:15","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":3084,"initialValue":{"arguments":[{"expression":{"id":3081,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"2465:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3082,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":3016,"src":"2465:16:15","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":3079,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1313,"src":"2437:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$1313_$","typeString":"type(library TickMath)"}},"id":3080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":1173,"src":"2437:27:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":3083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2437:45:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2413:69:15"},{"expression":{"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3085,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"2499:9:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3088,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"2569:12:15","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":3089,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"2600:13:15","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":3090,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3078,"src":"2632:13:15","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":3091,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"2664:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0Desired","nodeType":"MemberAccess","referencedDeclaration":3018,"src":"2664:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3093,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"2704:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1Desired","nodeType":"MemberAccess","referencedDeclaration":3020,"src":"2704:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3086,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4661,"src":"2511:16:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$4661_$","typeString":"type(library LiquidityAmounts)"}},"id":3087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmounts","nodeType":"MemberAccess","referencedDeclaration":4511,"src":"2511:39:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint160_$_t_uint256_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint160,uint256,uint256) pure returns (uint128)"}},"id":3095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2511:229:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2499:241:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":3097,"nodeType":"ExpressionStatement","src":"2499:241:15"}]},{"expression":{"id":3120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3099,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"2765:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3100,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"2774:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3101,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2764:18:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3104,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"2809:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":3012,"src":"2809:16:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3106,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"2840:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3107,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":3014,"src":"2840:16:15","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":3108,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"2871:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":3016,"src":"2871:16:15","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":3110,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"2902:9:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"arguments":[{"id":3114,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3042,"src":"2964:7:15","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},{"expression":{"id":3115,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2980:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2980:10:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":3113,"name":"MintCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2945,"src":"2937:16:15","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$2945_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}},"id":3117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["poolKey","payer"],"nodeType":"FunctionCall","src":"2937:55:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$2945_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MintCallbackData_$2945_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}],"expression":{"id":3111,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2926:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2926:10:15","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2926:67:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3102,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"2785:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":3103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":151,"src":"2785:9:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,int24,int24,uint128,bytes memory) external returns (uint256,uint256)"}},"id":3119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:219:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"2764:240:15","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3121,"nodeType":"ExpressionStatement","src":"2764:240:15"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3123,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"3025:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":3124,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"3036:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":3022,"src":"3036:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3025:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3127,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"3057:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":3128,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"3068:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":3129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":3024,"src":"3068:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3057:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3025:60:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"507269636520736c69707061676520636865636b","id":3132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3087:22:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34","typeString":"literal_string \"Price slippage check\""},"value":"Price slippage check"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34","typeString":"literal_string \"Price slippage check\""}],"id":3122,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3017:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3017:93:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3134,"nodeType":"ExpressionStatement","src":"3017:93:15"}]},"documentation":{"id":3026,"nodeType":"StructuredDocumentation","src":"1689:48:15","text":"@notice Add liquidity to an initialized pool"},"id":3136,"implemented":true,"kind":"function","modifiers":[],"name":"addLiquidity","nodeType":"FunctionDefinition","parameters":{"id":3029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3028,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":3136,"src":"1765:32:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams"},"typeName":{"id":3027,"name":"AddLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":3025,"src":"1765:18:15","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$3025_storage_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams"}},"visibility":"internal"}],"src":"1764:34:15"},"returnParameters":{"id":3038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3031,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":3136,"src":"1849:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3030,"name":"uint128","nodeType":"ElementaryTypeName","src":"1849:7:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3033,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3136,"src":"1881:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3032,"name":"uint256","nodeType":"ElementaryTypeName","src":"1881:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3035,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3136,"src":"1911:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3034,"name":"uint256","nodeType":"ElementaryTypeName","src":"1911:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3037,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":3136,"src":"1941:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"},"typeName":{"id":3036,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"1941:11:15","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"visibility":"internal"}],"src":"1834:134:15"},"scope":3137,"src":"1743:1375:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3138,"src":"607:2514:15"}],"src":"46:3077:15"},"id":15},"contracts/elixir-periphery/base/Multicall.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/Multicall.sol","exportedSymbols":{"IMulticall":[3806],"Multicall":[3222]},"id":3223,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3139,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:16"},{"id":3140,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"71:19:16"},{"absolutePath":"contracts/elixir-periphery/interfaces/IMulticall.sol","file":"../interfaces/IMulticall.sol","id":3141,"nodeType":"ImportDirective","scope":3223,"sourceUnit":3807,"src":"94:38:16","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3143,"name":"IMulticall","nodeType":"UserDefinedTypeName","referencedDeclaration":3806,"src":"268:10:16","typeDescriptions":{"typeIdentifier":"t_contract$_IMulticall_$3806","typeString":"contract IMulticall"}},"id":3144,"nodeType":"InheritanceSpecifier","src":"268:10:16"}],"contractDependencies":[3806],"contractKind":"contract","documentation":{"id":3142,"nodeType":"StructuredDocumentation","src":"136:101:16","text":"@title Multicall\n @notice Enables calling multiple methods in a single call to the contract"},"fullyImplemented":true,"id":3222,"linearizedBaseContracts":[3222,3806],"name":"Multicall","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[3805],"body":{"id":3220,"nodeType":"Block","src":"417:570:16","statements":[{"expression":{"id":3162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3155,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3153,"src":"428:7:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3159,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3148,"src":"450:4:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"450:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"438:11:16","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":3156,"name":"bytes","nodeType":"ElementaryTypeName","src":"442:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":3157,"nodeType":"ArrayTypeName","src":"442:7:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":3161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"438:24:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"428:34:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":3163,"nodeType":"ExpressionStatement","src":"428:34:16"},{"body":{"id":3218,"nodeType":"Block","src":"515:465:16","statements":[{"assignments":[3176,3178],"declarations":[{"constant":false,"id":3176,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":3218,"src":"531:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3175,"name":"bool","nodeType":"ElementaryTypeName","src":"531:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3178,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":3218,"src":"545:19:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3177,"name":"bytes","nodeType":"ElementaryTypeName","src":"545:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3188,"initialValue":{"arguments":[{"baseExpression":{"id":3184,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3148,"src":"595:4:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":3186,"indexExpression":{"id":3185,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"600:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"595:7:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":3181,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"576:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$3222","typeString":"contract Multicall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Multicall_$3222","typeString":"contract Multicall"}],"id":3180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"568:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3179,"name":"address","nodeType":"ElementaryTypeName","src":"568:7:16","typeDescriptions":{}}},"id":3182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"568:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"568:26:16","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":3187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"568:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"530:73:16"},{"condition":{"id":3190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"624:8:16","subExpression":{"id":3189,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3176,"src":"625:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3211,"nodeType":"IfStatement","src":"620:313:16","trueBody":{"id":3210,"nodeType":"Block","src":"634:299:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3191,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"738:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"738:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3638","id":3193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:2:16","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"68"},"src":"738:18:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3198,"nodeType":"IfStatement","src":"734:32:16","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3195,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"758:6:16","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":3196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"758:8:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3197,"nodeType":"ExpressionStatement","src":"758:8:16"}},{"AST":{"nodeType":"YulBlock","src":"794:69:16","statements":[{"nodeType":"YulAssignment","src":"817:27:16","value":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"831:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"839:4:16","type":"","value":"0x04"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"827:3:16"},"nodeType":"YulFunctionCall","src":"827:17:16"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"817:6:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3178,"isOffset":false,"isSlot":false,"src":"817:6:16","valueSize":1},{"declaration":3178,"isOffset":false,"isSlot":false,"src":"831:6:16","valueSize":1}],"id":3199,"nodeType":"InlineAssembly","src":"785:78:16"},{"expression":{"arguments":[{"arguments":[{"id":3203,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"899:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":3205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"908:6:16","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":3204,"name":"string","nodeType":"ElementaryTypeName","src":"908:6:16","typeDescriptions":{}}}],"id":3206,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"907:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":3201,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"888:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"888:10:16","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:28:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3200,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"881:6:16","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":3208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"881:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3209,"nodeType":"ExpressionStatement","src":"881:36:16"}]}},{"expression":{"id":3216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3212,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3153,"src":"949:7:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":3214,"indexExpression":{"id":3213,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"957:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"949:10:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3215,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"962:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"949:19:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3217,"nodeType":"ExpressionStatement","src":"949:19:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3168,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"493:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3169,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3148,"src":"497:4:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":3170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"497:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"493:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3219,"initializationExpression":{"assignments":[3165],"declarations":[{"constant":false,"id":3165,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":3219,"src":"478:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3164,"name":"uint256","nodeType":"ElementaryTypeName","src":"478:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3167,"initialValue":{"hexValue":"30","id":3166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"490:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"478:13:16"},"loopExpression":{"expression":{"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"510:3:16","subExpression":{"id":3172,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"510:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3174,"nodeType":"ExpressionStatement","src":"510:3:16"},"nodeType":"ForStatement","src":"473:507:16"}]},"documentation":{"id":3145,"nodeType":"StructuredDocumentation","src":"286:26:16","text":"@inheritdoc IMulticall"},"functionSelector":"ac9650d8","id":3221,"implemented":true,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","overrides":{"id":3150,"nodeType":"OverrideSpecifier","overrides":[],"src":"375:8:16"},"parameters":{"id":3149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3148,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3221,"src":"337:21:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":3146,"name":"bytes","nodeType":"ElementaryTypeName","src":"337:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":3147,"nodeType":"ArrayTypeName","src":"337:7:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"336:23:16"},"returnParameters":{"id":3154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3153,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":3221,"src":"393:22:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":3151,"name":"bytes","nodeType":"ElementaryTypeName","src":"393:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":3152,"nodeType":"ArrayTypeName","src":"393:7:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"392:24:16"},"scope":3222,"src":"318:669:16","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":3223,"src":"237:753:16"}],"src":"46:946:16"},"id":16},"contracts/elixir-periphery/base/PeripheryImmutableState.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","exportedSymbols":{"IPeripheryImmutableState":[4079],"PeripheryImmutableState":[3253]},"id":3254,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3224,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:17"},{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol","file":"../interfaces/IPeripheryImmutableState.sol","id":3225,"nodeType":"ImportDirective","scope":3254,"sourceUnit":4080,"src":"73:52:17","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3227,"name":"IPeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":4079,"src":"259:24:17","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryImmutableState_$4079","typeString":"contract IPeripheryImmutableState"}},"id":3228,"nodeType":"InheritanceSpecifier","src":"259:24:17"}],"contractDependencies":[4079],"contractKind":"contract","documentation":{"id":3226,"nodeType":"StructuredDocumentation","src":"129:85:17","text":"@title Immutable state\n @notice Immutable state used by periphery contracts"},"fullyImplemented":true,"id":3253,"linearizedBaseContracts":[3253,4079],"name":"PeripheryImmutableState","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[4072],"constant":false,"documentation":{"id":3229,"nodeType":"StructuredDocumentation","src":"291:40:17","text":"@inheritdoc IPeripheryImmutableState"},"functionSelector":"c45a0155","id":3232,"mutability":"immutable","name":"factory","nodeType":"VariableDeclaration","overrides":{"id":3231,"nodeType":"OverrideSpecifier","overrides":[],"src":"362:8:17"},"scope":3253,"src":"337:41:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3230,"name":"address","nodeType":"ElementaryTypeName","src":"337:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[4078],"constant":false,"documentation":{"id":3233,"nodeType":"StructuredDocumentation","src":"385:40:17","text":"@inheritdoc IPeripheryImmutableState"},"functionSelector":"4aa4a4fc","id":3236,"mutability":"immutable","name":"WETH9","nodeType":"VariableDeclaration","overrides":{"id":3235,"nodeType":"OverrideSpecifier","overrides":[],"src":"456:8:17"},"scope":3253,"src":"431:39:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3234,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":3251,"nodeType":"Block","src":"525:62:17","statements":[{"expression":{"id":3245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3243,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"536:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3244,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3238,"src":"546:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"536:18:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3246,"nodeType":"ExpressionStatement","src":"536:18:17"},{"expression":{"id":3249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3247,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"565:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3248,"name":"_WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"573:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"565:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3250,"nodeType":"ExpressionStatement","src":"565:14:17"}]},"id":3252,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3238,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":3252,"src":"491:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3237,"name":"address","nodeType":"ElementaryTypeName","src":"491:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3240,"mutability":"mutable","name":"_WETH9","nodeType":"VariableDeclaration","scope":3252,"src":"509:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3239,"name":"address","nodeType":"ElementaryTypeName","src":"509:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"490:34:17"},"returnParameters":{"id":3242,"nodeType":"ParameterList","parameters":[],"src":"525:0:17"},"scope":3253,"src":"479:108:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3254,"src":"214:376:17"}],"src":"46:546:17"},"id":17},"contracts/elixir-periphery/base/PeripheryPayments.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/PeripheryPayments.sol","exportedSymbols":{"IERC20":[5553],"IPeripheryImmutableState":[4079],"IPeripheryPayments":[4105],"IWETH9":[4247],"PeripheryImmutableState":[3253],"PeripheryPayments":[3470],"TransferHelper":[4949]},"id":3471,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3255,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:18"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","id":3256,"nodeType":"ImportDirective","scope":3471,"sourceUnit":5554,"src":"74:64:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol","file":"../interfaces/IPeripheryPayments.sol","id":3257,"nodeType":"ImportDirective","scope":3471,"sourceUnit":4106,"src":"142:46:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/external/IWETH9.sol","file":"../interfaces/external/IWETH9.sol","id":3258,"nodeType":"ImportDirective","scope":3471,"sourceUnit":4248,"src":"190:43:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/TransferHelper.sol","file":"../libraries/TransferHelper.sol","id":3259,"nodeType":"ImportDirective","scope":3471,"sourceUnit":4950,"src":"237:41:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":3260,"nodeType":"ImportDirective","scope":3471,"sourceUnit":3254,"src":"282:39:18","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3261,"name":"IPeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":4105,"src":"364:18:18","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPayments_$4105","typeString":"contract IPeripheryPayments"}},"id":3262,"nodeType":"InheritanceSpecifier","src":"364:18:18"},{"baseName":{"id":3263,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":3253,"src":"384:23:18","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$3253","typeString":"contract PeripheryImmutableState"}},"id":3264,"nodeType":"InheritanceSpecifier","src":"384:23:18"}],"contractDependencies":[3253,4079,4105],"contractKind":"contract","fullyImplemented":false,"id":3470,"linearizedBaseContracts":[3470,3253,4079,4105],"name":"PeripheryPayments","nodeType":"ContractDefinition","nodes":[{"body":{"id":3275,"nodeType":"Block","src":"442:60:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3268,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"461:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"461:10:18","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3270,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"475:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"461:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f74205745544839","id":3272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"482:11:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_9a5f12903ee10b20c1ea1ca8d6f6723d553112d744fe8db2bc5453efb990e6b1","typeString":"literal_string \"Not WETH9\""},"value":"Not WETH9"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9a5f12903ee10b20c1ea1ca8d6f6723d553112d744fe8db2bc5453efb990e6b1","typeString":"literal_string \"Not WETH9\""}],"id":3267,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"453:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"453:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3274,"nodeType":"ExpressionStatement","src":"453:41:18"}]},"id":3276,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3265,"nodeType":"ParameterList","parameters":[],"src":"422:2:18"},"returnParameters":{"id":3266,"nodeType":"ParameterList","parameters":[],"src":"442:0:18"},"scope":3470,"src":"415:87:18","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4090],"body":{"id":3323,"nodeType":"Block","src":"637:318:18","statements":[{"assignments":[3286],"declarations":[{"constant":false,"id":3286,"mutability":"mutable","name":"balanceWETH9","nodeType":"VariableDeclaration","scope":3323,"src":"648:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3285,"name":"uint256","nodeType":"ElementaryTypeName","src":"648:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3296,"initialValue":{"arguments":[{"arguments":[{"id":3293,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"703:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}],"id":3292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"695:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3291,"name":"address","nodeType":"ElementaryTypeName","src":"695:7:18","typeDescriptions":{}}},"id":3294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"695:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":3288,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"678:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3287,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"671:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$4247_$","typeString":"type(contract IWETH9)"}},"id":3289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"671:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$4247","typeString":"contract IWETH9"}},"id":3290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5492,"src":"671:23:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"671:38:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"648:61:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3298,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3286,"src":"728:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3299,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3279,"src":"744:13:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"728:29:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e74205745544839","id":3301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"759:20:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_01e23337f78f001c03af3011e04e4dea54f4997ff97d41da263c1606bf0f9f73","typeString":"literal_string \"Insufficient WETH9\""},"value":"Insufficient WETH9"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_01e23337f78f001c03af3011e04e4dea54f4997ff97d41da263c1606bf0f9f73","typeString":"literal_string \"Insufficient WETH9\""}],"id":3297,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"720:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"720:60:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3303,"nodeType":"ExpressionStatement","src":"720:60:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3304,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3286,"src":"797:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"812:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"797:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3322,"nodeType":"IfStatement","src":"793:155:18","trueBody":{"id":3321,"nodeType":"Block","src":"815:133:18","statements":[{"expression":{"arguments":[{"id":3311,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3286,"src":"853:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3308,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"837:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3307,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"830:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$4247_$","typeString":"type(contract IWETH9)"}},"id":3309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"830:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$4247","typeString":"contract IWETH9"}},"id":3310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":4246,"src":"830:22:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":3312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"830:36:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3313,"nodeType":"ExpressionStatement","src":"830:36:18"},{"expression":{"arguments":[{"id":3317,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"912:9:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3318,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3286,"src":"923:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3314,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4949,"src":"881:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$4949_$","typeString":"type(library TransferHelper)"}},"id":3316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":4948,"src":"881:30:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"881:55:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3320,"nodeType":"ExpressionStatement","src":"881:55:18"}]}}]},"documentation":{"id":3277,"nodeType":"StructuredDocumentation","src":"510:34:18","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"49404b7c","id":3324,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapWETH9","nodeType":"FunctionDefinition","overrides":{"id":3283,"nodeType":"OverrideSpecifier","overrides":[],"src":"628:8:18"},"parameters":{"id":3282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3279,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":3324,"src":"571:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3278,"name":"uint256","nodeType":"ElementaryTypeName","src":"571:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3281,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3324,"src":"594:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3280,"name":"address","nodeType":"ElementaryTypeName","src":"594:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"570:42:18"},"returnParameters":{"id":3284,"nodeType":"ParameterList","parameters":[],"src":"637:0:18"},"scope":3470,"src":"550:405:18","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[4104],"body":{"id":3367,"nodeType":"Block","src":"1138:271:18","statements":[{"assignments":[3336],"declarations":[{"constant":false,"id":3336,"mutability":"mutable","name":"balanceToken","nodeType":"VariableDeclaration","scope":3367,"src":"1149:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3335,"name":"uint256","nodeType":"ElementaryTypeName","src":"1149:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3346,"initialValue":{"arguments":[{"arguments":[{"id":3343,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1204:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}],"id":3342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1196:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3341,"name":"address","nodeType":"ElementaryTypeName","src":"1196:7:18","typeDescriptions":{}}},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1196:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":3338,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"1179:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3337,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5553,"src":"1172:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5553_$","typeString":"type(contract IERC20)"}},"id":3339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1172:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5553","typeString":"contract IERC20"}},"id":3340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5492,"src":"1172:23:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1172:38:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1149:61:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3348,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3336,"src":"1229:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3349,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3329,"src":"1245:13:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1229:29:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e7420746f6b656e","id":3351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1260:20:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_2cf3b53843c7738cfb0b95230b455802cee89f2ea29be4a30eee707228c97571","typeString":"literal_string \"Insufficient token\""},"value":"Insufficient token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2cf3b53843c7738cfb0b95230b455802cee89f2ea29be4a30eee707228c97571","typeString":"literal_string \"Insufficient token\""}],"id":3347,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1221:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1221:60:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3353,"nodeType":"ExpressionStatement","src":"1221:60:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3354,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3336,"src":"1298:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1313:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1298:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3366,"nodeType":"IfStatement","src":"1294:108:18","trueBody":{"id":3365,"nodeType":"Block","src":"1316:86:18","statements":[{"expression":{"arguments":[{"id":3360,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"1359:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3361,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"1366:9:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3362,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3336,"src":"1377:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3357,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4949,"src":"1331:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$4949_$","typeString":"type(library TransferHelper)"}},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":4876,"src":"1331:27:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1331:59:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3364,"nodeType":"ExpressionStatement","src":"1331:59:18"}]}}]},"documentation":{"id":3325,"nodeType":"StructuredDocumentation","src":"963:34:18","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"df2ab5bb","id":3368,"implemented":true,"kind":"function","modifiers":[],"name":"sweepToken","nodeType":"FunctionDefinition","overrides":{"id":3333,"nodeType":"OverrideSpecifier","overrides":[],"src":"1129:8:18"},"parameters":{"id":3332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3327,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3368,"src":"1033:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3326,"name":"address","nodeType":"ElementaryTypeName","src":"1033:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3329,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":3368,"src":"1057:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3328,"name":"uint256","nodeType":"ElementaryTypeName","src":"1057:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3331,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3368,"src":"1089:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3330,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1022:91:18"},"returnParameters":{"id":3334,"nodeType":"ParameterList","parameters":[],"src":"1138:0:18"},"scope":3470,"src":"1003:406:18","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[4094],"body":{"id":3376,"nodeType":"Block","src":"1504:31:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3373,"name":"_refundETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"1515:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1515:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3375,"nodeType":"ExpressionStatement","src":"1515:12:18"}]},"documentation":{"id":3369,"nodeType":"StructuredDocumentation","src":"1417:34:18","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"12210e8a","id":3377,"implemented":true,"kind":"function","modifiers":[],"name":"refundETH","nodeType":"FunctionDefinition","overrides":{"id":3371,"nodeType":"OverrideSpecifier","overrides":[],"src":"1495:8:18"},"parameters":{"id":3370,"nodeType":"ParameterList","parameters":[],"src":"1475:2:18"},"returnParameters":{"id":3372,"nodeType":"ParameterList","parameters":[],"src":"1504:0:18"},"scope":3470,"src":"1457:78:18","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":3400,"nodeType":"Block","src":"1574:115:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":3382,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1597:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}],"id":3381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1589:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3380,"name":"address","nodeType":"ElementaryTypeName","src":"1589:7:18","typeDescriptions":{}}},"id":3383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1589:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":3384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"1589:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1613:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1589:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3399,"nodeType":"IfStatement","src":"1585:96:18","trueBody":{"expression":{"arguments":[{"expression":{"id":3390,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1647:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1647:10:18","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"arguments":[{"id":3394,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1667:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}],"id":3393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1659:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3392,"name":"address","nodeType":"ElementaryTypeName","src":"1659:7:18","typeDescriptions":{}}},"id":3395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1659:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"1659:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3387,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4949,"src":"1616:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$4949_$","typeString":"type(library TransferHelper)"}},"id":3389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":4948,"src":"1616:30:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1616:65:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3398,"nodeType":"ExpressionStatement","src":"1616:65:18"}}]},"id":3401,"implemented":true,"kind":"function","modifiers":[],"name":"_refundETH","nodeType":"FunctionDefinition","parameters":{"id":3378,"nodeType":"ParameterList","parameters":[],"src":"1562:2:18"},"returnParameters":{"id":3379,"nodeType":"ParameterList","parameters":[],"src":"1574:0:18"},"scope":3470,"src":"1543:146:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3468,"nodeType":"Block","src":"2015:587:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3413,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3404,"src":"2030:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3414,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"2039:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2030:14:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":3418,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2056:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}],"id":3417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2048:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3416,"name":"address","nodeType":"ElementaryTypeName","src":"2048:7:18","typeDescriptions":{}}},"id":3419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2048:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":3420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2048:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3421,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3410,"src":"2073:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2048:30:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2030:48:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3441,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3406,"src":"2275:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3444,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2292:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$3470","typeString":"contract PeripheryPayments"}],"id":3443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2284:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3442,"name":"address","nodeType":"ElementaryTypeName","src":"2284:7:18","typeDescriptions":{}}},"id":3445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2284:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2275:22:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3465,"nodeType":"Block","src":"2476:119:18","statements":[{"expression":{"arguments":[{"id":3459,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3404,"src":"2552:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3460,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3406,"src":"2559:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3461,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3408,"src":"2566:9:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3462,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3410,"src":"2577:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3456,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4949,"src":"2520:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$4949_$","typeString":"type(library TransferHelper)"}},"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":4830,"src":"2520:31:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":3463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2520:63:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3464,"nodeType":"ExpressionStatement","src":"2520:63:18"}]},"id":3466,"nodeType":"IfStatement","src":"2271:324:18","trueBody":{"id":3455,"nodeType":"Block","src":"2299:171:18","statements":[{"expression":{"arguments":[{"id":3450,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3404,"src":"2434:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3451,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3408,"src":"2441:9:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3452,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3410,"src":"2452:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3447,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4949,"src":"2406:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$4949_$","typeString":"type(library TransferHelper)"}},"id":3449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":4876,"src":"2406:27:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2406:52:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3454,"nodeType":"ExpressionStatement","src":"2406:52:18"}]}},"id":3467,"nodeType":"IfStatement","src":"2026:569:18","trueBody":{"id":3440,"nodeType":"Block","src":"2080:185:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":3425,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"2133:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3424,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"2126:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$4247_$","typeString":"type(contract IWETH9)"}},"id":3426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2126:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$4247","typeString":"contract IWETH9"}},"id":3427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":4240,"src":"2126:21:18","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":3429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":3428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3410,"src":"2155:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2126:35:18","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":3430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2126:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3431,"nodeType":"ExpressionStatement","src":"2126:37:18"},{"expression":{"arguments":[{"id":3436,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3408,"src":"2236:9:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3410,"src":"2247:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3433,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"2220:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3432,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"2213:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$4247_$","typeString":"type(contract IWETH9)"}},"id":3434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2213:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$4247","typeString":"contract IWETH9"}},"id":3435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5502,"src":"2213:22:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2213:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3439,"nodeType":"ExpressionStatement","src":"2213:40:18"}]}}]},"documentation":{"id":3402,"nodeType":"StructuredDocumentation","src":"1697:183:18","text":"@param token The token to pay\n @param payer The entity that must pay\n @param recipient The entity that will receive payment\n @param value The amount to pay"},"id":3469,"implemented":true,"kind":"function","modifiers":[],"name":"pay","nodeType":"FunctionDefinition","parameters":{"id":3411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3404,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3469,"src":"1909:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3403,"name":"address","nodeType":"ElementaryTypeName","src":"1909:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3406,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":3469,"src":"1933:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3405,"name":"address","nodeType":"ElementaryTypeName","src":"1933:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3408,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3469,"src":"1957:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3407,"name":"address","nodeType":"ElementaryTypeName","src":"1957:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3410,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3469,"src":"1985:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3409,"name":"uint256","nodeType":"ElementaryTypeName","src":"1985:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1898:107:18"},"returnParameters":{"id":3412,"nodeType":"ParameterList","parameters":[],"src":"2015:0:18"},"scope":3470,"src":"1886:716:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3471,"src":"325:2280:18"}],"src":"46:2561:18"},"id":18},"contracts/elixir-periphery/base/PeripheryValidation.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/PeripheryValidation.sol","exportedSymbols":{"PeripheryValidation":[3497]},"id":3498,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3472,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:19"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3497,"linearizedBaseContracts":[3497],"name":"PeripheryValidation","nodeType":"ContractDefinition","nodes":[{"body":{"id":3481,"nodeType":"Block","src":"159:55:19","statements":[{"expression":{"arguments":[{"id":3477,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3474,"src":"185:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3476,"name":"_checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3496,"src":"170:14:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":3478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"170:24:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3479,"nodeType":"ExpressionStatement","src":"170:24:19"},{"id":3480,"nodeType":"PlaceholderStatement","src":"205:1:19"}]},"id":3482,"name":"checkDeadline","nodeType":"ModifierDefinition","parameters":{"id":3475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3474,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3482,"src":"141:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3473,"name":"uint256","nodeType":"ElementaryTypeName","src":"141:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"140:18:19"},"src":"118:96:19","virtual":false,"visibility":"internal"},{"body":{"id":3495,"nodeType":"Block","src":"277:78:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3488,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"296:5:19","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"296:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3490,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3484,"src":"315:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"296:27:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73616374696f6e20746f6f206f6c64","id":3492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"325:21:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_c2621685b6a86291a4533558eb72fba04db12a0363db47624d86d9bbb608d293","typeString":"literal_string \"Transaction too old\""},"value":"Transaction too old"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c2621685b6a86291a4533558eb72fba04db12a0363db47624d86d9bbb608d293","typeString":"literal_string \"Transaction too old\""}],"id":3487,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"288:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"288:59:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3494,"nodeType":"ExpressionStatement","src":"288:59:19"}]},"id":3496,"implemented":true,"kind":"function","modifiers":[],"name":"_checkDeadline","nodeType":"FunctionDefinition","parameters":{"id":3485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3484,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3496,"src":"246:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3483,"name":"uint256","nodeType":"ElementaryTypeName","src":"246:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"245:18:19"},"returnParameters":{"id":3486,"nodeType":"ParameterList","parameters":[],"src":"277:0:19"},"scope":3497,"src":"222:133:19","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":3498,"src":"73:285:19"}],"src":"46:314:19"},"id":19},"contracts/elixir-periphery/base/PoolInitializer.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/PoolInitializer.sol","exportedSymbols":{"IElixirFactory":[88],"IElixirPool":[110],"IElixirPoolActions":[220],"IElixirPoolDerivedState":[256],"IElixirPoolEvents":[382],"IElixirPoolImmutables":[422],"IElixirPoolOwnerActions":[468],"IElixirPoolState":[588],"IPeripheryImmutableState":[4079],"IPoolInitializer":[4124],"PeripheryImmutableState":[3253],"PoolInitializer":[3589]},"id":3590,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3499,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:20"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirFactory.sol","file":"../../elixir-core/interfaces/IElixirFactory.sol","id":3500,"nodeType":"ImportDirective","scope":3590,"sourceUnit":89,"src":"73:57:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":3501,"nodeType":"ImportDirective","scope":3590,"sourceUnit":111,"src":"132:54:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":3502,"nodeType":"ImportDirective","scope":3590,"sourceUnit":3254,"src":"190:39:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPoolInitializer.sol","file":"../interfaces/IPoolInitializer.sol","id":3503,"nodeType":"ImportDirective","scope":3590,"sourceUnit":4125,"src":"231:44:20","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3505,"name":"IPoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":4124,"src":"361:16:20","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolInitializer_$4124","typeString":"contract IPoolInitializer"}},"id":3506,"nodeType":"InheritanceSpecifier","src":"361:16:20"},{"baseName":{"id":3507,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":3253,"src":"379:23:20","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$3253","typeString":"contract PeripheryImmutableState"}},"id":3508,"nodeType":"InheritanceSpecifier","src":"379:23:20"}],"contractDependencies":[3253,4079,4124],"contractKind":"contract","documentation":{"id":3504,"nodeType":"StructuredDocumentation","src":"279:45:20","text":"@title Creates and initializes V3 Pools"},"fullyImplemented":false,"id":3589,"linearizedBaseContracts":[3589,3253,4079,4124],"name":"PoolInitializer","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[4123],"body":{"id":3587,"nodeType":"Block","src":"650:520:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3524,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"669:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3525,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3513,"src":"678:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"669:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3523,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"661:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":3527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"661:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3528,"nodeType":"ExpressionStatement","src":"661:24:20"},{"expression":{"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3529,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"696:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3534,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"735:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3535,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3513,"src":"743:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3536,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"751:3:20","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"arguments":[{"id":3531,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"718:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3530,"name":"IElixirFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"703:14:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirFactory_$88_$","typeString":"type(contract IElixirFactory)"}},"id":3532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"703:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirFactory_$88","typeString":"contract IElixirFactory"}},"id":3533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":61,"src":"703:31:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) view external returns (address)"}},"id":3537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"703:52:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"696:59:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3539,"nodeType":"ExpressionStatement","src":"696:59:20"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3540,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"772:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"788:1:20","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":3542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"780:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3541,"name":"address","nodeType":"ElementaryTypeName","src":"780:7:20","typeDescriptions":{}}},"id":3544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"780:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"772:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3585,"nodeType":"Block","src":"944:219:20","statements":[{"assignments":[3566,null,null,null,null,null,null],"declarations":[{"constant":false,"id":3566,"mutability":"mutable","name":"sqrtPriceX96Existing","nodeType":"VariableDeclaration","scope":3585,"src":"960:28:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3565,"name":"uint160","nodeType":"ElementaryTypeName","src":"960:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},null,null,null,null,null,null],"id":3572,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":3568,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"1016:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3567,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1004:11:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$110_$","typeString":"type(contract IElixirPool)"}},"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1004:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":3570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":489,"src":"1004:23:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"id":3571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1004:25:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"nodeType":"VariableDeclarationStatement","src":"959:70:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3573,"name":"sqrtPriceX96Existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"1048:20:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1072:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1048:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3584,"nodeType":"IfStatement","src":"1044:108:20","trueBody":{"id":3583,"nodeType":"Block","src":"1075:77:20","statements":[{"expression":{"arguments":[{"id":3580,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3517,"src":"1123:12:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"id":3577,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"1106:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3576,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1094:11:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$110_$","typeString":"type(contract IElixirPool)"}},"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":3579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":133,"src":"1094:28:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint160_$returns$__$","typeString":"function (uint160) external"}},"id":3581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:42:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3582,"nodeType":"ExpressionStatement","src":"1094:42:20"}]}}]},"id":3586,"nodeType":"IfStatement","src":"768:395:20","trueBody":{"id":3564,"nodeType":"Block","src":"792:146:20","statements":[{"expression":{"id":3555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3546,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"807:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3551,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"849:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3552,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3513,"src":"857:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3553,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"865:3:20","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"arguments":[{"id":3548,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"829:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3547,"name":"IElixirFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"814:14:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirFactory_$88_$","typeString":"type(contract IElixirFactory)"}},"id":3549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"814:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirFactory_$88","typeString":"contract IElixirFactory"}},"id":3550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"createPool","nodeType":"MemberAccess","referencedDeclaration":73,"src":"814:34:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) external returns (address)"}},"id":3554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"814:55:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"807:62:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3556,"nodeType":"ExpressionStatement","src":"807:62:20"},{"expression":{"arguments":[{"id":3561,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3517,"src":"913:12:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"id":3558,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"896:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3557,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"884:11:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$110_$","typeString":"type(contract IElixirPool)"}},"id":3559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"884:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":3560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":133,"src":"884:28:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint160_$returns$__$","typeString":"function (uint160) external"}},"id":3562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"884:42:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3563,"nodeType":"ExpressionStatement","src":"884:42:20"}]}}]},"documentation":{"id":3509,"nodeType":"StructuredDocumentation","src":"410:32:20","text":"@inheritdoc IPoolInitializer"},"functionSelector":"13ead562","id":3588,"implemented":true,"kind":"function","modifiers":[],"name":"createAndInitializePoolIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":3519,"nodeType":"OverrideSpecifier","overrides":[],"src":"618:8:20"},"parameters":{"id":3518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3511,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":3588,"src":"502:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3510,"name":"address","nodeType":"ElementaryTypeName","src":"502:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3513,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":3588,"src":"527:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3512,"name":"address","nodeType":"ElementaryTypeName","src":"527:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3515,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":3588,"src":"552:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3514,"name":"uint24","nodeType":"ElementaryTypeName","src":"552:6:20","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3517,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":3588,"src":"573:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3516,"name":"uint160","nodeType":"ElementaryTypeName","src":"573:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"491:109:20"},"returnParameters":{"id":3522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3521,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":3588,"src":"636:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3520,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"635:14:20"},"scope":3589,"src":"448:722:20","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":3590,"src":"324:849:20"}],"src":"46:1129:20"},"id":20},"contracts/elixir-periphery/base/SelfPermit.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/SelfPermit.sol","exportedSymbols":{"IERC20":[5553],"IERC20Permit":[5051],"IERC20PermitAllowed":[4230],"ISelfPermit":[4192],"SelfPermit":[3756]},"id":3757,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3591,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:21"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","id":3592,"nodeType":"ImportDirective","scope":3757,"sourceUnit":5554,"src":"74:64:21","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol","file":"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol","id":3593,"nodeType":"ImportDirective","scope":3757,"sourceUnit":5052,"src":"140:65:21","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/ISelfPermit.sol","file":"../interfaces/ISelfPermit.sol","id":3594,"nodeType":"ImportDirective","scope":3757,"sourceUnit":4193,"src":"209:39:21","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol","file":"../interfaces/external/IERC20PermitAllowed.sol","id":3595,"nodeType":"ImportDirective","scope":3757,"sourceUnit":4231,"src":"250:56:21","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3597,"name":"ISelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":4192,"src":"641:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_ISelfPermit_$4192","typeString":"contract ISelfPermit"}},"id":3598,"nodeType":"InheritanceSpecifier","src":"641:11:21"}],"contractDependencies":[4192],"contractKind":"contract","documentation":{"id":3596,"nodeType":"StructuredDocumentation","src":"310:299:21","text":"@title Self Permit\n @notice Functionality to call permit on any EIP-2612-compliant token for use in the route\n @dev These functions are expected to be embedded in multicalls to allow EOAs to approve a contract and call a function\n that requires an approval in a single transaction."},"fullyImplemented":true,"id":3756,"linearizedBaseContracts":[3756,4192],"name":"SelfPermit","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[4143],"body":{"id":3632,"nodeType":"Block","src":"877:98:21","statements":[{"expression":{"arguments":[{"expression":{"id":3619,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"915:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"915:10:21","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":3623,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"935:4:21","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$3756","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$3756","typeString":"contract SelfPermit"}],"id":3622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"927:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3621,"name":"address","nodeType":"ElementaryTypeName","src":"927:7:21","typeDescriptions":{}}},"id":3624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"927:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3625,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3603,"src":"942:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3626,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"949:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3627,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3607,"src":"959:1:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3628,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3609,"src":"962:1:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3629,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3611,"src":"965:1:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":3616,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3601,"src":"901:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3615,"name":"IERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5051,"src":"888:12:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Permit_$5051_$","typeString":"type(contract IERC20Permit)"}},"id":3617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:19:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$5051","typeString":"contract IERC20Permit"}},"id":3618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":5036,"src":"888:26:21","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":3630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:79:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3631,"nodeType":"ExpressionStatement","src":"888:79:21"}]},"documentation":{"id":3599,"nodeType":"StructuredDocumentation","src":"660:27:21","text":"@inheritdoc ISelfPermit"},"functionSelector":"f3995c67","id":3633,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermit","nodeType":"FunctionDefinition","overrides":{"id":3613,"nodeType":"OverrideSpecifier","overrides":[],"src":"868:8:21"},"parameters":{"id":3612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3601,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3633,"src":"723:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3600,"name":"address","nodeType":"ElementaryTypeName","src":"723:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3603,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3633,"src":"747:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3602,"name":"uint256","nodeType":"ElementaryTypeName","src":"747:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3605,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3633,"src":"771:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3604,"name":"uint256","nodeType":"ElementaryTypeName","src":"771:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3607,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3633,"src":"798:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3606,"name":"uint8","nodeType":"ElementaryTypeName","src":"798:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3609,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3633,"src":"816:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"816:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3611,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3633,"src":"836:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"836:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"712:140:21"},"returnParameters":{"id":3614,"nodeType":"ParameterList","parameters":[],"src":"877:0:21"},"scope":3756,"src":"693:282:21","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[4159],"body":{"id":3673,"nodeType":"Block","src":"1213:126:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":3654,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1252:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1252:10:21","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":3658,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1272:4:21","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$3756","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$3756","typeString":"contract SelfPermit"}],"id":3657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1264:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3656,"name":"address","nodeType":"ElementaryTypeName","src":"1264:7:21","typeDescriptions":{}}},"id":3659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1264:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":3651,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3636,"src":"1235:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3650,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5553,"src":"1228:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5553_$","typeString":"type(contract IERC20)"}},"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1228:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5553","typeString":"contract IERC20"}},"id":3653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":5512,"src":"1228:23:21","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":3660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1228:50:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3661,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3638,"src":"1281:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1228:58:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3672,"nodeType":"IfStatement","src":"1224:107:21","trueBody":{"expression":{"arguments":[{"id":3664,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3636,"src":"1299:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3665,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3638,"src":"1306:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3666,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3640,"src":"1313:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3667,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"1323:1:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3668,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3644,"src":"1326:1:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3669,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"1329:1:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3663,"name":"selfPermit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"1288:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,uint256,uint256,uint8,bytes32,bytes32)"}},"id":3670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1288:43:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3671,"nodeType":"ExpressionStatement","src":"1288:43:21"}}]},"documentation":{"id":3634,"nodeType":"StructuredDocumentation","src":"983:27:21","text":"@inheritdoc ISelfPermit"},"functionSelector":"c2e3140a","id":3674,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":3648,"nodeType":"OverrideSpecifier","overrides":[],"src":"1204:8:21"},"parameters":{"id":3647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3636,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3674,"src":"1057:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3635,"name":"address","nodeType":"ElementaryTypeName","src":"1057:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3638,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3674,"src":"1081:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3637,"name":"uint256","nodeType":"ElementaryTypeName","src":"1081:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3640,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3674,"src":"1105:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3639,"name":"uint256","nodeType":"ElementaryTypeName","src":"1105:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3642,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3674,"src":"1132:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3641,"name":"uint8","nodeType":"ElementaryTypeName","src":"1132:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3644,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3674,"src":"1150:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3643,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1150:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3646,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3674,"src":"1170:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1170:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1046:140:21"},"returnParameters":{"id":3649,"nodeType":"ParameterList","parameters":[],"src":"1213:0:21"},"scope":3756,"src":"1016:323:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4175],"body":{"id":3709,"nodeType":"Block","src":"1569:109:21","statements":[{"expression":{"arguments":[{"expression":{"id":3695,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1614:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1614:10:21","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":3699,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1634:4:21","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$3756","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$3756","typeString":"contract SelfPermit"}],"id":3698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1626:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3697,"name":"address","nodeType":"ElementaryTypeName","src":"1626:7:21","typeDescriptions":{}}},"id":3700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3701,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3679,"src":"1641:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3702,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3681,"src":"1648:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":3703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1656:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":3704,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3683,"src":"1662:1:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3705,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3685,"src":"1665:1:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3706,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3687,"src":"1668:1:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":3692,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3677,"src":"1600:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3691,"name":"IERC20PermitAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4230,"src":"1580:19:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20PermitAllowed_$4230_$","typeString":"type(contract IERC20PermitAllowed)"}},"id":3693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1580:26:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitAllowed_$4230","typeString":"contract IERC20PermitAllowed"}},"id":3694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":4229,"src":"1580:33:21","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,bool,uint8,bytes32,bytes32) external"}},"id":3707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1580:90:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3708,"nodeType":"ExpressionStatement","src":"1580:90:21"}]},"documentation":{"id":3675,"nodeType":"StructuredDocumentation","src":"1347:27:21","text":"@inheritdoc ISelfPermit"},"functionSelector":"4659a494","id":3710,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitAllowed","nodeType":"FunctionDefinition","overrides":{"id":3689,"nodeType":"OverrideSpecifier","overrides":[],"src":"1560:8:21"},"parameters":{"id":3688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3677,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3710,"src":"1417:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3676,"name":"address","nodeType":"ElementaryTypeName","src":"1417:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3679,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":3710,"src":"1441:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3678,"name":"uint256","nodeType":"ElementaryTypeName","src":"1441:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3681,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":3710,"src":"1465:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3680,"name":"uint256","nodeType":"ElementaryTypeName","src":"1465:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3683,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3710,"src":"1490:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3682,"name":"uint8","nodeType":"ElementaryTypeName","src":"1490:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3685,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3710,"src":"1508:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3684,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1508:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3687,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3710,"src":"1528:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3686,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1528:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1406:138:21"},"returnParameters":{"id":3690,"nodeType":"ParameterList","parameters":[],"src":"1569:0:21"},"scope":3756,"src":"1380:298:21","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[4191],"body":{"id":3754,"nodeType":"Block","src":"1921:156:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":3731,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1960:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1960:10:21","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":3735,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1980:4:21","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$3756","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$3756","typeString":"contract SelfPermit"}],"id":3734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1972:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3733,"name":"address","nodeType":"ElementaryTypeName","src":"1972:7:21","typeDescriptions":{}}},"id":3736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1972:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":3728,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3713,"src":"1943:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3727,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5553,"src":"1936:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5553_$","typeString":"type(contract IERC20)"}},"id":3729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1936:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5553","typeString":"contract IERC20"}},"id":3730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":5512,"src":"1936:23:21","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1936:50:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":3740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1994:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3739,"name":"uint256","nodeType":"ElementaryTypeName","src":"1994:7:21","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3738,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1989:4:21","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1989:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1989:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1936:70:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3753,"nodeType":"IfStatement","src":"1932:137:21","trueBody":{"expression":{"arguments":[{"id":3745,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3713,"src":"2039:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3746,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3715,"src":"2046:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3747,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3717,"src":"2053:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3748,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"2061:1:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3749,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3721,"src":"2064:1:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3750,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3723,"src":"2067:1:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3744,"name":"selfPermitAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3710,"src":"2021:17:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,uint256,uint256,uint8,bytes32,bytes32)"}},"id":3751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2021:48:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3752,"nodeType":"ExpressionStatement","src":"2021:48:21"}}]},"documentation":{"id":3711,"nodeType":"StructuredDocumentation","src":"1686:27:21","text":"@inheritdoc ISelfPermit"},"functionSelector":"a4a78f0c","id":3755,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitAllowedIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":3725,"nodeType":"OverrideSpecifier","overrides":[],"src":"1912:8:21"},"parameters":{"id":3724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3713,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3755,"src":"1767:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3712,"name":"address","nodeType":"ElementaryTypeName","src":"1767:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3715,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":3755,"src":"1791:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3714,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3717,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":3755,"src":"1815:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3716,"name":"uint256","nodeType":"ElementaryTypeName","src":"1815:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3719,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3755,"src":"1840:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3718,"name":"uint8","nodeType":"ElementaryTypeName","src":"1840:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3721,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3755,"src":"1858:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3720,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1858:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3723,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3755,"src":"1878:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3722,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1878:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1756:138:21"},"returnParameters":{"id":3726,"nodeType":"ParameterList","parameters":[],"src":"1921:0:21"},"scope":3756,"src":"1719:358:21","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":3757,"src":"609:1471:21"}],"src":"46:2036:21"},"id":21},"contracts/elixir-periphery/interfaces/IERC721Permit.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IERC721Permit.sol","exportedSymbols":{"IERC165":[5120],"IERC721":[6613],"IERC721Permit":[3791]},"id":3792,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3758,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:22"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","id":3759,"nodeType":"ImportDirective","scope":3792,"sourceUnit":6614,"src":"74:66:22","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3761,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":6613,"src":"297:7:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$6613","typeString":"contract IERC721"}},"id":3762,"nodeType":"InheritanceSpecifier","src":"297:7:22"}],"contractDependencies":[5120,6613],"contractKind":"interface","documentation":{"id":3760,"nodeType":"StructuredDocumentation","src":"144:126:22","text":"@title ERC721 with permit\n @notice Extension to ERC721 that includes a permit function for signature based approvals"},"fullyImplemented":false,"id":3791,"linearizedBaseContracts":[3791,6613,5120],"name":"IERC721Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3763,"nodeType":"StructuredDocumentation","src":"312:105:22","text":"@notice The permit typehash used in the permit signature\n @return The typehash for the permit"},"functionSelector":"30adf81f","id":3768,"implemented":false,"kind":"function","modifiers":[],"name":"PERMIT_TYPEHASH","nodeType":"FunctionDefinition","parameters":{"id":3764,"nodeType":"ParameterList","parameters":[],"src":"447:2:22"},"returnParameters":{"id":3767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3766,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3768,"src":"473:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"473:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"472:9:22"},"scope":3791,"src":"423:59:22","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":3769,"nodeType":"StructuredDocumentation","src":"490:136:22","text":"@notice The domain separator used in the permit signature\n @return The domain seperator used in encoding of permit signature"},"functionSelector":"3644e515","id":3774,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":3770,"nodeType":"ParameterList","parameters":[],"src":"657:2:22"},"returnParameters":{"id":3773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3772,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3774,"src":"683:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3771,"name":"bytes32","nodeType":"ElementaryTypeName","src":"683:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"682:9:22"},"scope":3791,"src":"632:60:22","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3775,"nodeType":"StructuredDocumentation","src":"700:611:22","text":"@notice Approve of a specific token ID for spending by spender via signature\n @param spender The account that is being approved\n @param tokenId The ID of the token that is being approved for spending\n @param deadline The deadline timestamp by which the call must be mined for the approve to work\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"7ac2ff7b","id":3790,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":3788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3777,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":3790,"src":"1343:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3776,"name":"address","nodeType":"ElementaryTypeName","src":"1343:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3779,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":3790,"src":"1369:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3778,"name":"uint256","nodeType":"ElementaryTypeName","src":"1369:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3781,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3790,"src":"1395:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1395:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3783,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3790,"src":"1422:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3782,"name":"uint8","nodeType":"ElementaryTypeName","src":"1422:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3785,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3790,"src":"1440:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3784,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1440:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3787,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3790,"src":"1460:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3786,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1460:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1332:144:22"},"returnParameters":{"id":3789,"nodeType":"ParameterList","parameters":[],"src":"1493:0:22"},"scope":3791,"src":"1317:177:22","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":3792,"src":"270:1227:22"}],"src":"46:1453:22"},"id":22},"contracts/elixir-periphery/interfaces/IMulticall.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IMulticall.sol","exportedSymbols":{"IMulticall":[3806]},"id":3807,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3793,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:23"},{"id":3794,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:23"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3795,"nodeType":"StructuredDocumentation","src":"95:111:23","text":"@title Multicall interface\n @notice Enables calling multiple methods in a single call to the contract"},"fullyImplemented":false,"id":3806,"linearizedBaseContracts":[3806],"name":"IMulticall","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3796,"nodeType":"StructuredDocumentation","src":"234:381:23","text":"@notice Call multiple functions in the current contract and return the data from all of them if they all succeed\n @dev The `msg.value` should not be trusted for any method callable from multicall.\n @param data The encoded function data for each of the calls to make to this contract\n @return results The results from each of the calls passed in via data"},"functionSelector":"ac9650d8","id":3805,"implemented":false,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","parameters":{"id":3800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3799,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3805,"src":"640:21:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":3797,"name":"bytes","nodeType":"ElementaryTypeName","src":"640:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":3798,"nodeType":"ArrayTypeName","src":"640:7:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"639:23:23"},"returnParameters":{"id":3804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3803,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":3805,"src":"689:22:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":3801,"name":"bytes","nodeType":"ElementaryTypeName","src":"689:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":3802,"nodeType":"ArrayTypeName","src":"689:7:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"688:24:23"},"scope":3806,"src":"621:92:23","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":3807,"src":"206:510:23"}],"src":"46:672:23"},"id":23},"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol","exportedSymbols":{"IERC165":[5120],"IERC721":[6613],"IERC721Enumerable":[6644],"IERC721Metadata":[6671],"IERC721Permit":[3791],"INonfungiblePositionManager":[4048],"IPeripheryImmutableState":[4079],"IPeripheryPayments":[4105],"IPoolInitializer":[4124],"PoolAddress":[4753]},"id":4049,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3808,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:24"},{"id":3809,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:24"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol","id":3810,"nodeType":"ImportDirective","scope":4049,"sourceUnit":6672,"src":"95:74:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol","id":3811,"nodeType":"ImportDirective","scope":4049,"sourceUnit":6645,"src":"171:76:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPoolInitializer.sol","file":"./IPoolInitializer.sol","id":3812,"nodeType":"ImportDirective","scope":4049,"sourceUnit":4125,"src":"251:32:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IERC721Permit.sol","file":"./IERC721Permit.sol","id":3813,"nodeType":"ImportDirective","scope":4049,"sourceUnit":3792,"src":"285:29:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol","file":"./IPeripheryPayments.sol","id":3814,"nodeType":"ImportDirective","scope":4049,"sourceUnit":4106,"src":"316:34:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol","file":"./IPeripheryImmutableState.sol","id":3815,"nodeType":"ImportDirective","scope":4049,"sourceUnit":4080,"src":"352:40:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":3816,"nodeType":"ImportDirective","scope":4049,"sourceUnit":4754,"src":"394:38:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3818,"name":"IPoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":4124,"src":"658:16:24","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolInitializer_$4124","typeString":"contract IPoolInitializer"}},"id":3819,"nodeType":"InheritanceSpecifier","src":"658:16:24"},{"baseName":{"id":3820,"name":"IPeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":4105,"src":"681:18:24","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPayments_$4105","typeString":"contract IPeripheryPayments"}},"id":3821,"nodeType":"InheritanceSpecifier","src":"681:18:24"},{"baseName":{"id":3822,"name":"IPeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":4079,"src":"706:24:24","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryImmutableState_$4079","typeString":"contract IPeripheryImmutableState"}},"id":3823,"nodeType":"InheritanceSpecifier","src":"706:24:24"},{"baseName":{"id":3824,"name":"IERC721Metadata","nodeType":"UserDefinedTypeName","referencedDeclaration":6671,"src":"737:15:24","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$6671","typeString":"contract IERC721Metadata"}},"id":3825,"nodeType":"InheritanceSpecifier","src":"737:15:24"},{"baseName":{"id":3826,"name":"IERC721Enumerable","nodeType":"UserDefinedTypeName","referencedDeclaration":6644,"src":"759:17:24","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Enumerable_$6644","typeString":"contract IERC721Enumerable"}},"id":3827,"nodeType":"InheritanceSpecifier","src":"759:17:24"},{"baseName":{"id":3828,"name":"IERC721Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":3791,"src":"783:13:24","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Permit_$3791","typeString":"contract IERC721Permit"}},"id":3829,"nodeType":"InheritanceSpecifier","src":"783:13:24"}],"contractDependencies":[3791,4079,4105,4124,5120,6613,6644,6671],"contractKind":"interface","documentation":{"id":3817,"nodeType":"StructuredDocumentation","src":"436:176:24","text":"@title Non-fungible token for positions\n @notice Wraps Elixir positions in a non-fungible token interface which allows for them to be transferred\n and authorized."},"fullyImplemented":false,"id":4048,"linearizedBaseContracts":[4048,3791,6644,6671,6613,5120,4079,4105,4124],"name":"INonfungiblePositionManager","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3830,"nodeType":"StructuredDocumentation","src":"805:463:24","text":"@notice Emitted when liquidity is increased for a position NFT\n @dev Also emitted when a token is minted\n @param tokenId The ID of the token for which liquidity was increased\n @param liquidity The amount by which liquidity for the NFT position was increased\n @param amount0 The amount of token0 that was paid for the increase in liquidity\n @param amount1 The amount of token1 that was paid for the increase in liquidity"},"id":3840,"name":"IncreaseLiquidity","nodeType":"EventDefinition","parameters":{"id":3839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3832,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":3840,"src":"1298:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3831,"name":"uint256","nodeType":"ElementaryTypeName","src":"1298:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3834,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":3840,"src":"1323:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3833,"name":"uint128","nodeType":"ElementaryTypeName","src":"1323:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3836,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3840,"src":"1342:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3835,"name":"uint256","nodeType":"ElementaryTypeName","src":"1342:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3838,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3840,"src":"1359:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3837,"name":"uint256","nodeType":"ElementaryTypeName","src":"1359:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1297:78:24"},"src":"1274:102:24"},{"anonymous":false,"documentation":{"id":3841,"nodeType":"StructuredDocumentation","src":"1382:423:24","text":"@notice Emitted when liquidity is decreased for a position NFT\n @param tokenId The ID of the token for which liquidity was decreased\n @param liquidity The amount by which liquidity for the NFT position was decreased\n @param amount0 The amount of token0 that was accounted for the decrease in liquidity\n @param amount1 The amount of token1 that was accounted for the decrease in liquidity"},"id":3851,"name":"DecreaseLiquidity","nodeType":"EventDefinition","parameters":{"id":3850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3843,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":3851,"src":"1835:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3842,"name":"uint256","nodeType":"ElementaryTypeName","src":"1835:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3845,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":3851,"src":"1860:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3844,"name":"uint128","nodeType":"ElementaryTypeName","src":"1860:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3847,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3851,"src":"1879:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3846,"name":"uint256","nodeType":"ElementaryTypeName","src":"1879:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3849,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3851,"src":"1896:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3848,"name":"uint256","nodeType":"ElementaryTypeName","src":"1896:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1834:78:24"},"src":"1811:102:24"},{"anonymous":false,"documentation":{"id":3852,"nodeType":"StructuredDocumentation","src":"1919:527:24","text":"@notice Emitted when tokens are collected for a position NFT\n @dev The amounts reported may not be exactly equivalent to the amounts transferred, due to rounding behavior\n @param tokenId The ID of the token for which underlying tokens were collected\n @param recipient The address of the account that received the collected tokens\n @param amount0 The amount of token0 owed to the position that was collected\n @param amount1 The amount of token1 owed to the position that was collected"},"id":3862,"name":"Collect","nodeType":"EventDefinition","parameters":{"id":3861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3854,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":3862,"src":"2466:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3853,"name":"uint256","nodeType":"ElementaryTypeName","src":"2466:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3856,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3862,"src":"2491:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3855,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3858,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3862,"src":"2510:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3857,"name":"uint256","nodeType":"ElementaryTypeName","src":"2510:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3860,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3862,"src":"2527:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3859,"name":"uint256","nodeType":"ElementaryTypeName","src":"2527:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2465:78:24"},"src":"2452:92:24"},{"anonymous":false,"documentation":{"id":3863,"nodeType":"StructuredDocumentation","src":"2550:576:24","text":"@notice Emitted when Elixir Rewarder is called and notified of the reward amount\n @dev This only notifies that the Elixir Rewarder is called. Except some edge cases (which will be documented in Elixir\n Rewarder), this event is a good indicator of the rewards being claimed. However, it is not certain as it depends on\n Elixir Rewarder implementation to decide whether to send the rewards.\n @param tokenId The ID of the token for which the reward is being claimed\n @param recipient The address of the account that received the reward"},"id":3869,"name":"ClaimReward","nodeType":"EventDefinition","parameters":{"id":3868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3865,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":3869,"src":"3150:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3864,"name":"uint256","nodeType":"ElementaryTypeName","src":"3150:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3867,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3869,"src":"3175:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3866,"name":"address","nodeType":"ElementaryTypeName","src":"3175:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3149:44:24"},"src":"3132:62:24"},{"documentation":{"id":3870,"nodeType":"StructuredDocumentation","src":"3202:1171:24","text":"@notice Returns the position information associated with a given token ID.\n @dev Throws if the token ID is not valid.\n @param tokenId The ID of the token that represents the position\n @return nonce The nonce for permits\n @return operator The address that is approved for spending\n @return token0 The address of the token0 for a specific pool\n @return token1 The address of the token1 for a specific pool\n @return fee The fee associated with the pool\n @return tickLower The lower end of the tick range for the position\n @return tickUpper The higher end of the tick range for the position\n @return liquidity The liquidity of the position\n @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\n @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\n @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\n @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation"},"functionSelector":"99fbab88","id":3899,"implemented":false,"kind":"function","modifiers":[],"name":"positions","nodeType":"FunctionDefinition","parameters":{"id":3873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3872,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":3899,"src":"4398:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3871,"name":"uint256","nodeType":"ElementaryTypeName","src":"4398:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4397:17:24"},"returnParameters":{"id":3898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3875,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":3899,"src":"4479:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3874,"name":"uint96","nodeType":"ElementaryTypeName","src":"4479:6:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3877,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":3899,"src":"4506:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3876,"name":"address","nodeType":"ElementaryTypeName","src":"4506:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3879,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":3899,"src":"4537:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3878,"name":"address","nodeType":"ElementaryTypeName","src":"4537:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3881,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":3899,"src":"4566:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3880,"name":"address","nodeType":"ElementaryTypeName","src":"4566:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3883,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":3899,"src":"4595:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3882,"name":"uint24","nodeType":"ElementaryTypeName","src":"4595:6:24","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3885,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":3899,"src":"4620:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3884,"name":"int24","nodeType":"ElementaryTypeName","src":"4620:5:24","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3887,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":3899,"src":"4650:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3886,"name":"int24","nodeType":"ElementaryTypeName","src":"4650:5:24","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3889,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":3899,"src":"4680:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3888,"name":"uint128","nodeType":"ElementaryTypeName","src":"4680:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3891,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":3899,"src":"4712:32:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3890,"name":"uint256","nodeType":"ElementaryTypeName","src":"4712:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3893,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":3899,"src":"4759:32:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3892,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3895,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":3899,"src":"4806:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3894,"name":"uint128","nodeType":"ElementaryTypeName","src":"4806:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3897,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":3899,"src":"4840:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3896,"name":"uint128","nodeType":"ElementaryTypeName","src":"4840:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4464:406:24"},"scope":4048,"src":"4379:492:24","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3900,"nodeType":"StructuredDocumentation","src":"4879:659:24","text":"@notice Returns the position reward information associated with a given token ID.\n @dev Throws if the token ID is not valid.\n @param tokenId The ID of the token that represents the position\n @return rewardPerLiquidityInsideLastX64 The snapshot of liquidity inside the ticks at last operation\n @return rewardLastUpdated The timestamp of the last operation that updated rewardPerLiquidityInsideLastX64\n @return rewardLastCollected The timestamp of the last time user claimed the rewards of the position\n @return rewardOwed The uncollected amount of reward token owed to the position as of the last computation"},"functionSelector":"75e39cec","id":3913,"implemented":false,"kind":"function","modifiers":[],"name":"positionReward","nodeType":"FunctionDefinition","parameters":{"id":3903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3902,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":3913,"src":"5568:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3901,"name":"uint256","nodeType":"ElementaryTypeName","src":"5568:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5567:17:24"},"returnParameters":{"id":3912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3905,"mutability":"mutable","name":"rewardPerLiquidityInsideLastX64","nodeType":"VariableDeclaration","scope":3913,"src":"5649:39:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":3904,"name":"uint192","nodeType":"ElementaryTypeName","src":"5649:7:24","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"},{"constant":false,"id":3907,"mutability":"mutable","name":"rewardLastUpdated","nodeType":"VariableDeclaration","scope":3913,"src":"5703:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3906,"name":"uint32","nodeType":"ElementaryTypeName","src":"5703:6:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3909,"mutability":"mutable","name":"rewardLastCollected","nodeType":"VariableDeclaration","scope":3913,"src":"5742:26:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3908,"name":"uint32","nodeType":"ElementaryTypeName","src":"5742:6:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3911,"mutability":"mutable","name":"rewardOwed","nodeType":"VariableDeclaration","scope":3913,"src":"5783:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3910,"name":"uint256","nodeType":"ElementaryTypeName","src":"5783:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5634:178:24"},"scope":4048,"src":"5544:269:24","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.MintParams","id":3936,"members":[{"constant":false,"id":3915,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":3936,"src":"5850:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3914,"name":"address","nodeType":"ElementaryTypeName","src":"5850:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3917,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":3936,"src":"5875:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3916,"name":"address","nodeType":"ElementaryTypeName","src":"5875:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3919,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":3936,"src":"5900:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3918,"name":"uint24","nodeType":"ElementaryTypeName","src":"5900:6:24","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3921,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":3936,"src":"5921:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3920,"name":"int24","nodeType":"ElementaryTypeName","src":"5921:5:24","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3923,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":3936,"src":"5947:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3922,"name":"int24","nodeType":"ElementaryTypeName","src":"5947:5:24","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3925,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":3936,"src":"5973:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3924,"name":"uint256","nodeType":"ElementaryTypeName","src":"5973:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3927,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":3936,"src":"6006:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3926,"name":"uint256","nodeType":"ElementaryTypeName","src":"6006:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3929,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":3936,"src":"6039:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3928,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3931,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":3936,"src":"6068:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3930,"name":"uint256","nodeType":"ElementaryTypeName","src":"6068:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3933,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3936,"src":"6097:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3932,"name":"address","nodeType":"ElementaryTypeName","src":"6097:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3935,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3936,"src":"6125:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3934,"name":"uint256","nodeType":"ElementaryTypeName","src":"6125:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"MintParams","nodeType":"StructDefinition","scope":4048,"src":"5821:328:24","visibility":"public"},{"documentation":{"id":3937,"nodeType":"StructuredDocumentation","src":"6157:593:24","text":"@notice Creates a new position wrapped in a NFT\n @dev Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized\n a method does not exist, i.e. the pool is assumed to be initialized.\n @param params The params necessary to mint a position, encoded as `MintParams` in calldata\n @return tokenId The ID of the token that represents the minted position\n @return liquidity The amount of liquidity for this position\n @return amount0 The amount of token0\n @return amount1 The amount of token1"},"functionSelector":"88316456","id":3950,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":3940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3939,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":3950,"src":"6770:26:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams"},"typeName":{"id":3938,"name":"MintParams","nodeType":"UserDefinedTypeName","referencedDeclaration":3936,"src":"6770:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$3936_storage_ptr","typeString":"struct INonfungiblePositionManager.MintParams"}},"visibility":"internal"}],"src":"6769:28:24"},"returnParameters":{"id":3949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3942,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":3950,"src":"6865:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3941,"name":"uint256","nodeType":"ElementaryTypeName","src":"6865:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3944,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":3950,"src":"6895:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3943,"name":"uint128","nodeType":"ElementaryTypeName","src":"6895:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3946,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3950,"src":"6927:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3945,"name":"uint256","nodeType":"ElementaryTypeName","src":"6927:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3948,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3950,"src":"6957:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3947,"name":"uint256","nodeType":"ElementaryTypeName","src":"6957:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6850:133:24"},"scope":4048,"src":"6756:228:24","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.IncreaseLiquidityParams","id":3963,"members":[{"constant":false,"id":3952,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":3963,"src":"7034:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3951,"name":"uint256","nodeType":"ElementaryTypeName","src":"7034:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3954,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":3963,"src":"7060:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3953,"name":"uint256","nodeType":"ElementaryTypeName","src":"7060:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3956,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":3963,"src":"7093:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3955,"name":"uint256","nodeType":"ElementaryTypeName","src":"7093:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3958,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":3963,"src":"7126:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3957,"name":"uint256","nodeType":"ElementaryTypeName","src":"7126:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3960,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":3963,"src":"7155:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3959,"name":"uint256","nodeType":"ElementaryTypeName","src":"7155:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3962,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3963,"src":"7184:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3961,"name":"uint256","nodeType":"ElementaryTypeName","src":"7184:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"IncreaseLiquidityParams","nodeType":"StructDefinition","scope":4048,"src":"6992:216:24","visibility":"public"},{"documentation":{"id":3964,"nodeType":"StructuredDocumentation","src":"7216:830:24","text":"@notice Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`\n @param params tokenId The ID of the token for which liquidity is being increased,\n amount0Desired The desired amount of token0 to be spent,\n amount1Desired The desired amount of token1 to be spent,\n amount0Min The minimum amount of token0 to spend, which serves as a slippage check,\n amount1Min The minimum amount of token1 to spend, which serves as a slippage check,\n deadline The time by which the transaction must be included to effect the change\n @return liquidity The new liquidity amount as a result of the increase\n @return amount0 The amount of token0 to acheive resulting liquidity\n @return amount1 The amount of token1 to acheive resulting liquidity"},"functionSelector":"219f5d17","id":3975,"implemented":false,"kind":"function","modifiers":[],"name":"increaseLiquidity","nodeType":"FunctionDefinition","parameters":{"id":3967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3966,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":3975,"src":"8079:39:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"},"typeName":{"id":3965,"name":"IncreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":3963,"src":"8079:23:24","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$3963_storage_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"}},"visibility":"internal"}],"src":"8078:41:24"},"returnParameters":{"id":3974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3969,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":3975,"src":"8187:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3968,"name":"uint128","nodeType":"ElementaryTypeName","src":"8187:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3971,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3975,"src":"8219:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3970,"name":"uint256","nodeType":"ElementaryTypeName","src":"8219:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3973,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3975,"src":"8249:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3972,"name":"uint256","nodeType":"ElementaryTypeName","src":"8249:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8172:103:24"},"scope":4048,"src":"8052:224:24","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.DecreaseLiquidityParams","id":3986,"members":[{"constant":false,"id":3977,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":3986,"src":"8326:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3976,"name":"uint256","nodeType":"ElementaryTypeName","src":"8326:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3979,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":3986,"src":"8352:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3978,"name":"uint128","nodeType":"ElementaryTypeName","src":"8352:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3981,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":3986,"src":"8380:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3980,"name":"uint256","nodeType":"ElementaryTypeName","src":"8380:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3983,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":3986,"src":"8409:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3982,"name":"uint256","nodeType":"ElementaryTypeName","src":"8409:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3985,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3986,"src":"8438:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3984,"name":"uint256","nodeType":"ElementaryTypeName","src":"8438:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"DecreaseLiquidityParams","nodeType":"StructDefinition","scope":4048,"src":"8284:178:24","visibility":"public"},{"documentation":{"id":3987,"nodeType":"StructuredDocumentation","src":"8470:709:24","text":"@notice Decreases the amount of liquidity in a position and accounts it to the position\n @param params tokenId The ID of the token for which liquidity is being decreased,\n amount The amount by which liquidity will be decreased,\n amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\n amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\n deadline The time by which the transaction must be included to effect the change\n @return amount0 The amount of token0 accounted to the position's tokens owed\n @return amount1 The amount of token1 accounted to the position's tokens owed"},"functionSelector":"0c49ccbe","id":3996,"implemented":false,"kind":"function","modifiers":[],"name":"decreaseLiquidity","nodeType":"FunctionDefinition","parameters":{"id":3990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3989,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":3996,"src":"9212:39:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"},"typeName":{"id":3988,"name":"DecreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":3986,"src":"9212:23:24","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$3986_storage_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"}},"visibility":"internal"}],"src":"9211:41:24"},"returnParameters":{"id":3995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3992,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3996,"src":"9306:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3991,"name":"uint256","nodeType":"ElementaryTypeName","src":"9306:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3994,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3996,"src":"9323:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3993,"name":"uint256","nodeType":"ElementaryTypeName","src":"9323:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9305:34:24"},"scope":4048,"src":"9185:155:24","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.CollectParams","id":4005,"members":[{"constant":false,"id":3998,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4005,"src":"9380:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3997,"name":"uint256","nodeType":"ElementaryTypeName","src":"9380:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4000,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":4005,"src":"9406:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3999,"name":"address","nodeType":"ElementaryTypeName","src":"9406:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4002,"mutability":"mutable","name":"amount0Max","nodeType":"VariableDeclaration","scope":4005,"src":"9434:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4001,"name":"uint128","nodeType":"ElementaryTypeName","src":"9434:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4004,"mutability":"mutable","name":"amount1Max","nodeType":"VariableDeclaration","scope":4005,"src":"9463:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4003,"name":"uint128","nodeType":"ElementaryTypeName","src":"9463:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"CollectParams","nodeType":"StructDefinition","scope":4048,"src":"9348:141:24","visibility":"public"},{"documentation":{"id":4006,"nodeType":"StructuredDocumentation","src":"9497:495:24","text":"@notice Collects up to a maximum amount of fees owed to a specific position to the recipient\n @param params tokenId The ID of the NFT for which tokens are being collected,\n recipient The account that should receive the tokens,\n amount0Max The maximum amount of token0 to collect,\n amount1Max The maximum amount of token1 to collect\n @return amount0 The amount of fees collected in token0\n @return amount1 The amount of fees collected in token1"},"functionSelector":"fc6f7865","id":4015,"implemented":false,"kind":"function","modifiers":[],"name":"collect","nodeType":"FunctionDefinition","parameters":{"id":4009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4008,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":4015,"src":"10015:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"},"typeName":{"id":4007,"name":"CollectParams","nodeType":"UserDefinedTypeName","referencedDeclaration":4005,"src":"10015:13:24","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$4005_storage_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"}},"visibility":"internal"}],"src":"10014:31:24"},"returnParameters":{"id":4014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4011,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":4015,"src":"10072:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4010,"name":"uint256","nodeType":"ElementaryTypeName","src":"10072:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4013,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":4015,"src":"10089:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4012,"name":"uint256","nodeType":"ElementaryTypeName","src":"10089:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10071:34:24"},"scope":4048,"src":"9998:108:24","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4016,"nodeType":"StructuredDocumentation","src":"10114:258:24","text":"@notice Notifies rewards manager contract the amount of unclaimed rewards and then deletes the reward debt\n @param tokenId The ID of the NFT for which reward is being collected,\n recipient The account that should receive the reward tokens"},"functionSelector":"e70eb392","id":4023,"implemented":false,"kind":"function","modifiers":[],"name":"claimReward","nodeType":"FunctionDefinition","parameters":{"id":4021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4018,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4023,"src":"10399:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4017,"name":"uint256","nodeType":"ElementaryTypeName","src":"10399:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4020,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":4023,"src":"10416:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4019,"name":"address","nodeType":"ElementaryTypeName","src":"10416:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10398:36:24"},"returnParameters":{"id":4022,"nodeType":"ParameterList","parameters":[],"src":"10451:0:24"},"scope":4048,"src":"10378:74:24","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4024,"nodeType":"StructuredDocumentation","src":"10460:442:24","text":"@notice Deletes reward debt of the token\n @dev Because of (1) `burn` prevents burning the tokenId if there is any reward debt and (2) `claimReward` can\n be DOSed by an improper reward manager implementation or a reward token, we have this separate function to\n forgo rewards if user really needs to burn the tokenId and does not care about the rewards\n @param tokenId The ID of the NFT to forgo the rewards"},"functionSelector":"29048e7b","id":4029,"implemented":false,"kind":"function","modifiers":[],"name":"forgoReward","nodeType":"FunctionDefinition","parameters":{"id":4027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4026,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4029,"src":"10929:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4025,"name":"uint256","nodeType":"ElementaryTypeName","src":"10929:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10928:17:24"},"returnParameters":{"id":4028,"nodeType":"ParameterList","parameters":[],"src":"10962:0:24"},"scope":4048,"src":"10908:55:24","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4030,"nodeType":"StructuredDocumentation","src":"10971:215:24","text":"@notice Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens\n must be collected first.\n @param tokenId The ID of the token that is being burned"},"functionSelector":"42966c68","id":4035,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":4033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4032,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4035,"src":"11206:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4031,"name":"uint256","nodeType":"ElementaryTypeName","src":"11206:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11205:17:24"},"returnParameters":{"id":4034,"nodeType":"ParameterList","parameters":[],"src":"11239:0:24"},"scope":4048,"src":"11192:48:24","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4036,"nodeType":"StructuredDocumentation","src":"11248:146:24","text":"@notice Restricted function to update address that generates tokenURI\n @param tokenDescriptor_ The address of the new token descriptor"},"functionSelector":"97f12a83","id":4041,"implemented":false,"kind":"function","modifiers":[],"name":"updateTokenDescriptor","nodeType":"FunctionDefinition","parameters":{"id":4039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4038,"mutability":"mutable","name":"tokenDescriptor_","nodeType":"VariableDeclaration","scope":4041,"src":"11431:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4037,"name":"address","nodeType":"ElementaryTypeName","src":"11431:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11430:26:24"},"returnParameters":{"id":4040,"nodeType":"ParameterList","parameters":[],"src":"11473:0:24"},"scope":4048,"src":"11400:74:24","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4042,"nodeType":"StructuredDocumentation","src":"11482:171:24","text":"@notice Restricted function to update the reward manager contract address\n @param rewardManager_ The contract that will distribute rewards during `claimReward`"},"functionSelector":"050eb2eb","id":4047,"implemented":false,"kind":"function","modifiers":[],"name":"updateRewardManager","nodeType":"FunctionDefinition","parameters":{"id":4045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4044,"mutability":"mutable","name":"rewardManager_","nodeType":"VariableDeclaration","scope":4047,"src":"11688:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4043,"name":"address","nodeType":"ElementaryTypeName","src":"11688:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11687:24:24"},"returnParameters":{"id":4046,"nodeType":"ParameterList","parameters":[],"src":"11728:0:24"},"scope":4048,"src":"11659:70:24","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":4049,"src":"612:11120:24"}],"src":"46:11688:24"},"id":24},"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol","exportedSymbols":{"IERC165":[5120],"IERC721":[6613],"IERC721Enumerable":[6644],"IERC721Metadata":[6671],"IERC721Permit":[3791],"INonfungiblePositionManager":[4048],"INonfungibleTokenPositionDescriptor":[4063],"IPeripheryImmutableState":[4079],"IPeripheryPayments":[4105],"IPoolInitializer":[4124],"PoolAddress":[4753]},"id":4064,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4050,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:25"},{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol","file":"./INonfungiblePositionManager.sol","id":4051,"nodeType":"ImportDirective","scope":4064,"sourceUnit":4049,"src":"74:43:25","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":4052,"nodeType":"StructuredDocumentation","src":"121:50:25","text":"@title Describes position NFT tokens via URI"},"fullyImplemented":false,"id":4063,"linearizedBaseContracts":[4063],"name":"INonfungibleTokenPositionDescriptor","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4053,"nodeType":"StructuredDocumentation","src":"224:417:25","text":"@notice Produces the URI describing a particular token ID for a position manager\n @dev Note this URI may be a data: URI with the JSON contents directly inlined\n @param positionManager The position manager for which to describe the token\n @param tokenId The ID of the token for which to produce a description, which may not be valid\n @return The URI of the ERC721-compliant metadata"},"functionSelector":"e9dc6375","id":4062,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","parameters":{"id":4058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4055,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":4062,"src":"665:43:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$4048","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":4054,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":4048,"src":"665:27:25","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$4048","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":4057,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4062,"src":"710:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4056,"name":"uint256","nodeType":"ElementaryTypeName","src":"710:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"664:62:25"},"returnParameters":{"id":4061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4060,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4062,"src":"777:13:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4059,"name":"string","nodeType":"ElementaryTypeName","src":"777:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"776:15:25"},"scope":4063,"src":"647:145:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4064,"src":"171:624:25"}],"src":"46:751:25"},"id":25},"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol","exportedSymbols":{"IPeripheryImmutableState":[4079]},"id":4080,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4065,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:26"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":4066,"nodeType":"StructuredDocumentation","src":"74:93:26","text":"@title Immutable state\n @notice Functions that return immutable state of the router"},"fullyImplemented":false,"id":4079,"linearizedBaseContracts":[4079],"name":"IPeripheryImmutableState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4067,"nodeType":"StructuredDocumentation","src":"209:58:26","text":"@return Returns the address of the Pangolin V2 factory"},"functionSelector":"c45a0155","id":4072,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":4068,"nodeType":"ParameterList","parameters":[],"src":"289:2:26"},"returnParameters":{"id":4071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4070,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4072,"src":"315:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4069,"name":"address","nodeType":"ElementaryTypeName","src":"315:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"314:9:26"},"scope":4079,"src":"273:51:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4073,"nodeType":"StructuredDocumentation","src":"332:40:26","text":"@return Returns the address of WETH9"},"functionSelector":"4aa4a4fc","id":4078,"implemented":false,"kind":"function","modifiers":[],"name":"WETH9","nodeType":"FunctionDefinition","parameters":{"id":4074,"nodeType":"ParameterList","parameters":[],"src":"392:2:26"},"returnParameters":{"id":4077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4076,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4078,"src":"418:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4075,"name":"address","nodeType":"ElementaryTypeName","src":"418:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"417:9:26"},"scope":4079,"src":"378:49:26","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4080,"src":"167:263:26"}],"src":"46:386:26"},"id":26},"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol","exportedSymbols":{"IPeripheryPayments":[4105]},"id":4106,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4081,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:27"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":4082,"nodeType":"StructuredDocumentation","src":"74:94:27","text":"@title Periphery Payments\n @notice Functions to ease deposits and withdrawals of ETH"},"fullyImplemented":false,"id":4105,"linearizedBaseContracts":[4105],"name":"IPeripheryPayments","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4083,"nodeType":"StructuredDocumentation","src":"204:305:27","text":"@notice Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\n @dev The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\n @param amountMinimum The minimum amount of WETH9 to unwrap\n @param recipient The address receiving ETH"},"functionSelector":"49404b7c","id":4090,"implemented":false,"kind":"function","modifiers":[],"name":"unwrapWETH9","nodeType":"FunctionDefinition","parameters":{"id":4088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4085,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":4090,"src":"536:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4084,"name":"uint256","nodeType":"ElementaryTypeName","src":"536:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4087,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":4090,"src":"559:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4086,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"535:42:27"},"returnParameters":{"id":4089,"nodeType":"ParameterList","parameters":[],"src":"594:0:27"},"scope":4105,"src":"515:80:27","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4091,"nodeType":"StructuredDocumentation","src":"603:227:27","text":"@notice Refunds any ETH balance held by this contract to the `msg.sender`\n @dev Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps\n that use ether for the input amount"},"functionSelector":"12210e8a","id":4094,"implemented":false,"kind":"function","modifiers":[],"name":"refundETH","nodeType":"FunctionDefinition","parameters":{"id":4092,"nodeType":"ParameterList","parameters":[],"src":"854:2:27"},"returnParameters":{"id":4093,"nodeType":"ParameterList","parameters":[],"src":"873:0:27"},"scope":4105,"src":"836:38:27","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4095,"nodeType":"StructuredDocumentation","src":"882:431:27","text":"@notice Transfers the full amount of a token held by this contract to recipient\n @dev The amountMinimum parameter prevents malicious contracts from stealing the token from users\n @param token The contract address of the token which will be transferred to `recipient`\n @param amountMinimum The minimum amount of token required for a transfer\n @param recipient The destination address of the token"},"functionSelector":"df2ab5bb","id":4104,"implemented":false,"kind":"function","modifiers":[],"name":"sweepToken","nodeType":"FunctionDefinition","parameters":{"id":4102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4097,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":4104,"src":"1349:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4096,"name":"address","nodeType":"ElementaryTypeName","src":"1349:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4099,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":4104,"src":"1373:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4098,"name":"uint256","nodeType":"ElementaryTypeName","src":"1373:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4101,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":4104,"src":"1405:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4100,"name":"address","nodeType":"ElementaryTypeName","src":"1405:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1338:91:27"},"returnParameters":{"id":4103,"nodeType":"ParameterList","parameters":[],"src":"1446:0:27"},"scope":4105,"src":"1319:128:27","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":4106,"src":"168:1282:27"}],"src":"46:1406:27"},"id":27},"contracts/elixir-periphery/interfaces/IPoolInitializer.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IPoolInitializer.sol","exportedSymbols":{"IPoolInitializer":[4124]},"id":4125,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4107,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:28"},{"id":4108,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:28"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":4109,"nodeType":"StructuredDocumentation","src":"95:201:28","text":"@title Creates and initializes Elixir Pools\n @notice Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that\n require the pool to exist."},"fullyImplemented":false,"id":4124,"linearizedBaseContracts":[4124],"name":"IPoolInitializer","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4110,"nodeType":"StructuredDocumentation","src":"330:658:28","text":"@notice Creates a new pool if it does not exist, then initializes if not initialized\n @dev This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\n @param token0 The contract address of token0 of the pool\n @param token1 The contract address of token1 of the pool\n @param fee The fee amount of the elixir pool for the specified token pair\n @param sqrtPriceX96 The initial square root price of the pool as a Q64.96 value\n @return pool Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary"},"functionSelector":"13ead562","id":4123,"implemented":false,"kind":"function","modifiers":[],"name":"createAndInitializePoolIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":4119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4112,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":4123,"src":"1048:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4111,"name":"address","nodeType":"ElementaryTypeName","src":"1048:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4114,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":4123,"src":"1073:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4113,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4116,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":4123,"src":"1098:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4115,"name":"uint24","nodeType":"ElementaryTypeName","src":"1098:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":4118,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":4123,"src":"1119:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4117,"name":"uint160","nodeType":"ElementaryTypeName","src":"1119:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1037:109:28"},"returnParameters":{"id":4122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4121,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":4123,"src":"1173:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4120,"name":"address","nodeType":"ElementaryTypeName","src":"1173:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1172:14:28"},"scope":4124,"src":"994:193:28","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":4125,"src":"296:894:28"}],"src":"46:1146:28"},"id":28},"contracts/elixir-periphery/interfaces/ISelfPermit.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/ISelfPermit.sol","exportedSymbols":{"ISelfPermit":[4192]},"id":4193,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4126,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:29"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":4127,"nodeType":"StructuredDocumentation","src":"74:119:29","text":"@title Self Permit\n @notice Functionality to call permit on any EIP-2612-compliant token for use in the route"},"fullyImplemented":false,"id":4192,"linearizedBaseContracts":[4192],"name":"ISelfPermit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4128,"nodeType":"StructuredDocumentation","src":"222:670:29","text":"@notice Permits this contract to spend a given token from `msg.sender`\n @dev The `owner` is always msg.sender and the `spender` is always address(this).\n @param token The address of the token spent\n @param value The amount that can be spent of token\n @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"f3995c67","id":4143,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermit","nodeType":"FunctionDefinition","parameters":{"id":4141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4130,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":4143,"src":"928:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4129,"name":"address","nodeType":"ElementaryTypeName","src":"928:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4132,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4143,"src":"952:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4131,"name":"uint256","nodeType":"ElementaryTypeName","src":"952:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4134,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":4143,"src":"976:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4133,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4136,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":4143,"src":"1003:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4135,"name":"uint8","nodeType":"ElementaryTypeName","src":"1003:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4138,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4143,"src":"1021:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4137,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1021:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4140,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":4143,"src":"1041:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4139,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1041:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"917:140:29"},"returnParameters":{"id":4142,"nodeType":"ParameterList","parameters":[],"src":"1074:0:29"},"scope":4192,"src":"898:177:29","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4144,"nodeType":"StructuredDocumentation","src":"1083:787:29","text":"@notice Permits this contract to spend a given token from `msg.sender`\n @dev The `owner` is always msg.sender and the `spender` is always address(this).\n Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\n @param token The address of the token spent\n @param value The amount that can be spent of token\n @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"c2e3140a","id":4159,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":4157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4146,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":4159,"src":"1917:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4145,"name":"address","nodeType":"ElementaryTypeName","src":"1917:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4148,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4159,"src":"1941:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4147,"name":"uint256","nodeType":"ElementaryTypeName","src":"1941:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4150,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":4159,"src":"1965:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4149,"name":"uint256","nodeType":"ElementaryTypeName","src":"1965:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4152,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":4159,"src":"1992:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4151,"name":"uint8","nodeType":"ElementaryTypeName","src":"1992:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4154,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4159,"src":"2010:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4153,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2010:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4156,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":4159,"src":"2030:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4155,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2030:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1906:140:29"},"returnParameters":{"id":4158,"nodeType":"ParameterList","parameters":[],"src":"2063:0:29"},"scope":4192,"src":"1876:188:29","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4160,"nodeType":"StructuredDocumentation","src":"2072:677:29","text":"@notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\n @dev The `owner` is always msg.sender and the `spender` is always address(this)\n @param token The address of the token spent\n @param nonce The current nonce of the owner\n @param expiry The timestamp at which the permit is no longer valid\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"4659a494","id":4175,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitAllowed","nodeType":"FunctionDefinition","parameters":{"id":4173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4162,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":4175,"src":"2792:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4161,"name":"address","nodeType":"ElementaryTypeName","src":"2792:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4164,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":4175,"src":"2816:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4163,"name":"uint256","nodeType":"ElementaryTypeName","src":"2816:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4166,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":4175,"src":"2840:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4165,"name":"uint256","nodeType":"ElementaryTypeName","src":"2840:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4168,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":4175,"src":"2865:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4167,"name":"uint8","nodeType":"ElementaryTypeName","src":"2865:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4170,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4175,"src":"2883:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4169,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2883:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4172,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":4175,"src":"2903:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4171,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2903:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2781:138:29"},"returnParameters":{"id":4174,"nodeType":"ParameterList","parameters":[],"src":"2936:0:29"},"scope":4192,"src":"2755:182:29","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4176,"nodeType":"StructuredDocumentation","src":"2945:809:29","text":"@notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\n @dev The `owner` is always msg.sender and the `spender` is always address(this)\n Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\n @param token The address of the token spent\n @param nonce The current nonce of the owner\n @param expiry The timestamp at which the permit is no longer valid\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"a4a78f0c","id":4191,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitAllowedIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":4189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4178,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":4191,"src":"3808:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4177,"name":"address","nodeType":"ElementaryTypeName","src":"3808:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4180,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":4191,"src":"3832:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4179,"name":"uint256","nodeType":"ElementaryTypeName","src":"3832:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4182,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":4191,"src":"3856:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4181,"name":"uint256","nodeType":"ElementaryTypeName","src":"3856:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4184,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":4191,"src":"3881:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4183,"name":"uint8","nodeType":"ElementaryTypeName","src":"3881:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4186,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4191,"src":"3899:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4185,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3899:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4188,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":4191,"src":"3919:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4187,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3919:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3797:138:29"},"returnParameters":{"id":4190,"nodeType":"ParameterList","parameters":[],"src":"3952:0:29"},"scope":4192,"src":"3760:193:29","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":4193,"src":"193:3763:29"}],"src":"46:3912:29"},"id":29},"contracts/elixir-periphery/interfaces/external/IERC1271.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/external/IERC1271.sol","exportedSymbols":{"IERC1271":[4206]},"id":4207,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4194,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:30"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":4195,"nodeType":"StructuredDocumentation","src":"74:179:30","text":"@title Interface for verifying contract-based account signatures\n @notice Interface that verifies provided signature for the data\n @dev Interface defined by EIP-1271"},"fullyImplemented":false,"id":4206,"linearizedBaseContracts":[4206],"name":"IERC1271","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4196,"nodeType":"StructuredDocumentation","src":"279:477:30","text":"@notice Returns whether the provided signature is valid for the provided data\n @dev MUST return the bytes4 magic value 0x1626ba7e when function passes.\n MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5).\n MUST allow external calls.\n @param hash Hash of the data to be signed\n @param signature Signature byte array associated with _data\n @return magicValue The bytes4 magic value 0x1626ba7e"},"functionSelector":"1626ba7e","id":4205,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":4201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4198,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":4205,"src":"788:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4197,"name":"bytes32","nodeType":"ElementaryTypeName","src":"788:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4200,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":4205,"src":"802:22:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4199,"name":"bytes","nodeType":"ElementaryTypeName","src":"802:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"787:38:30"},"returnParameters":{"id":4204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4203,"mutability":"mutable","name":"magicValue","nodeType":"VariableDeclaration","scope":4205,"src":"849:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4202,"name":"bytes4","nodeType":"ElementaryTypeName","src":"849:6:30","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"848:19:30"},"scope":4206,"src":"762:106:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4207,"src":"253:618:30"}],"src":"46:827:30"},"id":30},"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol","exportedSymbols":{"IERC20PermitAllowed":[4230]},"id":4231,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4208,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:31"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":4209,"nodeType":"StructuredDocumentation","src":"74:84:31","text":"@title Interface for permit\n @notice Interface used by DAI/CHAI for permit"},"fullyImplemented":false,"id":4230,"linearizedBaseContracts":[4230],"name":"IERC20PermitAllowed","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4210,"nodeType":"StructuredDocumentation","src":"195:811:31","text":"@notice Approve the spender to spend some tokens via the holder signature\n @dev This is the permit interface used by DAI and CHAI\n @param holder The address of the token holder, the token owner\n @param spender The address of the token spender\n @param nonce The holder's nonce, increases at each call to permit\n @param expiry The timestamp at which the permit is no longer valid\n @param allowed Boolean that sets approval amount, true for type(uint256).max and false for 0\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"8fcbaf0c","id":4229,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":4227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4212,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":4229,"src":"1038:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4211,"name":"address","nodeType":"ElementaryTypeName","src":"1038:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4214,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":4229,"src":"1063:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4213,"name":"address","nodeType":"ElementaryTypeName","src":"1063:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4216,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":4229,"src":"1089:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4215,"name":"uint256","nodeType":"ElementaryTypeName","src":"1089:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4218,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":4229,"src":"1113:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4217,"name":"uint256","nodeType":"ElementaryTypeName","src":"1113:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4220,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":4229,"src":"1138:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4219,"name":"bool","nodeType":"ElementaryTypeName","src":"1138:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4222,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":4229,"src":"1161:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4221,"name":"uint8","nodeType":"ElementaryTypeName","src":"1161:5:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4224,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4229,"src":"1179:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4223,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1179:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4226,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":4229,"src":"1199:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4225,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1199:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1027:188:31"},"returnParameters":{"id":4228,"nodeType":"ParameterList","parameters":[],"src":"1224:0:31"},"scope":4230,"src":"1012:213:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4231,"src":"158:1070:31"}],"src":"46:1184:31"},"id":31},"contracts/elixir-periphery/interfaces/external/IWETH9.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/external/IWETH9.sol","exportedSymbols":{"IERC20":[5553],"IWETH9":[4247]},"id":4248,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4232,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:32"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","id":4233,"nodeType":"ImportDirective","scope":4248,"sourceUnit":5554,"src":"73:64:32","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4235,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":5553,"src":"193:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5553","typeString":"contract IERC20"}},"id":4236,"nodeType":"InheritanceSpecifier","src":"193:6:32"}],"contractDependencies":[5553],"contractKind":"interface","documentation":{"id":4234,"nodeType":"StructuredDocumentation","src":"141:32:32","text":"@title Interface for WETH9"},"fullyImplemented":false,"id":4247,"linearizedBaseContracts":[4247,5553],"name":"IWETH9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4237,"nodeType":"StructuredDocumentation","src":"207:46:32","text":"@notice Deposit ether to get wrapped ether"},"functionSelector":"d0e30db0","id":4240,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":4238,"nodeType":"ParameterList","parameters":[],"src":"275:2:32"},"returnParameters":{"id":4239,"nodeType":"ParameterList","parameters":[],"src":"294:0:32"},"scope":4247,"src":"259:36:32","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4241,"nodeType":"StructuredDocumentation","src":"303:47:32","text":"@notice Withdraw wrapped ether to get ether"},"functionSelector":"2e1a7d4d","id":4246,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":4244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4243,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4246,"src":"374:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4242,"name":"uint256","nodeType":"ElementaryTypeName","src":"374:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"373:9:32"},"returnParameters":{"id":4245,"nodeType":"ParameterList","parameters":[],"src":"391:0:32"},"scope":4247,"src":"356:36:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4248,"src":"173:222:32"}],"src":"46:351:32"},"id":32},"contracts/elixir-periphery/libraries/CallbackValidation.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/CallbackValidation.sol","exportedSymbols":{"CallbackValidation":[4309],"IElixirPool":[110],"IElixirPoolActions":[220],"IElixirPoolDerivedState":[256],"IElixirPoolEvents":[382],"IElixirPoolImmutables":[422],"IElixirPoolOwnerActions":[468],"IElixirPoolState":[588],"PoolAddress":[4753]},"id":4310,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4249,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:33"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":4250,"nodeType":"ImportDirective","scope":4310,"sourceUnit":111,"src":"73:54:33","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"./PoolAddress.sol","id":4251,"nodeType":"ImportDirective","scope":4310,"sourceUnit":4754,"src":"129:27:33","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4252,"nodeType":"StructuredDocumentation","src":"160:65:33","text":"@notice Provides validation for callbacks from Elixir Pools"},"fullyImplemented":true,"id":4309,"linearizedBaseContracts":[4309],"name":"CallbackValidation","nodeType":"ContractDefinition","nodes":[{"body":{"id":4276,"nodeType":"Block","src":"846:94:33","statements":[{"expression":{"arguments":[{"id":4267,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4255,"src":"879:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4270,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"911:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4271,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4259,"src":"919:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4272,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4261,"src":"927:3:33","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":4268,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"888:11:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$4753_$","typeString":"type(library PoolAddress)"}},"id":4269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolKey","nodeType":"MemberAccess","referencedDeclaration":4705,"src":"888:22:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_uint24_$returns$_t_struct$_PoolKey_$4674_memory_ptr_$","typeString":"function (address,address,uint24) pure returns (struct PoolAddress.PoolKey memory)"}},"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:43:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"id":4266,"name":"verifyCallback","nodeType":"Identifier","overloadedDeclarations":[4277,4308],"referencedDeclaration":4308,"src":"864:14:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_struct$_PoolKey_$4674_memory_ptr_$returns$_t_contract$_IElixirPool_$110_$","typeString":"function (address,struct PoolAddress.PoolKey memory) view returns (contract IElixirPool)"}},"id":4274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"864:68:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"functionReturnParameters":4265,"id":4275,"nodeType":"Return","src":"857:75:33"}]},"documentation":{"id":4253,"nodeType":"StructuredDocumentation","src":"259:412:33","text":"@notice Returns the address of a valid Elixir Pool\n @param factory The contract address of the Elixir factory\n @param tokenA The contract address of either token0 or token1\n @param tokenB The contract address of the other token\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @return pool The Elixir pool contract address"},"id":4277,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallback","nodeType":"FunctionDefinition","parameters":{"id":4262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4255,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":4277,"src":"711:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4254,"name":"address","nodeType":"ElementaryTypeName","src":"711:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4257,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":4277,"src":"737:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4256,"name":"address","nodeType":"ElementaryTypeName","src":"737:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4259,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":4277,"src":"762:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4258,"name":"address","nodeType":"ElementaryTypeName","src":"762:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4261,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":4277,"src":"787:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4260,"name":"uint24","nodeType":"ElementaryTypeName","src":"787:6:33","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"700:104:33"},"returnParameters":{"id":4265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4264,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":4277,"src":"828:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"},"typeName":{"id":4263,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"828:11:33","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"visibility":"internal"}],"src":"827:18:33"},"scope":4309,"src":"677:263:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4307,"nodeType":"Block","src":"1343:130:33","statements":[{"expression":{"id":4295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4287,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4285,"src":"1354:4:33","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":4291,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4280,"src":"1400:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4292,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"1409:7:33","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":4289,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"1373:11:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$4753_$","typeString":"type(library PoolAddress)"}},"id":4290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":4752,"src":"1373:26:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$4674_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1373:44:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4288,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1361:11:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$110_$","typeString":"type(contract IElixirPool)"}},"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1361:57:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"src":"1354:64:33","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"id":4296,"nodeType":"ExpressionStatement","src":"1354:64:33"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4298,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1437:3:33","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1437:10:33","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":4302,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4285,"src":"1459:4:33","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}],"id":4301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1451:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4300,"name":"address","nodeType":"ElementaryTypeName","src":"1451:7:33","typeDescriptions":{}}},"id":4303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1451:13:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1437:27:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4297,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1429:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1429:36:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4306,"nodeType":"ExpressionStatement","src":"1429:36:33"}]},"documentation":{"id":4278,"nodeType":"StructuredDocumentation","src":"948:239:33","text":"@notice Returns the address of a valid Elixir Pool\n @param factory The contract address of the Elixir factory\n @param poolKey The identifying key of the Elixir pool\n @return pool The Elixir pool contract address"},"id":4308,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallback","nodeType":"FunctionDefinition","parameters":{"id":4283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4280,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":4308,"src":"1217:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4279,"name":"address","nodeType":"ElementaryTypeName","src":"1217:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4282,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":4308,"src":"1234:34:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":4281,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"1234:19:33","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"1216:53:33"},"returnParameters":{"id":4286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4285,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":4308,"src":"1320:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"},"typeName":{"id":4284,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"1320:11:33","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$110","typeString":"contract IElixirPool"}},"visibility":"internal"}],"src":"1319:18:33"},"scope":4309,"src":"1193:280:33","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":4310,"src":"225:1251:33"}],"src":"46:1432:33"},"id":33},"contracts/elixir-periphery/libraries/ChainId.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/ChainId.sol","exportedSymbols":{"ChainId":[4321]},"id":4322,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4311,"literals":["solidity",">=","0.7",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:34"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4312,"nodeType":"StructuredDocumentation","src":"81:54:34","text":"@title Function for getting the current chain ID"},"fullyImplemented":true,"id":4321,"linearizedBaseContracts":[4321],"name":"ChainId","nodeType":"ContractDefinition","nodes":[{"body":{"id":4319,"nodeType":"Block","src":"299:73:34","statements":[{"AST":{"nodeType":"YulBlock","src":"319:46:34","statements":[{"nodeType":"YulAssignment","src":"334:20:34","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"345:7:34"},"nodeType":"YulFunctionCall","src":"345:9:34"},"variableNames":[{"name":"chainId","nodeType":"YulIdentifier","src":"334:7:34"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4316,"isOffset":false,"isSlot":false,"src":"334:7:34","valueSize":1}],"id":4318,"nodeType":"InlineAssembly","src":"310:55:34"}]},"documentation":{"id":4313,"nodeType":"StructuredDocumentation","src":"158:80:34","text":"@dev Gets the current chain ID\n @return chainId The current chain ID"},"id":4320,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":4314,"nodeType":"ParameterList","parameters":[],"src":"256:2:34"},"returnParameters":{"id":4317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4316,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":4320,"src":"282:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4315,"name":"uint256","nodeType":"ElementaryTypeName","src":"282:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"281:17:34"},"scope":4321,"src":"244:128:34","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4322,"src":"135:240:34"}],"src":"46:331:34"},"id":34},"contracts/elixir-periphery/libraries/LiquidityAmounts.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/LiquidityAmounts.sol","exportedSymbols":{"FixedPoint96":[605],"FullMath":[778],"LiquidityAmounts":[4661]},"id":4662,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4323,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:35"},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"../../elixir-core/libraries/FullMath.sol","id":4324,"nodeType":"ImportDirective","scope":4662,"sourceUnit":779,"src":"74:50:35","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FixedPoint96.sol","file":"../../elixir-core/libraries/FixedPoint96.sol","id":4325,"nodeType":"ImportDirective","scope":4662,"sourceUnit":606,"src":"126:54:35","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4326,"nodeType":"StructuredDocumentation","src":"184:133:35","text":"@title Liquidity amount functions\n @notice Provides functions for computing liquidity amounts from token amounts and prices"},"fullyImplemented":true,"id":4661,"linearizedBaseContracts":[4661],"name":"LiquidityAmounts","nodeType":"ContractDefinition","nodes":[{"body":{"id":4346,"nodeType":"Block","src":"564:49:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":4340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4335,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4332,"src":"584:1:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4338,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"596:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"588:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":4336,"name":"uint128","nodeType":"ElementaryTypeName","src":"588:7:35","typeDescriptions":{}}},"id":4339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"588:10:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"584:14:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":4341,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"583:16:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4342,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"603:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"583:21:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4334,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"575:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"575:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4345,"nodeType":"ExpressionStatement","src":"575:30:35"}]},"documentation":{"id":4327,"nodeType":"StructuredDocumentation","src":"349:146:35","text":"@notice Downcasts uint256 to uint128\n @param x The uint258 to be downcasted\n @return y The passed value, downcasted to uint128"},"id":4347,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nodeType":"FunctionDefinition","parameters":{"id":4330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4329,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4347,"src":"520:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4328,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"519:11:35"},"returnParameters":{"id":4333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4332,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4347,"src":"553:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4331,"name":"uint128","nodeType":"ElementaryTypeName","src":"553:7:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"552:11:35"},"scope":4661,"src":"501:112:35","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":4392,"nodeType":"Block","src":"1260:312:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4359,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"1275:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4360,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"1291:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1275:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4370,"nodeType":"IfStatement","src":"1271:98:35","trueBody":{"expression":{"id":4368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4362,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"1307:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4363,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"1322:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4364,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1306:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4365,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"1340:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4366,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"1355:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4367,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1339:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"1306:63:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4369,"nodeType":"ExpressionStatement","src":"1306:63:35"}},{"assignments":[4372],"declarations":[{"constant":false,"id":4372,"mutability":"mutable","name":"intermediate","nodeType":"VariableDeclaration","scope":4392,"src":"1380:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4371,"name":"uint256","nodeType":"ElementaryTypeName","src":"1380:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4380,"initialValue":{"arguments":[{"id":4375,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"1419:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4376,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"1434:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":4377,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"1449:12:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$605_$","typeString":"type(library FixedPoint96)"}},"id":4378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":604,"src":"1449:16:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4373,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"1403:8:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":4374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"1403:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1403:63:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1380:86:35"},{"expression":{"arguments":[{"arguments":[{"id":4384,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4354,"src":"1510:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4385,"name":"intermediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4372,"src":"1519:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4386,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"1533:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4387,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"1549:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1533:29:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":4382,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"1494:8:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":4383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"1494:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1494:69:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4381,"name":"toUint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4347,"src":"1484:9:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint256) pure returns (uint128)"}},"id":4390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1484:80:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":4358,"id":4391,"nodeType":"Return","src":"1477:87:35"}]},"documentation":{"id":4348,"nodeType":"StructuredDocumentation","src":"621:462:35","text":"@notice Computes the amount of liquidity received for a given amount of token0 and price range\n @dev Calculates amount0 * (sqrt(upper) * sqrt(lower)) / (sqrt(upper) - sqrt(lower))\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param amount0 The amount0 being sent in\n @return liquidity The amount of returned liquidity"},"id":4393,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount0","nodeType":"FunctionDefinition","parameters":{"id":4355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4350,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":4393,"src":"1131:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4349,"name":"uint160","nodeType":"ElementaryTypeName","src":"1131:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4352,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":4393,"src":"1163:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4351,"name":"uint160","nodeType":"ElementaryTypeName","src":"1163:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4354,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":4393,"src":"1195:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4353,"name":"uint256","nodeType":"ElementaryTypeName","src":"1195:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1120:97:35"},"returnParameters":{"id":4358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4357,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4393,"src":"1241:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4356,"name":"uint128","nodeType":"ElementaryTypeName","src":"1241:7:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1240:19:35"},"scope":4661,"src":"1089:483:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4429,"nodeType":"Block","src":"2190:219:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4405,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"2205:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4406,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"2221:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2205:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4416,"nodeType":"IfStatement","src":"2201:98:35","trueBody":{"expression":{"id":4414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4408,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"2237:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4409,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"2252:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4410,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2236:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4411,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"2270:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4412,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"2285:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4413,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2269:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"2236:63:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4415,"nodeType":"ExpressionStatement","src":"2236:63:35"}},{"expression":{"arguments":[{"arguments":[{"id":4420,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4400,"src":"2343:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4421,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"2352:12:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$605_$","typeString":"type(library FixedPoint96)"}},"id":4422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":604,"src":"2352:16:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4423,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"2370:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4424,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"2386:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2370:29:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":4418,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"2327:8:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":4419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"2327:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2327:73:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4417,"name":"toUint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4347,"src":"2317:9:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint256) pure returns (uint128)"}},"id":4427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2317:84:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":4404,"id":4428,"nodeType":"Return","src":"2310:91:35"}]},"documentation":{"id":4394,"nodeType":"StructuredDocumentation","src":"1580:433:35","text":"@notice Computes the amount of liquidity received for a given amount of token1 and price range\n @dev Calculates amount1 / (sqrt(upper) - sqrt(lower)).\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param amount1 The amount1 being sent in\n @return liquidity The amount of returned liquidity"},"id":4430,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount1","nodeType":"FunctionDefinition","parameters":{"id":4401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4396,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":4430,"src":"2061:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4395,"name":"uint160","nodeType":"ElementaryTypeName","src":"2061:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4398,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":4430,"src":"2093:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4397,"name":"uint160","nodeType":"ElementaryTypeName","src":"2093:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4400,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":4430,"src":"2125:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4399,"name":"uint256","nodeType":"ElementaryTypeName","src":"2125:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2050:97:35"},"returnParameters":{"id":4404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4403,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4430,"src":"2171:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4402,"name":"uint128","nodeType":"ElementaryTypeName","src":"2171:7:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2170:19:35"},"scope":4661,"src":"2019:390:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4510,"nodeType":"Block","src":"3247:692:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4446,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"3262:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4447,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4437,"src":"3278:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3262:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4457,"nodeType":"IfStatement","src":"3258:98:35","trueBody":{"expression":{"id":4455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4449,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"3294:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4450,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4437,"src":"3309:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4451,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3293:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4452,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4437,"src":"3327:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4453,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"3342:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4454,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3326:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"3293:63:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4456,"nodeType":"ExpressionStatement","src":"3293:63:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4458,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"3373:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4459,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"3389:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3373:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4470,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"3514:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4471,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4437,"src":"3529:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3514:28:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4507,"nodeType":"Block","src":"3832:100:35","statements":[{"expression":{"id":4505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4499,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"3847:9:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4501,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"3882:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4502,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4437,"src":"3897:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4503,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4441,"src":"3912:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4500,"name":"getLiquidityForAmount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"3859:22:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":4504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3859:61:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3847:73:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4506,"nodeType":"ExpressionStatement","src":"3847:73:35"}]},"id":4508,"nodeType":"IfStatement","src":"3510:422:35","trueBody":{"id":4498,"nodeType":"Block","src":"3544:282:35","statements":[{"assignments":[4474],"declarations":[{"constant":false,"id":4474,"mutability":"mutable","name":"liquidity0","nodeType":"VariableDeclaration","scope":4498,"src":"3559:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4473,"name":"uint128","nodeType":"ElementaryTypeName","src":"3559:7:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":4480,"initialValue":{"arguments":[{"id":4476,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"3603:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4477,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4437,"src":"3617:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4478,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4439,"src":"3632:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4475,"name":"getLiquidityForAmount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"3580:22:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":4479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3580:60:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"3559:81:35"},{"assignments":[4482],"declarations":[{"constant":false,"id":4482,"mutability":"mutable","name":"liquidity1","nodeType":"VariableDeclaration","scope":4498,"src":"3655:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4481,"name":"uint128","nodeType":"ElementaryTypeName","src":"3655:7:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":4488,"initialValue":{"arguments":[{"id":4484,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"3699:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4485,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"3714:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4486,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4441,"src":"3728:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4483,"name":"getLiquidityForAmount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"3676:22:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":4487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3676:60:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"3655:81:35"},{"expression":{"id":4496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4489,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"3753:9:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4490,"name":"liquidity0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4474,"src":"3765:10:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4491,"name":"liquidity1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4482,"src":"3778:10:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3765:23:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4494,"name":"liquidity1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4482,"src":"3804:10:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3765:49:35","trueExpression":{"id":4493,"name":"liquidity0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4474,"src":"3791:10:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3753:61:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4497,"nodeType":"ExpressionStatement","src":"3753:61:35"}]}},"id":4509,"nodeType":"IfStatement","src":"3369:563:35","trueBody":{"id":4469,"nodeType":"Block","src":"3404:100:35","statements":[{"expression":{"id":4467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4461,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"3419:9:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4463,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"3454:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4464,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4437,"src":"3469:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4465,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4439,"src":"3484:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4462,"name":"getLiquidityForAmount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"3431:22:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":4466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3431:61:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3419:73:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4468,"nodeType":"ExpressionStatement","src":"3419:73:35"}]}}]},"documentation":{"id":4431,"nodeType":"StructuredDocumentation","src":"2417:596:35","text":"@notice Computes the maximum amount of liquidity received for a given amount of token0, token1, the current\n pool prices and the prices at the tick boundaries\n @param sqrtRatioX96 A sqrt price representing the current pool prices\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param amount0 The amount of token0 being sent in\n @param amount1 The amount of token1 being sent in\n @return liquidity The maximum amount of liquidity received"},"id":4511,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmounts","nodeType":"FunctionDefinition","parameters":{"id":4442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4433,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":4511,"src":"3061:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4432,"name":"uint160","nodeType":"ElementaryTypeName","src":"3061:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4435,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":4511,"src":"3092:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4434,"name":"uint160","nodeType":"ElementaryTypeName","src":"3092:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4437,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":4511,"src":"3124:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4436,"name":"uint160","nodeType":"ElementaryTypeName","src":"3124:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4439,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":4511,"src":"3156:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4438,"name":"uint256","nodeType":"ElementaryTypeName","src":"3156:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4441,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":4511,"src":"3182:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4440,"name":"uint256","nodeType":"ElementaryTypeName","src":"3182:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3050:154:35"},"returnParameters":{"id":4445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4444,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4511,"src":"3228:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4443,"name":"uint128","nodeType":"ElementaryTypeName","src":"3228:7:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3227:19:35"},"scope":4661,"src":"3019:920:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4552,"nodeType":"Block","src":"4475:340:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4523,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"4490:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4524,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"4506:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4490:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4534,"nodeType":"IfStatement","src":"4486:98:35","trueBody":{"expression":{"id":4532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4526,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"4522:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4527,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"4537:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4528,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4521:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4529,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"4555:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4530,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"4570:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4531,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4554:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"4521:63:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4533,"nodeType":"ExpressionStatement","src":"4521:63:35"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4539,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4518,"src":"4659:9:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":4538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4651:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4537,"name":"uint256","nodeType":"ElementaryTypeName","src":"4651:7:35","typeDescriptions":{}}},"id":4540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4651:18:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":4541,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"4673:12:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$605_$","typeString":"type(library FixedPoint96)"}},"id":4542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":601,"src":"4673:23:35","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4651:45:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4544,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"4715:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4545,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"4731:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4715:29:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4547,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"4763:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":4535,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"4617:8:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":4536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"4617:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4617:174:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4549,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"4794:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4617:190:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4522,"id":4551,"nodeType":"Return","src":"4597:210:35"}]},"documentation":{"id":4512,"nodeType":"StructuredDocumentation","src":"3947:351:35","text":"@notice Computes the amount of token0 for a given amount of liquidity and a price range\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param liquidity The liquidity being valued\n @return amount0 The amount of token0"},"id":4553,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":4519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4514,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":4553,"src":"4346:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4513,"name":"uint160","nodeType":"ElementaryTypeName","src":"4346:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4516,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":4553,"src":"4378:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4515,"name":"uint160","nodeType":"ElementaryTypeName","src":"4378:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4518,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4553,"src":"4410:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4517,"name":"uint128","nodeType":"ElementaryTypeName","src":"4410:7:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4335:99:35"},"returnParameters":{"id":4522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4521,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":4553,"src":"4458:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4520,"name":"uint256","nodeType":"ElementaryTypeName","src":"4458:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4457:17:35"},"scope":4661,"src":"4304:511:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4587,"nodeType":"Block","src":"5351:212:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4565,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"5366:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4566,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4558,"src":"5382:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5366:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4576,"nodeType":"IfStatement","src":"5362:98:35","trueBody":{"expression":{"id":4574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4568,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"5398:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4569,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4558,"src":"5413:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4570,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5397:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4571,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4558,"src":"5431:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4572,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"5446:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4573,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5430:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"5397:63:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4575,"nodeType":"ExpressionStatement","src":"5397:63:35"}},{"expression":{"arguments":[{"id":4579,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4560,"src":"5496:9:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4580,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4558,"src":"5507:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4581,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"5523:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5507:29:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":4583,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"5538:12:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$605_$","typeString":"type(library FixedPoint96)"}},"id":4584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":604,"src":"5538:16:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4577,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"5480:8:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$778_$","typeString":"type(library FullMath)"}},"id":4578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":734,"src":"5480:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5480:75:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4564,"id":4586,"nodeType":"Return","src":"5473:82:35"}]},"documentation":{"id":4554,"nodeType":"StructuredDocumentation","src":"4823:351:35","text":"@notice Computes the amount of token1 for a given amount of liquidity and a price range\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param liquidity The liquidity being valued\n @return amount1 The amount of token1"},"id":4588,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":4561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4556,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":4588,"src":"5222:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4555,"name":"uint160","nodeType":"ElementaryTypeName","src":"5222:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4558,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":4588,"src":"5254:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4557,"name":"uint160","nodeType":"ElementaryTypeName","src":"5254:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4560,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4588,"src":"5286:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4559,"name":"uint128","nodeType":"ElementaryTypeName","src":"5286:7:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5211:99:35"},"returnParameters":{"id":4564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4563,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":4588,"src":"5334:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4562,"name":"uint256","nodeType":"ElementaryTypeName","src":"5334:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5333:17:35"},"scope":4661,"src":"5180:383:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4659,"nodeType":"Block","src":"6333:596:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4604,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4593,"src":"6348:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4605,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"6364:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6348:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4615,"nodeType":"IfStatement","src":"6344:98:35","trueBody":{"expression":{"id":4613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4607,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4593,"src":"6380:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4608,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"6395:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4609,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6379:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4610,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"6413:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4611,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4593,"src":"6428:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4612,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6412:30:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"6379:63:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4614,"nodeType":"ExpressionStatement","src":"6379:63:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4616,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4591,"src":"6459:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4617,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4593,"src":"6475:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6459:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4628,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4591,"src":"6600:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4629,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"6615:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6600:28:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4656,"nodeType":"Block","src":"6822:100:35","statements":[{"expression":{"id":4654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4648,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4602,"src":"6837:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4650,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4593,"src":"6870:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4651,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"6885:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4652,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"6900:9:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":4649,"name":"getAmount1ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4588,"src":"6847:22:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":4653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6847:63:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6837:73:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4655,"nodeType":"ExpressionStatement","src":"6837:73:35"}]},"id":4657,"nodeType":"IfStatement","src":"6596:326:35","trueBody":{"id":4647,"nodeType":"Block","src":"6630:186:35","statements":[{"expression":{"id":4637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4631,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4600,"src":"6645:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4633,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4591,"src":"6678:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4634,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"6692:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4635,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"6707:9:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":4632,"name":"getAmount0ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4553,"src":"6655:22:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":4636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6655:62:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6645:72:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4638,"nodeType":"ExpressionStatement","src":"6645:72:35"},{"expression":{"id":4645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4639,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4602,"src":"6732:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4641,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4593,"src":"6765:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4642,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4591,"src":"6780:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4643,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"6794:9:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":4640,"name":"getAmount1ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4588,"src":"6742:22:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":4644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6742:62:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6732:72:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4646,"nodeType":"ExpressionStatement","src":"6732:72:35"}]}},"id":4658,"nodeType":"IfStatement","src":"6455:467:35","trueBody":{"id":4627,"nodeType":"Block","src":"6490:100:35","statements":[{"expression":{"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4619,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4600,"src":"6505:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4621,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4593,"src":"6538:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4622,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"6553:13:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4623,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"6568:9:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":4620,"name":"getAmount0ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4553,"src":"6515:22:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":4624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6515:63:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6505:73:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4626,"nodeType":"ExpressionStatement","src":"6505:73:35"}]}}]},"documentation":{"id":4589,"nodeType":"StructuredDocumentation","src":"5571:537:35","text":"@notice Computes the token0 and token1 value for a given amount of liquidity, the current\n pool prices and the prices at the tick boundaries\n @param sqrtRatioX96 A sqrt price representing the current pool prices\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param liquidity The liquidity being valued\n @return amount0 The amount of token0\n @return amount1 The amount of token1"},"id":4660,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":4598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4591,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":4660,"src":"6156:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4590,"name":"uint160","nodeType":"ElementaryTypeName","src":"6156:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4593,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":4660,"src":"6187:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4592,"name":"uint160","nodeType":"ElementaryTypeName","src":"6187:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4595,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":4660,"src":"6219:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4594,"name":"uint160","nodeType":"ElementaryTypeName","src":"6219:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4597,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4660,"src":"6251:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4596,"name":"uint128","nodeType":"ElementaryTypeName","src":"6251:7:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6145:130:35"},"returnParameters":{"id":4603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4600,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":4660,"src":"6299:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4599,"name":"uint256","nodeType":"ElementaryTypeName","src":"6299:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4602,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":4660,"src":"6316:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4601,"name":"uint256","nodeType":"ElementaryTypeName","src":"6316:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6298:34:35"},"scope":4661,"src":"6114:815:35","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4662,"src":"317:6615:35"}],"src":"46:6888:35"},"id":35},"contracts/elixir-periphery/libraries/PoolAddress.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","exportedSymbols":{"PoolAddress":[4753]},"id":4754,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4663,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:36"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4664,"nodeType":"StructuredDocumentation","src":"81:97:36","text":"@title Provides functions for deriving a pool address from the factory, tokens, and the fee"},"fullyImplemented":true,"id":4753,"linearizedBaseContracts":[4753],"name":"PoolAddress","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4667,"mutability":"constant","name":"POOL_INIT_CODE_HASH","nodeType":"VariableDeclaration","scope":4753,"src":"610:114:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"610:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834316137323366396536343537383330623162376134346466343433356661623838353831643037333232363839346233333133313831356464363734633232","id":4666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"658:66:36","typeDescriptions":{"typeIdentifier":"t_rational_29695646916129568393154105068765944002345636477166660713121215575815742770210_by_1","typeString":"int_const 2969...(69 digits omitted)...0210"},"value":"0x41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c22"},"visibility":"internal"},{"canonicalName":"PoolAddress.PoolKey","id":4674,"members":[{"constant":false,"id":4669,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":4674,"src":"808:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4668,"name":"address","nodeType":"ElementaryTypeName","src":"808:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4671,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":4674,"src":"833:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4670,"name":"address","nodeType":"ElementaryTypeName","src":"833:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4673,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":4674,"src":"858:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4672,"name":"uint24","nodeType":"ElementaryTypeName","src":"858:6:36","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"name":"PoolKey","nodeType":"StructDefinition","scope":4753,"src":"782:94:36","visibility":"public"},{"body":{"id":4704,"nodeType":"Block","src":"1352:144:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4686,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"1367:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4687,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"1376:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1367:15:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4697,"nodeType":"IfStatement","src":"1363:56:36","trueBody":{"expression":{"id":4695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4689,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"1385:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4690,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"1393:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4691,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1384:16:36","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4692,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"1404:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4693,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"1412:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4694,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1403:16:36","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"1384:35:36","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4696,"nodeType":"ExpressionStatement","src":"1384:35:36"}},{"expression":{"arguments":[{"id":4699,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"1454:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4700,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"1470:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4701,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4681,"src":"1483:3:36","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":4698,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"1437:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$4674_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"1437:51:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"functionReturnParameters":4685,"id":4703,"nodeType":"Return","src":"1430:58:36"}]},"documentation":{"id":4675,"nodeType":"StructuredDocumentation","src":"884:325:36","text":"@notice Returns PoolKey: the ordered tokens with the matched fee levels\n @param tokenA The first token of a pool, unsorted\n @param tokenB The second token of a pool, unsorted\n @param fee The fee level of the pool\n @return Poolkey The pool details with ordered token0 and token1 assignments"},"id":4705,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolKey","nodeType":"FunctionDefinition","parameters":{"id":4682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4677,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":4705,"src":"1245:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4676,"name":"address","nodeType":"ElementaryTypeName","src":"1245:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4679,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":4705,"src":"1270:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4678,"name":"address","nodeType":"ElementaryTypeName","src":"1270:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4681,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":4705,"src":"1295:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4680,"name":"uint24","nodeType":"ElementaryTypeName","src":"1295:6:36","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1234:78:36"},"returnParameters":{"id":4685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4684,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4705,"src":"1336:14:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":4683,"name":"PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"1336:7:36","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"1335:16:36"},"scope":4753,"src":"1215:281:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4751,"nodeType":"Block","src":"1847:428:36","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4716,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"1866:3:36","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4717,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":4669,"src":"1866:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4718,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"1879:3:36","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":4671,"src":"1879:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1866:23:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4715,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1858:7:36","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1858:32:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4722,"nodeType":"ExpressionStatement","src":"1858:32:36"},{"expression":{"id":4749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4723,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4713,"src":"1901:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"ff","id":4731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"2031:7:36","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""}},{"id":4732,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"2065:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"expression":{"id":4736,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"2120:3:36","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":4669,"src":"2120:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4738,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"2132:3:36","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":4671,"src":"2132:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4740,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"2144:3:36","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4741,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":4673,"src":"2144:7:36","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":4734,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2109:3:36","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2109:10:36","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2109:43:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4733,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2099:9:36","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2099:54:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4744,"name":"POOL_INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4667,"src":"2180:19:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4729,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1988:3:36","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1988:16:36","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1988:234:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4728,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1956:9:36","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1956:285:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1930:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4726,"name":"uint256","nodeType":"ElementaryTypeName","src":"1930:7:36","typeDescriptions":{}}},"id":4747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1930:326:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1908:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4724,"name":"address","nodeType":"ElementaryTypeName","src":"1908:7:36","typeDescriptions":{}}},"id":4748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1908:359:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1901:366:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4750,"nodeType":"ExpressionStatement","src":"1901:366:36"}]},"documentation":{"id":4706,"nodeType":"StructuredDocumentation","src":"1504:239:36","text":"@notice Deterministically computes the pool address given the factory and PoolKey\n @param factory The Elixir factory contract address\n @param key The PoolKey\n @return pool The contract address of the elixir pool"},"id":4752,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddress","nodeType":"FunctionDefinition","parameters":{"id":4711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4708,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":4752,"src":"1773:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4707,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4710,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":4752,"src":"1790:18:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":4709,"name":"PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":4674,"src":"1790:7:36","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$4674_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"1772:37:36"},"returnParameters":{"id":4714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4713,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":4752,"src":"1833:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4712,"name":"address","nodeType":"ElementaryTypeName","src":"1833:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1832:14:36"},"scope":4753,"src":"1749:526:36","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4754,"src":"178:2100:36"}],"src":"46:2234:36"},"id":36},"contracts/elixir-periphery/libraries/PositionKey.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/PositionKey.sol","exportedSymbols":{"PositionKey":[4778]},"id":4779,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4755,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:37"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4778,"linearizedBaseContracts":[4778],"name":"PositionKey","nodeType":"ContractDefinition","nodes":[{"body":{"id":4776,"nodeType":"Block","src":"299:82:37","statements":[{"expression":{"arguments":[{"arguments":[{"id":4770,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4758,"src":"344:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4771,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4760,"src":"351:9:37","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4772,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"362:9:37","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":4768,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"327:3:37","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"327:16:37","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"327:45:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4767,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"317:9:37","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"317:56:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4766,"id":4775,"nodeType":"Return","src":"310:63:37"}]},"documentation":{"id":4756,"nodeType":"StructuredDocumentation","src":"101:60:37","text":"@dev Returns the key of the position in the core library"},"id":4777,"implemented":true,"kind":"function","modifiers":[],"name":"compute","nodeType":"FunctionDefinition","parameters":{"id":4763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4758,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":4777,"src":"194:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4757,"name":"address","nodeType":"ElementaryTypeName","src":"194:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4760,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":4777,"src":"218:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4759,"name":"int24","nodeType":"ElementaryTypeName","src":"218:5:37","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4762,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":4777,"src":"244:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4761,"name":"int24","nodeType":"ElementaryTypeName","src":"244:5:37","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"183:83:37"},"returnParameters":{"id":4766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4765,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4777,"src":"290:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4764,"name":"bytes32","nodeType":"ElementaryTypeName","src":"290:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"289:9:37"},"scope":4778,"src":"167:214:37","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4779,"src":"74:310:37"}],"src":"46:340:37"},"id":37},"contracts/elixir-periphery/libraries/TransferHelper.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/TransferHelper.sol","exportedSymbols":{"IERC20":[5553],"TransferHelper":[4949]},"id":4950,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4780,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"46:24:38"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","id":4781,"nodeType":"ImportDirective","scope":4950,"sourceUnit":5554,"src":"74:64:38","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4949,"linearizedBaseContracts":[4949],"name":"TransferHelper","nodeType":"ContractDefinition","nodes":[{"body":{"id":4829,"nodeType":"Block","src":"715:233:38","statements":[{"assignments":[4794,4796],"declarations":[{"constant":false,"id":4794,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":4829,"src":"727:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4793,"name":"bool","nodeType":"ElementaryTypeName","src":"727:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4796,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":4829,"src":"741:17:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4795,"name":"bytes","nodeType":"ElementaryTypeName","src":"741:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4809,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":4801,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5553,"src":"809:6:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5553_$","typeString":"type(contract IERC20)"}},"id":4802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"809:19:38","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transferFrom(address,address,uint256) returns (bool)"}},"id":4803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"809:28:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":4804,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4786,"src":"839:4:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4805,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"845:2:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4806,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4790,"src":"849:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4799,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"786:3:38","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"786:22:38","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":4807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"786:69:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4797,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4784,"src":"775:5:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"775:10:38","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":4808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"775:81:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"726:130:38"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4811,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4794,"src":"875:7:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4812,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4796,"src":"887:4:38","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"887:11:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"902:1:38","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"887:16:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4818,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4796,"src":"918:4:38","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":4820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"925:4:38","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":4819,"name":"bool","nodeType":"ElementaryTypeName","src":"925:4:38","typeDescriptions":{}}}],"id":4821,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"924:6:38","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":4816,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"907:3:38","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"907:10:38","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":4822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"907:24:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"887:44:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4824,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"886:46:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"875:57:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"535446","id":4826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"934:5:38","typeDescriptions":{"typeIdentifier":"t_stringliteral_a1c4b1d67db284650e7cfb49cb11ce76848206ad466478425bd3418f8bbb9a86","typeString":"literal_string \"STF\""},"value":"STF"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a1c4b1d67db284650e7cfb49cb11ce76848206ad466478425bd3418f8bbb9a86","typeString":"literal_string \"STF\""}],"id":4810,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"867:7:38","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"867:73:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4828,"nodeType":"ExpressionStatement","src":"867:73:38"}]},"documentation":{"id":4782,"nodeType":"StructuredDocumentation","src":"172:403:38","text":"@notice Transfers tokens from the targeted address to the given destination\n @notice Errors with 'STF' if transfer fails\n @param token The contract address of the token to be transferred\n @param from The originating address from which the tokens will be transferred\n @param to The destination address of the transfer\n @param value The amount to be transferred"},"id":4830,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":4791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4784,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":4830,"src":"617:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4783,"name":"address","nodeType":"ElementaryTypeName","src":"617:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4786,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":4830,"src":"641:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4785,"name":"address","nodeType":"ElementaryTypeName","src":"641:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4788,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4830,"src":"664:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4787,"name":"address","nodeType":"ElementaryTypeName","src":"664:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4790,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4830,"src":"685:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4789,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"606:99:38"},"returnParameters":{"id":4792,"nodeType":"ParameterList","parameters":[],"src":"715:0:38"},"scope":4949,"src":"581:367:38","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4875,"nodeType":"Block","src":"1354:209:38","statements":[{"assignments":[4841,4843],"declarations":[{"constant":false,"id":4841,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":4875,"src":"1366:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4840,"name":"bool","nodeType":"ElementaryTypeName","src":"1366:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4843,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":4875,"src":"1380:17:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4842,"name":"bytes","nodeType":"ElementaryTypeName","src":"1380:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4855,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":4848,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5553,"src":"1435:6:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5553_$","typeString":"type(contract IERC20)"}},"id":4849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5502,"src":"1435:15:38","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transfer(address,uint256) returns (bool)"}},"id":4850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1435:24:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":4851,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4835,"src":"1461:2:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4852,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4837,"src":"1465:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4846,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1412:3:38","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1412:22:38","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":4853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1412:59:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4844,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4833,"src":"1401:5:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"1401:10:38","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":4854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1401:71:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1365:107:38"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4857,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4841,"src":"1491:7:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4858,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4843,"src":"1503:4:38","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1503:11:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1518:1:38","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1503:16:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4864,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4843,"src":"1534:4:38","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":4866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1541:4:38","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":4865,"name":"bool","nodeType":"ElementaryTypeName","src":"1541:4:38","typeDescriptions":{}}}],"id":4867,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1540:6:38","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":4862,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1523:3:38","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1523:10:38","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":4868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1523:24:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1503:44:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4870,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1502:46:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1491:57:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5354","id":4872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1550:4:38","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e992d6a09e3feb7936717fa482f3a7086f18407e19b697f3153d17fd25870ca","typeString":"literal_string \"ST\""},"value":"ST"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e992d6a09e3feb7936717fa482f3a7086f18407e19b697f3153d17fd25870ca","typeString":"literal_string \"ST\""}],"id":4856,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1483:7:38","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1483:72:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4874,"nodeType":"ExpressionStatement","src":"1483:72:38"}]},"documentation":{"id":4831,"nodeType":"StructuredDocumentation","src":"956:285:38","text":"@notice Transfers tokens from msg.sender to a recipient\n @dev Errors with ST if transfer fails\n @param token The contract address of the token which will be transferred\n @param to The recipient of the transfer\n @param value The value of the transfer"},"id":4876,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":4838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4833,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":4876,"src":"1279:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4832,"name":"address","nodeType":"ElementaryTypeName","src":"1279:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4835,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4876,"src":"1303:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4834,"name":"address","nodeType":"ElementaryTypeName","src":"1303:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4837,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4876,"src":"1324:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4836,"name":"uint256","nodeType":"ElementaryTypeName","src":"1324:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1268:76:38"},"returnParameters":{"id":4839,"nodeType":"ParameterList","parameters":[],"src":"1354:0:38"},"scope":4949,"src":"1247:316:38","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4921,"nodeType":"Block","src":"2029:208:38","statements":[{"assignments":[4887,4889],"declarations":[{"constant":false,"id":4887,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":4921,"src":"2041:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4886,"name":"bool","nodeType":"ElementaryTypeName","src":"2041:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4889,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":4921,"src":"2055:17:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4888,"name":"bytes","nodeType":"ElementaryTypeName","src":"2055:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4901,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":4894,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5553,"src":"2110:6:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5553_$","typeString":"type(contract IERC20)"}},"id":4895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":5522,"src":"2110:14:38","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.approve(address,uint256) returns (bool)"}},"id":4896,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"2110:23:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":4897,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4881,"src":"2135:2:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4898,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4883,"src":"2139:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4892,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2087:3:38","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2087:22:38","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":4899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2087:58:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4890,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4879,"src":"2076:5:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2076:10:38","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":4900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2076:70:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2040:106:38"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4903,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4887,"src":"2165:7:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4904,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4889,"src":"2177:4:38","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2177:11:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2192:1:38","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2177:16:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4910,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4889,"src":"2208:4:38","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":4912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2215:4:38","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":4911,"name":"bool","nodeType":"ElementaryTypeName","src":"2215:4:38","typeDescriptions":{}}}],"id":4913,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2214:6:38","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":4908,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2197:3:38","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2197:10:38","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":4914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2197:24:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2177:44:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4916,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2176:46:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2165:57:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5341","id":4918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2224:4:38","typeDescriptions":{"typeIdentifier":"t_stringliteral_0c382912095e7706ed01a66755a50c713445aceaf5a9168954498b03dd381faa","typeString":"literal_string \"SA\""},"value":"SA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0c382912095e7706ed01a66755a50c713445aceaf5a9168954498b03dd381faa","typeString":"literal_string \"SA\""}],"id":4902,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2157:7:38","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2157:72:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4920,"nodeType":"ExpressionStatement","src":"2157:72:38"}]},"documentation":{"id":4877,"nodeType":"StructuredDocumentation","src":"1571:346:38","text":"@notice Approves the stipulated contract to spend the given allowance in the given token\n @dev Errors with 'SA' if transfer fails\n @param token The contract address of the token to be approved\n @param to The target of the approval\n @param value The amount of the given token the target will be allowed to spend"},"id":4922,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":4884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4879,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":4922,"src":"1954:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4878,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4881,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4922,"src":"1978:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4880,"name":"address","nodeType":"ElementaryTypeName","src":"1978:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4883,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4922,"src":"1999:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4882,"name":"uint256","nodeType":"ElementaryTypeName","src":"1999:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1943:76:38"},"returnParameters":{"id":4885,"nodeType":"ParameterList","parameters":[],"src":"2029:0:38"},"scope":4949,"src":"1923:314:38","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4947,"nodeType":"Block","src":"2494:107:38","statements":[{"assignments":[4931,null],"declarations":[{"constant":false,"id":4931,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":4947,"src":"2506:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4930,"name":"bool","nodeType":"ElementaryTypeName","src":"2506:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":4941,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":4938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2556:1:38","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2546:9:38","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4936,"name":"bytes","nodeType":"ElementaryTypeName","src":"2550:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2546:12:38","tryCall":false,"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":4932,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4925,"src":"2524:2:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2524:7:38","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":4935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":4934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"2539:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2524:21:38","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":4940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2524:35:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2505:54:38"},{"expression":{"arguments":[{"id":4943,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4931,"src":"2578:7:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"535445","id":4944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2587:5:38","typeDescriptions":{"typeIdentifier":"t_stringliteral_48541fce89df928ec30caa1aed6c0cd94b8e2ef76b3c68b10b9a184ceadb93d4","typeString":"literal_string \"STE\""},"value":"STE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_48541fce89df928ec30caa1aed6c0cd94b8e2ef76b3c68b10b9a184ceadb93d4","typeString":"literal_string \"STE\""}],"id":4942,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2570:7:38","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2570:23:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4946,"nodeType":"ExpressionStatement","src":"2570:23:38"}]},"documentation":{"id":4923,"nodeType":"StructuredDocumentation","src":"2245:182:38","text":"@notice Transfers ETH to the recipient address\n @dev Fails with `STE`\n @param to The destination of the transfer\n @param value The value to be transferred"},"id":4948,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferETH","nodeType":"FunctionDefinition","parameters":{"id":4928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4925,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4948,"src":"2458:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4924,"name":"address","nodeType":"ElementaryTypeName","src":"2458:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4927,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4948,"src":"2470:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4926,"name":"uint256","nodeType":"ElementaryTypeName","src":"2470:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2457:27:38"},"returnParameters":{"id":4929,"nodeType":"ParameterList","parameters":[],"src":"2494:0:38"},"scope":4949,"src":"2433:168:38","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":4950,"src":"142:2462:38"}],"src":"46:2560:38"},"id":38},"contracts/elixir-periphery/test/MockTimeNonfungiblePositionManager.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/MockTimeNonfungiblePositionManager.sol","exportedSymbols":{"Address":[6985],"CallbackValidation":[4309],"ChainId":[4321],"Context":[7008],"ERC165":[5108],"ERC721":[6497],"ERC721Permit":[2922],"EnumerableMap":[7568],"EnumerableSet":[8060],"FixedPoint128":[595],"FixedPoint96":[605],"FullMath":[778],"IERC1271":[4206],"IERC165":[5120],"IERC20":[5553],"IERC20Permit":[5051],"IERC20PermitAllowed":[4230],"IERC721":[6613],"IERC721Enumerable":[6644],"IERC721Metadata":[6671],"IERC721Permit":[3791],"IERC721Receiver":[6689],"IElixirFactory":[88],"IElixirMintCallback":[124],"IElixirPool":[110],"IElixirPoolActions":[220],"IElixirPoolDerivedState":[256],"IElixirPoolEvents":[382],"IElixirPoolImmutables":[422],"IElixirPoolOwnerActions":[468],"IElixirPoolState":[588],"IElixirRewarder":[5015],"IMulticall":[3806],"INonfungiblePositionManager":[4048],"INonfungibleTokenPositionDescriptor":[4063],"IPeripheryImmutableState":[4079],"IPeripheryPayments":[4105],"IPoolInitializer":[4124],"ISelfPermit":[4192],"IWETH9":[4247],"LiquidityAmounts":[4661],"LiquidityManagement":[3137],"MockTimeNonfungiblePositionManager":[4994],"Multicall":[3222],"NonfungiblePositionManager":[2720],"PeripheryImmutableState":[3253],"PeripheryPayments":[3470],"PeripheryValidation":[3497],"PoolAddress":[4753],"PoolInitializer":[3589],"PositionKey":[4778],"SafeMath":[5475],"SelfPermit":[3756],"Strings":[8147],"TickMath":[1313],"TransferHelper":[4949]},"id":4995,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":4951,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:39"},{"id":4952,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"65:19:39"},{"absolutePath":"contracts/elixir-periphery/NonfungiblePositionManager.sol","file":"../NonfungiblePositionManager.sol","id":4953,"nodeType":"ImportDirective","scope":4995,"sourceUnit":2721,"src":"88:43:39","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4954,"name":"NonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":2720,"src":"182:26:39","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$2720","typeString":"contract NonfungiblePositionManager"}},"id":4955,"nodeType":"InheritanceSpecifier","src":"182:26:39"}],"contractDependencies":[124,2720,2922,3137,3222,3253,3470,3497,3589,3756,3791,3806,4048,4079,4105,4124,4192,5108,5120,6497,6613,6644,6671,7008],"contractKind":"contract","fullyImplemented":true,"id":4994,"linearizedBaseContracts":[4994,2720,3756,4192,3137,3470,3589,3253,2922,3222,3806,4048,3791,6497,6644,6671,6613,5108,5120,4079,4105,124,4124,7008,3497],"name":"MockTimeNonfungiblePositionManager","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4957,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":4994,"src":"216:12:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4956,"name":"uint256","nodeType":"ElementaryTypeName","src":"216:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"body":{"id":4974,"nodeType":"Block","src":"534:2:39","statements":[]},"id":4975,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":4968,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4959,"src":"427:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4969,"name":"_WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4961,"src":"450:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4970,"name":"_tokenDescriptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4963,"src":"471:16:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4971,"name":"_elixirRewarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4965,"src":"502:15:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4972,"modifierName":{"id":4967,"name":"NonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2720,"src":"386:26:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_NonfungiblePositionManager_$2720_$","typeString":"type(contract NonfungiblePositionManager)"}},"nodeType":"ModifierInvocation","src":"386:142:39"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":4966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4959,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":4975,"src":"259:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4958,"name":"address","nodeType":"ElementaryTypeName","src":"259:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4961,"mutability":"mutable","name":"_WETH9","nodeType":"VariableDeclaration","scope":4975,"src":"286:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4960,"name":"address","nodeType":"ElementaryTypeName","src":"286:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4963,"mutability":"mutable","name":"_tokenDescriptor","nodeType":"VariableDeclaration","scope":4975,"src":"311:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4962,"name":"address","nodeType":"ElementaryTypeName","src":"311:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4965,"mutability":"mutable","name":"_elixirRewarder","nodeType":"VariableDeclaration","scope":4975,"src":"346:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4964,"name":"address","nodeType":"ElementaryTypeName","src":"346:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"248:128:39"},"returnParameters":{"id":4973,"nodeType":"ParameterList","parameters":[],"src":"534:0:39"},"scope":4994,"src":"237:299:39","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4982,"nodeType":"Block","src":"603:30:39","statements":[{"expression":{"id":4980,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4957,"src":"621:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4979,"id":4981,"nodeType":"Return","src":"614:11:39"}]},"id":4983,"implemented":true,"kind":"function","modifiers":[],"name":"_blockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":4976,"nodeType":"ParameterList","parameters":[],"src":"568:2:39"},"returnParameters":{"id":4979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4978,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4983,"src":"594:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4977,"name":"uint256","nodeType":"ElementaryTypeName","src":"594:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"593:9:39"},"scope":4994,"src":"544:89:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4992,"nodeType":"Block","src":"682:31:39","statements":[{"expression":{"id":4990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4988,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4957,"src":"693:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4989,"name":"_time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4985,"src":"700:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"693:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4991,"nodeType":"ExpressionStatement","src":"693:12:39"}]},"functionSelector":"3beb26c4","id":4993,"implemented":true,"kind":"function","modifiers":[],"name":"setTime","nodeType":"FunctionDefinition","parameters":{"id":4986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4985,"mutability":"mutable","name":"_time","nodeType":"VariableDeclaration","scope":4993,"src":"658:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4984,"name":"uint256","nodeType":"ElementaryTypeName","src":"658:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"657:15:39"},"returnParameters":{"id":4987,"nodeType":"ParameterList","parameters":[],"src":"682:0:39"},"scope":4994,"src":"641:72:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4995,"src":"135:581:39"}],"src":"40:678:39"},"id":39},"contracts/elixir-rewarder/interfaces/IElixirRewarder.sol":{"ast":{"absolutePath":"contracts/elixir-rewarder/interfaces/IElixirRewarder.sol","exportedSymbols":{"IElixirRewarder":[5015]},"id":5016,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4996,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:40"},{"id":4997,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:40"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":4998,"nodeType":"StructuredDocumentation","src":"95:280:40","text":"@title IElixirRewarder - Elixir Rewarder interface\n @notice ElixirRewarder is the reward manager contract for Elixir. It works with NonfungiblePositionManager.\n It does not need to do any calculation, and it trusts the amounts notified by NonfungiblePositionManager."},"fullyImplemented":false,"id":5015,"linearizedBaseContracts":[5015],"name":"IElixirRewarder","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4999,"nodeType":"StructuredDocumentation","src":"408:548:40","text":"@notice Send `rewardOwed` to the `recipient`\n @param recipient The address to which the reward should be sent\n rewardOwed The amount of reward the will be sent\n tokenId The position token ID for which the reward is being claimed\n pool The address of the pool from which the position belongs to, this will determine reward token\n rewardLastUpdated The last timestamp when there was an operation on the position\n rewardLastCollected The last timestamp when the reward was collected for the position"},"functionSelector":"32d5eeaf","id":5014,"implemented":false,"kind":"function","modifiers":[],"name":"claimReward","nodeType":"FunctionDefinition","parameters":{"id":5012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5001,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":5014,"src":"993:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5000,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5003,"mutability":"mutable","name":"rewardOwed","nodeType":"VariableDeclaration","scope":5014,"src":"1021:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5002,"name":"uint256","nodeType":"ElementaryTypeName","src":"1021:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5005,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5014,"src":"1050:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5004,"name":"uint256","nodeType":"ElementaryTypeName","src":"1050:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5007,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":5014,"src":"1076:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5006,"name":"address","nodeType":"ElementaryTypeName","src":"1076:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5009,"mutability":"mutable","name":"rewardLastUpdated","nodeType":"VariableDeclaration","scope":5014,"src":"1099:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5008,"name":"uint32","nodeType":"ElementaryTypeName","src":"1099:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5011,"mutability":"mutable","name":"rewardLastCollected","nodeType":"VariableDeclaration","scope":5014,"src":"1134:26:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5010,"name":"uint32","nodeType":"ElementaryTypeName","src":"1134:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"982:185:40"},"returnParameters":{"id":5013,"nodeType":"ParameterList","parameters":[],"src":"1176:0:40"},"scope":5015,"src":"962:215:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5016,"src":"375:805:40"}],"src":"46:1136:40"},"id":40},"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[5051]},"id":5052,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5017,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:41"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":5018,"nodeType":"StructuredDocumentation","src":"66:482:41","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":5051,"linearizedBaseContracts":[5051],"name":"IERC20Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5019,"nodeType":"StructuredDocumentation","src":"578:788:41","text":" @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n given `owner`'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":5036,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":5034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5021,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5036,"src":"1387:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5020,"name":"address","nodeType":"ElementaryTypeName","src":"1387:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5023,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":5036,"src":"1402:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5022,"name":"address","nodeType":"ElementaryTypeName","src":"1402:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5025,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":5036,"src":"1419:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5024,"name":"uint256","nodeType":"ElementaryTypeName","src":"1419:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5027,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":5036,"src":"1434:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5026,"name":"uint256","nodeType":"ElementaryTypeName","src":"1434:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5029,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":5036,"src":"1452:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5028,"name":"uint8","nodeType":"ElementaryTypeName","src":"1452:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5031,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":5036,"src":"1461:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5030,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1461:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5033,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":5036,"src":"1472:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5032,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1472:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1386:96:41"},"returnParameters":{"id":5035,"nodeType":"ParameterList","parameters":[],"src":"1491:0:41"},"scope":5051,"src":"1371:121:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5037,"nodeType":"StructuredDocumentation","src":"1498:294:41","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":5044,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":5040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5039,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5044,"src":"1813:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5038,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1812:15:41"},"returnParameters":{"id":5043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5042,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5044,"src":"1851:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5041,"name":"uint256","nodeType":"ElementaryTypeName","src":"1851:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1850:9:41"},"scope":5051,"src":"1797:63:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5045,"nodeType":"StructuredDocumentation","src":"1866:128:41","text":" @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}."},"functionSelector":"3644e515","id":5050,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":5046,"nodeType":"ParameterList","parameters":[],"src":"2077:2:41"},"returnParameters":{"id":5049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5048,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5050,"src":"2103:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5047,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2103:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2102:9:41"},"scope":5051,"src":"2052:60:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5052,"src":"549:1565:41"}],"src":"33:2082:41"},"id":41},"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol","exportedSymbols":{"ERC165":[5108],"IERC165":[5120]},"id":5109,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5053,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:42"},{"absolutePath":"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol","file":"./IERC165.sol","id":5054,"nodeType":"ImportDirective","scope":5109,"sourceUnit":5121,"src":"58:23:42","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5056,"name":"IERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":5120,"src":"283:7:42","typeDescriptions":{"typeIdentifier":"t_contract$_IERC165_$5120","typeString":"contract IERC165"}},"id":5057,"nodeType":"InheritanceSpecifier","src":"283:7:42"}],"contractDependencies":[5120],"contractKind":"contract","documentation":{"id":5055,"nodeType":"StructuredDocumentation","src":"83:171:42","text":" @dev Implementation of the {IERC165} interface.\n Contracts may inherit from this and call {_registerInterface} to declare\n their support of an interface."},"fullyImplemented":true,"id":5108,"linearizedBaseContracts":[5108,5120],"name":"ERC165","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5060,"mutability":"constant","name":"_INTERFACE_ID_ERC165","nodeType":"VariableDeclaration","scope":5108,"src":"380:57:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5058,"name":"bytes4","nodeType":"ElementaryTypeName","src":"380:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783031666663396137","id":5059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"427:10:42","typeDescriptions":{"typeIdentifier":"t_rational_33540519_by_1","typeString":"int_const 33540519"},"value":"0x01ffc9a7"},"visibility":"private"},{"constant":false,"documentation":{"id":5061,"nodeType":"StructuredDocumentation","src":"444:82:42","text":" @dev Mapping of interface ids to whether or not it's supported."},"id":5065,"mutability":"mutable","name":"_supportedInterfaces","nodeType":"VariableDeclaration","scope":5108,"src":"531:52:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"typeName":{"id":5064,"keyType":{"id":5062,"name":"bytes4","nodeType":"ElementaryTypeName","src":"539:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"531:23:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"valueType":{"id":5063,"name":"bool","nodeType":"ElementaryTypeName","src":"549:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"body":{"id":5072,"nodeType":"Block","src":"605:193:42","statements":[{"expression":{"arguments":[{"id":5069,"name":"_INTERFACE_ID_ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5060,"src":"770:20:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5068,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"751:18:42","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":5070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"751:40:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5071,"nodeType":"ExpressionStatement","src":"751:40:42"}]},"id":5073,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":5066,"nodeType":"ParameterList","parameters":[],"src":"602:2:42"},"returnParameters":{"id":5067,"nodeType":"ParameterList","parameters":[],"src":"605:0:42"},"scope":5108,"src":"590:208:42","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[5119],"body":{"id":5086,"nodeType":"Block","src":"1039:57:42","statements":[{"expression":{"baseExpression":{"id":5082,"name":"_supportedInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5065,"src":"1056:20:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":5084,"indexExpression":{"id":5083,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"1077:11:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1056:33:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5081,"id":5085,"nodeType":"Return","src":"1049:40:42"}]},"documentation":{"id":5074,"nodeType":"StructuredDocumentation","src":"804:139:42","text":" @dev See {IERC165-supportsInterface}.\n Time complexity O(1), guaranteed to always use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":5087,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nodeType":"FunctionDefinition","overrides":{"id":5078,"nodeType":"OverrideSpecifier","overrides":[],"src":"1015:8:42"},"parameters":{"id":5077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5076,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":5087,"src":"975:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5075,"name":"bytes4","nodeType":"ElementaryTypeName","src":"975:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"974:20:42"},"returnParameters":{"id":5081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5080,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5087,"src":"1033:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5079,"name":"bool","nodeType":"ElementaryTypeName","src":"1033:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1032:6:42"},"scope":5108,"src":"948:148:42","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":5106,"nodeType":"Block","src":"1555:133:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5094,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5090,"src":"1573:11:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30786666666666666666","id":5095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1588:10:42","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"1573:25:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433136353a20696e76616c696420696e74657266616365206964","id":5097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1600:30:42","typeDescriptions":{"typeIdentifier":"t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee","typeString":"literal_string \"ERC165: invalid interface id\""},"value":"ERC165: invalid interface id"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee","typeString":"literal_string \"ERC165: invalid interface id\""}],"id":5093,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1565:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1565:66:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5099,"nodeType":"ExpressionStatement","src":"1565:66:42"},{"expression":{"id":5104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5100,"name":"_supportedInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5065,"src":"1641:20:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":5102,"indexExpression":{"id":5101,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5090,"src":"1662:11:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1641:33:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":5103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1677:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1641:40:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5105,"nodeType":"ExpressionStatement","src":"1641:40:42"}]},"documentation":{"id":5088,"nodeType":"StructuredDocumentation","src":"1102:383:42","text":" @dev Registers the contract as an implementer of the interface defined by\n `interfaceId`. Support of the actual ERC165 interface is automatic and\n registering its interface id is not required.\n See {IERC165-supportsInterface}.\n Requirements:\n - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`)."},"id":5107,"implemented":true,"kind":"function","modifiers":[],"name":"_registerInterface","nodeType":"FunctionDefinition","parameters":{"id":5091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5090,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":5107,"src":"1518:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5089,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1518:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1517:20:42"},"returnParameters":{"id":5092,"nodeType":"ParameterList","parameters":[],"src":"1555:0:42"},"scope":5108,"src":"1490:198:42","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":5109,"src":"255:1435:42"}],"src":"33:1658:42"},"id":42},"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol","exportedSymbols":{"IERC165":[5120]},"id":5121,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5110,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:43"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":5111,"nodeType":"StructuredDocumentation","src":"58:279:43","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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":5120,"linearizedBaseContracts":[5120],"name":"IERC165","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5112,"nodeType":"StructuredDocumentation","src":"362:340:43","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[EIP 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":5119,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nodeType":"FunctionDefinition","parameters":{"id":5115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5114,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":5119,"src":"734:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5113,"name":"bytes4","nodeType":"ElementaryTypeName","src":"734:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"733:20:43"},"returnParameters":{"id":5118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5117,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5119,"src":"777:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5116,"name":"bool","nodeType":"ElementaryTypeName","src":"777:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"776:6:43"},"scope":5120,"src":"707:76:43","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5121,"src":"338:447:43"}],"src":"33:753:43"},"id":43},"openzeppelin-contracts-solc-0.7/math/SafeMath.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/math/SafeMath.sol","exportedSymbols":{"SafeMath":[5475]},"id":5476,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5122,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:44"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5123,"nodeType":"StructuredDocumentation","src":"58:563:44","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n 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":5475,"linearizedBaseContracts":[5475],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":5153,"nodeType":"Block","src":"857:98:44","statements":[{"assignments":[5136],"declarations":[{"constant":false,"id":5136,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5153,"src":"867:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5135,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5140,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5137,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5126,"src":"879:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5138,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5128,"src":"883:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"879:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"867:17:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5141,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"898:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5142,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5126,"src":"902:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"898:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5148,"nodeType":"IfStatement","src":"894:28:44","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"913:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"920:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"912:10:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5134,"id":5147,"nodeType":"Return","src":"905:17:44"}},{"expression":{"components":[{"hexValue":"74727565","id":5149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"940:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":5150,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"946:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5151,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"939:9:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5134,"id":5152,"nodeType":"Return","src":"932:16:44"}]},"documentation":{"id":5124,"nodeType":"StructuredDocumentation","src":"645:131:44","text":" @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":5154,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nodeType":"FunctionDefinition","parameters":{"id":5129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5126,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5154,"src":"797:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5125,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5128,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5154,"src":"808:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5127,"name":"uint256","nodeType":"ElementaryTypeName","src":"808:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"796:22:44"},"returnParameters":{"id":5134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5131,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5154,"src":"842:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5130,"name":"bool","nodeType":"ElementaryTypeName","src":"842:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5133,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5154,"src":"848:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5132,"name":"uint256","nodeType":"ElementaryTypeName","src":"848:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"841:15:44"},"scope":5475,"src":"781:174:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5180,"nodeType":"Block","src":"1177:75:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5166,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5159,"src":"1191:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5167,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5157,"src":"1195:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1191:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5173,"nodeType":"IfStatement","src":"1187:28:44","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1206:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1213:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5171,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1205:10:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5165,"id":5172,"nodeType":"Return","src":"1198:17:44"}},{"expression":{"components":[{"hexValue":"74727565","id":5174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1233:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5175,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5157,"src":"1239:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5176,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5159,"src":"1243:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1239:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5178,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1232:13:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5165,"id":5179,"nodeType":"Return","src":"1225:20:44"}]},"documentation":{"id":5155,"nodeType":"StructuredDocumentation","src":"961:135:44","text":" @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":5181,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nodeType":"FunctionDefinition","parameters":{"id":5160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5157,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5181,"src":"1117:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5156,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5159,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5181,"src":"1128:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5158,"name":"uint256","nodeType":"ElementaryTypeName","src":"1128:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1116:22:44"},"returnParameters":{"id":5165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5162,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5181,"src":"1162:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5161,"name":"bool","nodeType":"ElementaryTypeName","src":"1162:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5164,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5181,"src":"1168:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5163,"name":"uint256","nodeType":"ElementaryTypeName","src":"1168:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1161:15:44"},"scope":5475,"src":"1101:151:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5221,"nodeType":"Block","src":"1476:359:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5193,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5184,"src":"1708:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1713:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1708:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5200,"nodeType":"IfStatement","src":"1704:28:44","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":5196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1724:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":5197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1730:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5198,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1723:9:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5192,"id":5199,"nodeType":"Return","src":"1716:16:44"}},{"assignments":[5202],"declarations":[{"constant":false,"id":5202,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5221,"src":"1742:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5201,"name":"uint256","nodeType":"ElementaryTypeName","src":"1742:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5206,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5203,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5184,"src":"1754:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5204,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5186,"src":"1758:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1754:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1742:17:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5207,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5202,"src":"1773:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5208,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5184,"src":"1777:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1773:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5186,"src":"1782:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1773:10:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5216,"nodeType":"IfStatement","src":"1769:33:44","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1793:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1800:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1792:10:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5192,"id":5215,"nodeType":"Return","src":"1785:17:44"}},{"expression":{"components":[{"hexValue":"74727565","id":5217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1820:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":5218,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5202,"src":"1826:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5219,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1819:9:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5192,"id":5220,"nodeType":"Return","src":"1812:16:44"}]},"documentation":{"id":5182,"nodeType":"StructuredDocumentation","src":"1258:137:44","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":5222,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nodeType":"FunctionDefinition","parameters":{"id":5187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5184,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5222,"src":"1416:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5183,"name":"uint256","nodeType":"ElementaryTypeName","src":"1416:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5186,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5222,"src":"1427:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5185,"name":"uint256","nodeType":"ElementaryTypeName","src":"1427:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1415:22:44"},"returnParameters":{"id":5192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5189,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5222,"src":"1461:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5188,"name":"bool","nodeType":"ElementaryTypeName","src":"1461:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5191,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5222,"src":"1467:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5190,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:15:44"},"scope":5475,"src":"1400:435:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5248,"nodeType":"Block","src":"2060:76:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5234,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5227,"src":"2074:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2079:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2074:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5241,"nodeType":"IfStatement","src":"2070:29:44","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2090:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2097:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5239,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2089:10:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5233,"id":5240,"nodeType":"Return","src":"2082:17:44"}},{"expression":{"components":[{"hexValue":"74727565","id":5242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2117:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5243,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5225,"src":"2123:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5244,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5227,"src":"2127:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2123:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5246,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2116:13:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5233,"id":5247,"nodeType":"Return","src":"2109:20:44"}]},"documentation":{"id":5223,"nodeType":"StructuredDocumentation","src":"1841:138:44","text":" @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":5249,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nodeType":"FunctionDefinition","parameters":{"id":5228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5225,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5249,"src":"2000:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5224,"name":"uint256","nodeType":"ElementaryTypeName","src":"2000:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5227,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5249,"src":"2011:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5226,"name":"uint256","nodeType":"ElementaryTypeName","src":"2011:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1999:22:44"},"returnParameters":{"id":5233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5230,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5249,"src":"2045:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5229,"name":"bool","nodeType":"ElementaryTypeName","src":"2045:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5232,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5249,"src":"2051:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5231,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2044:15:44"},"scope":5475,"src":"1984:152:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5275,"nodeType":"Block","src":"2371:76:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5261,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5254,"src":"2385:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2390:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2385:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5268,"nodeType":"IfStatement","src":"2381:29:44","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2401:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2408:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5266,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2400:10:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5260,"id":5267,"nodeType":"Return","src":"2393:17:44"}},{"expression":{"components":[{"hexValue":"74727565","id":5269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2428:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5270,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5252,"src":"2434:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":5271,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5254,"src":"2438:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2434:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2427:13:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5260,"id":5274,"nodeType":"Return","src":"2420:20:44"}]},"documentation":{"id":5250,"nodeType":"StructuredDocumentation","src":"2142:148:44","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":5276,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nodeType":"FunctionDefinition","parameters":{"id":5255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5252,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5276,"src":"2311:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5251,"name":"uint256","nodeType":"ElementaryTypeName","src":"2311:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5254,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5276,"src":"2322:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5253,"name":"uint256","nodeType":"ElementaryTypeName","src":"2322:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2310:22:44"},"returnParameters":{"id":5260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5257,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5276,"src":"2356:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5256,"name":"bool","nodeType":"ElementaryTypeName","src":"2356:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5259,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5276,"src":"2362:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5258,"name":"uint256","nodeType":"ElementaryTypeName","src":"2362:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2355:15:44"},"scope":5475,"src":"2295:152:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5301,"nodeType":"Block","src":"2749:108:44","statements":[{"assignments":[5287],"declarations":[{"constant":false,"id":5287,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5301,"src":"2759:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5286,"name":"uint256","nodeType":"ElementaryTypeName","src":"2759:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5291,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5288,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5279,"src":"2771:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5289,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"2775:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2771:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2759:17:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5293,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5287,"src":"2794:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5294,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5279,"src":"2799:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2794:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206164646974696f6e206f766572666c6f77","id":5296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2802:29:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""},"value":"SafeMath: addition overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"id":5292,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2786:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2786:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5298,"nodeType":"ExpressionStatement","src":"2786:46:44"},{"expression":{"id":5299,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5287,"src":"2849:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5285,"id":5300,"nodeType":"Return","src":"2842:8:44"}]},"documentation":{"id":5277,"nodeType":"StructuredDocumentation","src":"2453:224:44","text":" @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"id":5302,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":5282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5279,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5302,"src":"2695:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5278,"name":"uint256","nodeType":"ElementaryTypeName","src":"2695:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5281,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5302,"src":"2706:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5280,"name":"uint256","nodeType":"ElementaryTypeName","src":"2706:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:22:44"},"returnParameters":{"id":5285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5284,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5302,"src":"2740:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5283,"name":"uint256","nodeType":"ElementaryTypeName","src":"2740:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2739:9:44"},"scope":5475,"src":"2682:175:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5323,"nodeType":"Block","src":"3195:88:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5313,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5307,"src":"3213:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5314,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5305,"src":"3218:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3213:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":5316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3221:32:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""},"value":"SafeMath: subtraction overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"id":5312,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3205:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3205:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5318,"nodeType":"ExpressionStatement","src":"3205:49:44"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5319,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5305,"src":"3271:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5320,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5307,"src":"3275:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3271:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5311,"id":5322,"nodeType":"Return","src":"3264:12:44"}]},"documentation":{"id":5303,"nodeType":"StructuredDocumentation","src":"2863:260:44","text":" @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":5324,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":5308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5305,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5324,"src":"3141:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5304,"name":"uint256","nodeType":"ElementaryTypeName","src":"3141:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5307,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5324,"src":"3152:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5306,"name":"uint256","nodeType":"ElementaryTypeName","src":"3152:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3140:22:44"},"returnParameters":{"id":5311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5310,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5324,"src":"3186:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5309,"name":"uint256","nodeType":"ElementaryTypeName","src":"3186:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3185:9:44"},"scope":5475,"src":"3128:155:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5357,"nodeType":"Block","src":"3597:148:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5334,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5327,"src":"3611:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3616:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5339,"nodeType":"IfStatement","src":"3607:20:44","trueBody":{"expression":{"hexValue":"30","id":5337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3626:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":5333,"id":5338,"nodeType":"Return","src":"3619:8:44"}},{"assignments":[5341],"declarations":[{"constant":false,"id":5341,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5357,"src":"3637:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5340,"name":"uint256","nodeType":"ElementaryTypeName","src":"3637:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5345,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5342,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5327,"src":"3649:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5343,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5329,"src":"3653:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3649:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3637:17:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"3672:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5348,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5327,"src":"3676:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3672:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5350,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5329,"src":"3681:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3672:10:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":5352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3684:35:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""},"value":"SafeMath: multiplication overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"id":5346,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3664:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3664:56:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5354,"nodeType":"ExpressionStatement","src":"3664:56:44"},{"expression":{"id":5355,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"3737:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5333,"id":5356,"nodeType":"Return","src":"3730:8:44"}]},"documentation":{"id":5325,"nodeType":"StructuredDocumentation","src":"3289:236:44","text":" @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."},"id":5358,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":5330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5327,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5358,"src":"3543:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5326,"name":"uint256","nodeType":"ElementaryTypeName","src":"3543:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5329,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5358,"src":"3554:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5328,"name":"uint256","nodeType":"ElementaryTypeName","src":"3554:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3542:22:44"},"returnParameters":{"id":5333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5332,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5358,"src":"3588:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5331,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3587:9:44"},"scope":5475,"src":"3530:215:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5379,"nodeType":"Block","src":"4276:83:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5369,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"4294:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4298:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4294:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206469766973696f6e206279207a65726f","id":5372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4301:28:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""},"value":"SafeMath: division by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"id":5368,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4286:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4286:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5374,"nodeType":"ExpressionStatement","src":"4286:44:44"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5375,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5361,"src":"4347:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5376,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"4351:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4347:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5367,"id":5378,"nodeType":"Return","src":"4340:12:44"}]},"documentation":{"id":5359,"nodeType":"StructuredDocumentation","src":"3751:453:44","text":" @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":5380,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":5364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5361,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5380,"src":"4222:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5360,"name":"uint256","nodeType":"ElementaryTypeName","src":"4222:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5363,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5380,"src":"4233:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5362,"name":"uint256","nodeType":"ElementaryTypeName","src":"4233:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4221:22:44"},"returnParameters":{"id":5367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5366,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5380,"src":"4267:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5365,"name":"uint256","nodeType":"ElementaryTypeName","src":"4267:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4266:9:44"},"scope":5475,"src":"4209:150:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5401,"nodeType":"Block","src":"4879:81:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5391,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5385,"src":"4897:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4901:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4897:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d6f64756c6f206279207a65726f","id":5394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4904:26:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""},"value":"SafeMath: modulo by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"id":5390,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4889:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4889:42:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5396,"nodeType":"ExpressionStatement","src":"4889:42:44"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5397,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5383,"src":"4948:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":5398,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5385,"src":"4952:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4948:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5389,"id":5400,"nodeType":"Return","src":"4941:12:44"}]},"documentation":{"id":5381,"nodeType":"StructuredDocumentation","src":"4365:442:44","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":5402,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":5386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5383,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5402,"src":"4825:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5382,"name":"uint256","nodeType":"ElementaryTypeName","src":"4825:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5385,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5402,"src":"4836:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5384,"name":"uint256","nodeType":"ElementaryTypeName","src":"4836:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4824:22:44"},"returnParameters":{"id":5389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5388,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5402,"src":"4870:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5387,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4869:9:44"},"scope":5475,"src":"4812:148:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5425,"nodeType":"Block","src":"5519:68:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5415,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5407,"src":"5537:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5416,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"5542:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5537:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5418,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5409,"src":"5545:12:44","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":5414,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5529:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5529:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5420,"nodeType":"ExpressionStatement","src":"5529:29:44"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"5575:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5407,"src":"5579:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5575:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5413,"id":5424,"nodeType":"Return","src":"5568:12:44"}]},"documentation":{"id":5403,"nodeType":"StructuredDocumentation","src":"4966:453:44","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":5426,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":5410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5405,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5426,"src":"5437:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5404,"name":"uint256","nodeType":"ElementaryTypeName","src":"5437:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5407,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5426,"src":"5448:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5406,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5409,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":5426,"src":"5459:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5408,"name":"string","nodeType":"ElementaryTypeName","src":"5459:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5436:50:44"},"returnParameters":{"id":5413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5412,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5426,"src":"5510:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5411,"name":"uint256","nodeType":"ElementaryTypeName","src":"5510:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5509:9:44"},"scope":5475,"src":"5424:163:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5449,"nodeType":"Block","src":"6339:67:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5439,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5431,"src":"6357:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6361:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6357:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5442,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5433,"src":"6364:12:44","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":5438,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6349:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6349:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5444,"nodeType":"ExpressionStatement","src":"6349:28:44"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5445,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"6394:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5446,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5431,"src":"6398:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6394:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5437,"id":5448,"nodeType":"Return","src":"6387:12:44"}]},"documentation":{"id":5427,"nodeType":"StructuredDocumentation","src":"5593:646:44","text":" @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryDiv}.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":5450,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":5434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5429,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5450,"src":"6257:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5428,"name":"uint256","nodeType":"ElementaryTypeName","src":"6257:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5431,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5450,"src":"6268:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5430,"name":"uint256","nodeType":"ElementaryTypeName","src":"6268:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5433,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":5450,"src":"6279:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5432,"name":"string","nodeType":"ElementaryTypeName","src":"6279:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6256:50:44"},"returnParameters":{"id":5437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5436,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5450,"src":"6330:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5435,"name":"uint256","nodeType":"ElementaryTypeName","src":"6330:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6329:9:44"},"scope":5475,"src":"6244:162:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5473,"nodeType":"Block","src":"7147:67:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5463,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5455,"src":"7165:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7169:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7165:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5466,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5457,"src":"7172:12:44","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":5462,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7157:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7157:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5468,"nodeType":"ExpressionStatement","src":"7157:28:44"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5469,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5453,"src":"7202:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":5470,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5455,"src":"7206:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7202:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5461,"id":5472,"nodeType":"Return","src":"7195:12:44"}]},"documentation":{"id":5451,"nodeType":"StructuredDocumentation","src":"6412:635:44","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":5474,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":5458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5453,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5474,"src":"7065:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5452,"name":"uint256","nodeType":"ElementaryTypeName","src":"7065:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5455,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5474,"src":"7076:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5454,"name":"uint256","nodeType":"ElementaryTypeName","src":"7076:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5457,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":5474,"src":"7087:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5456,"name":"string","nodeType":"ElementaryTypeName","src":"7087:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7064:50:44"},"returnParameters":{"id":5461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5460,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5474,"src":"7138:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5459,"name":"uint256","nodeType":"ElementaryTypeName","src":"7138:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7137:9:44"},"scope":5475,"src":"7052:162:44","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5476,"src":"622:6594:44"}],"src":"33:7184:44"},"id":44},"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[5553]},"id":5554,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5477,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:45"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":5478,"nodeType":"StructuredDocumentation","src":"58:70:45","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":5553,"linearizedBaseContracts":[5553],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5479,"nodeType":"StructuredDocumentation","src":"152:66:45","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":5484,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":5480,"nodeType":"ParameterList","parameters":[],"src":"243:2:45"},"returnParameters":{"id":5483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5482,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5484,"src":"269:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5481,"name":"uint256","nodeType":"ElementaryTypeName","src":"269:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"268:9:45"},"scope":5553,"src":"223:55:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5485,"nodeType":"StructuredDocumentation","src":"284:72:45","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":5492,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":5488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5487,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":5492,"src":"380:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5486,"name":"address","nodeType":"ElementaryTypeName","src":"380:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"379:17:45"},"returnParameters":{"id":5491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5490,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5492,"src":"420:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5489,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"419:9:45"},"scope":5553,"src":"361:68:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5493,"nodeType":"StructuredDocumentation","src":"435:209:45","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":5502,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":5498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5495,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":5502,"src":"667:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5494,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5497,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":5502,"src":"686:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5496,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"666:35:45"},"returnParameters":{"id":5501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5500,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5502,"src":"720:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5499,"name":"bool","nodeType":"ElementaryTypeName","src":"720:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"719:6:45"},"scope":5553,"src":"649:77:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5503,"nodeType":"StructuredDocumentation","src":"732:264:45","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":5512,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":5508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5505,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5512,"src":"1020:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5504,"name":"address","nodeType":"ElementaryTypeName","src":"1020:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5507,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":5512,"src":"1035:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5506,"name":"address","nodeType":"ElementaryTypeName","src":"1035:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1019:32:45"},"returnParameters":{"id":5511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5510,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5512,"src":"1075:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5509,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1074:9:45"},"scope":5553,"src":"1001:83:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5513,"nodeType":"StructuredDocumentation","src":"1090:642:45","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":5522,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":5518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5515,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":5522,"src":"1754:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5514,"name":"address","nodeType":"ElementaryTypeName","src":"1754:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5517,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":5522,"src":"1771:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5516,"name":"uint256","nodeType":"ElementaryTypeName","src":"1771:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:33:45"},"returnParameters":{"id":5521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5520,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5522,"src":"1805:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5519,"name":"bool","nodeType":"ElementaryTypeName","src":"1805:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1804:6:45"},"scope":5553,"src":"1737:74:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5523,"nodeType":"StructuredDocumentation","src":"1817:296:45","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":5534,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":5530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5525,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":5534,"src":"2140:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5524,"name":"address","nodeType":"ElementaryTypeName","src":"2140:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5527,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":5534,"src":"2156:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5526,"name":"address","nodeType":"ElementaryTypeName","src":"2156:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5529,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":5534,"src":"2175:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5528,"name":"uint256","nodeType":"ElementaryTypeName","src":"2175:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2139:51:45"},"returnParameters":{"id":5533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5532,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5534,"src":"2209:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5531,"name":"bool","nodeType":"ElementaryTypeName","src":"2209:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2208:6:45"},"scope":5553,"src":"2118:97:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":5535,"nodeType":"StructuredDocumentation","src":"2221:158:45","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":5543,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":5542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5537,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":5543,"src":"2399:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5536,"name":"address","nodeType":"ElementaryTypeName","src":"2399:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5539,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5543,"src":"2421:18:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5538,"name":"address","nodeType":"ElementaryTypeName","src":"2421:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5541,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":5543,"src":"2441:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5540,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2398:57:45"},"src":"2384:72:45"},{"anonymous":false,"documentation":{"id":5544,"nodeType":"StructuredDocumentation","src":"2462:148:45","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"id":5552,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":5551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5546,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5552,"src":"2630:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5545,"name":"address","nodeType":"ElementaryTypeName","src":"2630:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5548,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":5552,"src":"2653:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5547,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5550,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":5552,"src":"2678:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5549,"name":"uint256","nodeType":"ElementaryTypeName","src":"2678:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2629:63:45"},"src":"2615:78:45"}],"scope":5554,"src":"129:2566:45"}],"src":"33:2663:45"},"id":45},"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol","exportedSymbols":{"Address":[6985],"Context":[7008],"ERC165":[5108],"ERC721":[6497],"EnumerableMap":[7568],"EnumerableSet":[8060],"IERC165":[5120],"IERC721":[6613],"IERC721Enumerable":[6644],"IERC721Metadata":[6671],"IERC721Receiver":[6689],"SafeMath":[5475],"Strings":[8147]},"id":6498,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5555,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:46"},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Context.sol","file":"../../utils/Context.sol","id":5556,"nodeType":"ImportDirective","scope":6498,"sourceUnit":7009,"src":"58:33:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":5557,"nodeType":"ImportDirective","scope":6498,"sourceUnit":6614,"src":"92:23:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol","file":"./IERC721Metadata.sol","id":5558,"nodeType":"ImportDirective","scope":6498,"sourceUnit":6672,"src":"116:31:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol","file":"./IERC721Enumerable.sol","id":5559,"nodeType":"ImportDirective","scope":6498,"sourceUnit":6645,"src":"148:33:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","id":5560,"nodeType":"ImportDirective","scope":6498,"sourceUnit":6690,"src":"182:31:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol","file":"../../introspection/ERC165.sol","id":5561,"nodeType":"ImportDirective","scope":6498,"sourceUnit":5109,"src":"214:40:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/math/SafeMath.sol","file":"../../math/SafeMath.sol","id":5562,"nodeType":"ImportDirective","scope":6498,"sourceUnit":5476,"src":"255:33:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Address.sol","file":"../../utils/Address.sol","id":5563,"nodeType":"ImportDirective","scope":6498,"sourceUnit":6986,"src":"289:33:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol","file":"../../utils/EnumerableSet.sol","id":5564,"nodeType":"ImportDirective","scope":6498,"sourceUnit":8061,"src":"323:39:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol","file":"../../utils/EnumerableMap.sol","id":5565,"nodeType":"ImportDirective","scope":6498,"sourceUnit":7569,"src":"363:39:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Strings.sol","file":"../../utils/Strings.sol","id":5566,"nodeType":"ImportDirective","scope":6498,"sourceUnit":8148,"src":"403:33:46","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5568,"name":"Context","nodeType":"UserDefinedTypeName","referencedDeclaration":7008,"src":"582:7:46","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$7008","typeString":"contract Context"}},"id":5569,"nodeType":"InheritanceSpecifier","src":"582:7:46"},{"baseName":{"id":5570,"name":"ERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":5108,"src":"591:6:46","typeDescriptions":{"typeIdentifier":"t_contract$_ERC165_$5108","typeString":"contract ERC165"}},"id":5571,"nodeType":"InheritanceSpecifier","src":"591:6:46"},{"baseName":{"id":5572,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":6613,"src":"599:7:46","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$6613","typeString":"contract IERC721"}},"id":5573,"nodeType":"InheritanceSpecifier","src":"599:7:46"},{"baseName":{"id":5574,"name":"IERC721Metadata","nodeType":"UserDefinedTypeName","referencedDeclaration":6671,"src":"608:15:46","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$6671","typeString":"contract IERC721Metadata"}},"id":5575,"nodeType":"InheritanceSpecifier","src":"608:15:46"},{"baseName":{"id":5576,"name":"IERC721Enumerable","nodeType":"UserDefinedTypeName","referencedDeclaration":6644,"src":"625:17:46","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Enumerable_$6644","typeString":"contract IERC721Enumerable"}},"id":5577,"nodeType":"InheritanceSpecifier","src":"625:17:46"}],"contractDependencies":[5108,5120,6613,6644,6671,7008],"contractKind":"contract","documentation":{"id":5567,"nodeType":"StructuredDocumentation","src":"438:124:46","text":" @title ERC721 Non-Fungible Token Standard basic implementation\n @dev see https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":true,"id":6497,"linearizedBaseContracts":[6497,6644,6671,6613,5108,5120,7008],"name":"ERC721","nodeType":"ContractDefinition","nodes":[{"id":5580,"libraryName":{"id":5578,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":5475,"src":"655:8:46","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$5475","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"649:27:46","typeName":{"id":5579,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":5583,"libraryName":{"id":5581,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":6985,"src":"687:7:46","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6985","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"681:26:46","typeName":{"id":5582,"name":"address","nodeType":"ElementaryTypeName","src":"699:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":5586,"libraryName":{"id":5584,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8060,"src":"718:13:46","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$8060","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"712:46:46","typeName":{"id":5585,"name":"EnumerableSet.UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7965,"src":"736:21:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"}}},{"id":5589,"libraryName":{"id":5587,"name":"EnumerableMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7568,"src":"769:13:46","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableMap_$7568","typeString":"library EnumerableMap"}},"nodeType":"UsingForDirective","src":"763:55:46","typeName":{"id":5588,"name":"EnumerableMap.UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7342,"src":"787:30:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}}},{"id":5592,"libraryName":{"id":5590,"name":"Strings","nodeType":"UserDefinedTypeName","referencedDeclaration":8147,"src":"829:7:46","typeDescriptions":{"typeIdentifier":"t_contract$_Strings_$8147","typeString":"library Strings"}},"nodeType":"UsingForDirective","src":"823:26:46","typeName":{"id":5591,"name":"uint256","nodeType":"ElementaryTypeName","src":"841:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":5595,"mutability":"constant","name":"_ERC721_RECEIVED","nodeType":"VariableDeclaration","scope":6497,"src":"1027:53:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1027:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783135306237613032","id":5594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1070:10:46","typeDescriptions":{"typeIdentifier":"t_rational_353073666_by_1","typeString":"int_const 353073666"},"value":"0x150b7a02"},"visibility":"private"},{"constant":false,"id":5599,"mutability":"mutable","name":"_holderTokens","nodeType":"VariableDeclaration","scope":6497,"src":"1164:64:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$7965_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet)"},"typeName":{"id":5598,"keyType":{"id":5596,"name":"address","nodeType":"ElementaryTypeName","src":"1173:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1164:42:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$7965_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet)"},"valueType":{"id":5597,"name":"EnumerableSet.UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7965,"src":"1184:21:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"}}},"visibility":"private"},{"constant":false,"id":5601,"mutability":"mutable","name":"_tokenOwners","nodeType":"VariableDeclaration","scope":6497,"src":"1292:51:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":5600,"name":"EnumerableMap.UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7342,"src":"1292:30:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"private"},{"constant":false,"id":5605,"mutability":"mutable","name":"_tokenApprovals","nodeType":"VariableDeclaration","scope":6497,"src":"1399:52:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":5604,"keyType":{"id":5602,"name":"uint256","nodeType":"ElementaryTypeName","src":"1408:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1399:28:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":5603,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":5611,"mutability":"mutable","name":"_operatorApprovals","nodeType":"VariableDeclaration","scope":6497,"src":"1506:73:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":5610,"keyType":{"id":5606,"name":"address","nodeType":"ElementaryTypeName","src":"1515:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1506:46:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":5609,"keyType":{"id":5607,"name":"address","nodeType":"ElementaryTypeName","src":"1535:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1526:25:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":5608,"name":"bool","nodeType":"ElementaryTypeName","src":"1546:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"constant":false,"id":5613,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":6497,"src":"1604:20:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":5612,"name":"string","nodeType":"ElementaryTypeName","src":"1604:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":5615,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":6497,"src":"1651:22:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":5614,"name":"string","nodeType":"ElementaryTypeName","src":"1651:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":5619,"mutability":"mutable","name":"_tokenURIs","nodeType":"VariableDeclaration","scope":6497,"src":"1719:46:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"typeName":{"id":5618,"keyType":{"id":5616,"name":"uint256","nodeType":"ElementaryTypeName","src":"1728:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1719:27:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"valueType":{"id":5617,"name":"string","nodeType":"ElementaryTypeName","src":"1739:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"visibility":"private"},{"constant":false,"id":5621,"mutability":"mutable","name":"_baseURI","nodeType":"VariableDeclaration","scope":6497,"src":"1788:23:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":5620,"name":"string","nodeType":"ElementaryTypeName","src":"1788:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":true,"id":5624,"mutability":"constant","name":"_INTERFACE_ID_ERC721","nodeType":"VariableDeclaration","scope":6497,"src":"2687:57:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5622,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2687:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783830616335386364","id":5623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2734:10:46","typeDescriptions":{"typeIdentifier":"t_rational_2158778573_by_1","typeString":"int_const 2158778573"},"value":"0x80ac58cd"},"visibility":"private"},{"constant":true,"id":5627,"mutability":"constant","name":"_INTERFACE_ID_ERC721_METADATA","nodeType":"VariableDeclaration","scope":6497,"src":"3010:66:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5625,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3010:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783562356531333966","id":5626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3066:10:46","typeDescriptions":{"typeIdentifier":"t_rational_1532892063_by_1","typeString":"int_const 1532892063"},"value":"0x5b5e139f"},"visibility":"private"},{"constant":true,"id":5630,"mutability":"constant","name":"_INTERFACE_ID_ERC721_ENUMERABLE","nodeType":"VariableDeclaration","scope":6497,"src":"3381:68:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5628,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3381:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783738306539643633","id":5629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3439:10:46","typeDescriptions":{"typeIdentifier":"t_rational_2014223715_by_1","typeString":"int_const 2014223715"},"value":"0x780e9d63"},"visibility":"private"},{"body":{"id":5658,"nodeType":"Block","src":"3626:305:46","statements":[{"expression":{"id":5640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5638,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"3636:5:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5639,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5633,"src":"3644:5:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3636:13:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":5641,"nodeType":"ExpressionStatement","src":"3636:13:46"},{"expression":{"id":5644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5642,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5615,"src":"3659:7:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5643,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5635,"src":"3669:7:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3659:17:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":5645,"nodeType":"ExpressionStatement","src":"3659:17:46"},{"expression":{"arguments":[{"id":5647,"name":"_INTERFACE_ID_ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5624,"src":"3783:20:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5646,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"3764:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":5648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3764:40:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5649,"nodeType":"ExpressionStatement","src":"3764:40:46"},{"expression":{"arguments":[{"id":5651,"name":"_INTERFACE_ID_ERC721_METADATA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5627,"src":"3833:29:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5650,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"3814:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":5652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3814:49:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5653,"nodeType":"ExpressionStatement","src":"3814:49:46"},{"expression":{"arguments":[{"id":5655,"name":"_INTERFACE_ID_ERC721_ENUMERABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5630,"src":"3892:31:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5654,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"3873:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":5656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3873:51:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5657,"nodeType":"ExpressionStatement","src":"3873:51:46"}]},"documentation":{"id":5631,"nodeType":"StructuredDocumentation","src":"3456:108:46","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":5659,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":5636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5633,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":5659,"src":"3582:19:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5632,"name":"string","nodeType":"ElementaryTypeName","src":"3582:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5635,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":5659,"src":"3603:21:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5634,"name":"string","nodeType":"ElementaryTypeName","src":"3603:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3581:44:46"},"returnParameters":{"id":5637,"nodeType":"ParameterList","parameters":[],"src":"3626:0:46"},"scope":6497,"src":"3569:362:46","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[6538],"body":{"id":5684,"nodeType":"Block","src":"4071:137:46","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5669,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5662,"src":"4089:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4106:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4098:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5670,"name":"address","nodeType":"ElementaryTypeName","src":"4098:7:46","typeDescriptions":{}}},"id":5673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4098:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4089:19:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373","id":5675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4110:44:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba","typeString":"literal_string \"ERC721: balance query for the zero address\""},"value":"ERC721: balance query for the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba","typeString":"literal_string \"ERC721: balance query for the zero address\""}],"id":5668,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4081:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4081:74:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5677,"nodeType":"ExpressionStatement","src":"4081:74:46"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":5678,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"4172:13:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$7965_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":5680,"indexExpression":{"id":5679,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5662,"src":"4186:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4172:20:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":5681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":8039,"src":"4172:27:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintSet_$7965_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$7965_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer) view returns (uint256)"}},"id":5682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4172:29:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5667,"id":5683,"nodeType":"Return","src":"4165:36:46"}]},"documentation":{"id":5660,"nodeType":"StructuredDocumentation","src":"3937:48:46","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":5685,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":5664,"nodeType":"OverrideSpecifier","overrides":[],"src":"4044:8:46"},"parameters":{"id":5663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5662,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5685,"src":"4009:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5661,"name":"address","nodeType":"ElementaryTypeName","src":"4009:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4008:15:46"},"returnParameters":{"id":5667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5666,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5685,"src":"4062:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5665,"name":"uint256","nodeType":"ElementaryTypeName","src":"4062:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4061:9:46"},"scope":6497,"src":"3990:218:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6546],"body":{"id":5700,"nodeType":"Block","src":"4346:94:46","statements":[{"expression":{"arguments":[{"id":5696,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5688,"src":"4380:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":5697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4389:43:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397","typeString":"literal_string \"ERC721: owner query for nonexistent token\""},"value":"ERC721: owner query for nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397","typeString":"literal_string \"ERC721: owner query for nonexistent token\""}],"expression":{"id":5694,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"4363:12:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":5695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"get","nodeType":"MemberAccess","referencedDeclaration":7567,"src":"4363:16:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$7342_storage_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_address_$bound_to$_t_struct$_UintToAddressMap_$7342_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,string memory) view returns (address)"}},"id":5698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4363:70:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5693,"id":5699,"nodeType":"Return","src":"4356:77:46"}]},"documentation":{"id":5686,"nodeType":"StructuredDocumentation","src":"4214:46:46","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":5701,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nodeType":"FunctionDefinition","overrides":{"id":5690,"nodeType":"OverrideSpecifier","overrides":[],"src":"4319:8:46"},"parameters":{"id":5689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5688,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5701,"src":"4282:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5687,"name":"uint256","nodeType":"ElementaryTypeName","src":"4282:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4281:17:46"},"returnParameters":{"id":5693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5692,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5701,"src":"4337:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5691,"name":"address","nodeType":"ElementaryTypeName","src":"4337:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4336:9:46"},"scope":6497,"src":"4265:175:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6656],"body":{"id":5710,"nodeType":"Block","src":"4571:29:46","statements":[{"expression":{"id":5708,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"4588:5:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":5707,"id":5709,"nodeType":"Return","src":"4581:12:46"}]},"documentation":{"id":5702,"nodeType":"StructuredDocumentation","src":"4446:51:46","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":5711,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","overrides":{"id":5704,"nodeType":"OverrideSpecifier","overrides":[],"src":"4538:8:46"},"parameters":{"id":5703,"nodeType":"ParameterList","parameters":[],"src":"4515:2:46"},"returnParameters":{"id":5707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5706,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5711,"src":"4556:13:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5705,"name":"string","nodeType":"ElementaryTypeName","src":"4556:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4555:15:46"},"scope":6497,"src":"4502:98:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6662],"body":{"id":5720,"nodeType":"Block","src":"4735:31:46","statements":[{"expression":{"id":5718,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5615,"src":"4752:7:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":5717,"id":5719,"nodeType":"Return","src":"4745:14:46"}]},"documentation":{"id":5712,"nodeType":"StructuredDocumentation","src":"4606:53:46","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":5721,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","overrides":{"id":5714,"nodeType":"OverrideSpecifier","overrides":[],"src":"4702:8:46"},"parameters":{"id":5713,"nodeType":"ParameterList","parameters":[],"src":"4679:2:46"},"returnParameters":{"id":5717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5716,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5721,"src":"4720:13:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5715,"name":"string","nodeType":"ElementaryTypeName","src":"4720:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4719:15:46"},"scope":6497,"src":"4664:102:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6670],"body":{"id":5788,"nodeType":"Block","src":"4920:688:46","statements":[{"expression":{"arguments":[{"arguments":[{"id":5732,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"4946:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5731,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6084,"src":"4938:7:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":5733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4938:16:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":5734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4956:49:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb","typeString":"literal_string \"ERC721Metadata: URI query for nonexistent token\""},"value":"ERC721Metadata: URI query for nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb","typeString":"literal_string \"ERC721Metadata: URI query for nonexistent token\""}],"id":5730,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4930:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4930:76:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5736,"nodeType":"ExpressionStatement","src":"4930:76:46"},{"assignments":[5738],"declarations":[{"constant":false,"id":5738,"mutability":"mutable","name":"_tokenURI","nodeType":"VariableDeclaration","scope":5788,"src":"5017:23:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5737,"name":"string","nodeType":"ElementaryTypeName","src":"5017:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":5742,"initialValue":{"baseExpression":{"id":5739,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5619,"src":"5043:10:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":5741,"indexExpression":{"id":5740,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"5054:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5043:19:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5017:45:46"},{"assignments":[5744],"declarations":[{"constant":false,"id":5744,"mutability":"mutable","name":"base","nodeType":"VariableDeclaration","scope":5788,"src":"5072:18:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5743,"name":"string","nodeType":"ElementaryTypeName","src":"5072:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":5747,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":5745,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5798,"src":"5093:7:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":5746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5093:9:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"5072:30:46"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5750,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"5181:4:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5175:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5748,"name":"bytes","nodeType":"ElementaryTypeName","src":"5175:5:46","typeDescriptions":{}}},"id":5751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5175:11:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5175:18:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5197:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5175:23:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5758,"nodeType":"IfStatement","src":"5171:70:46","trueBody":{"id":5757,"nodeType":"Block","src":"5200:41:46","statements":[{"expression":{"id":5755,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"5221:9:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":5729,"id":5756,"nodeType":"Return","src":"5214:16:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5761,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"5349:9:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5343:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5759,"name":"bytes","nodeType":"ElementaryTypeName","src":"5343:5:46","typeDescriptions":{}}},"id":5762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5343:16:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5343:23:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5369:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5343:27:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5776,"nodeType":"IfStatement","src":"5339:106:46","trueBody":{"id":5775,"nodeType":"Block","src":"5372:73:46","statements":[{"expression":{"arguments":[{"arguments":[{"id":5770,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"5417:4:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5771,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"5423:9:46","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"}],"expression":{"id":5768,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5400:3:46","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5400:16:46","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5400:33:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5393:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":5766,"name":"string","nodeType":"ElementaryTypeName","src":"5393:6:46","typeDescriptions":{}}},"id":5773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5393:41:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":5729,"id":5774,"nodeType":"Return","src":"5386:48:46"}]}},{"expression":{"arguments":[{"arguments":[{"id":5781,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"5575:4:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5782,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"5581:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":8146,"src":"5581:16:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":5784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5581:18:46","tryCall":false,"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"}],"expression":{"id":5779,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5558:3:46","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5558:16:46","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5558:42:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5551:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":5777,"name":"string","nodeType":"ElementaryTypeName","src":"5551:6:46","typeDescriptions":{}}},"id":5786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5551:50:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":5729,"id":5787,"nodeType":"Return","src":"5544:57:46"}]},"documentation":{"id":5722,"nodeType":"StructuredDocumentation","src":"4772:55:46","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":5789,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","overrides":{"id":5726,"nodeType":"OverrideSpecifier","overrides":[],"src":"4887:8:46"},"parameters":{"id":5725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5724,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5789,"src":"4850:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5723,"name":"uint256","nodeType":"ElementaryTypeName","src":"4850:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4849:17:46"},"returnParameters":{"id":5729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5728,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5789,"src":"4905:13:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5727,"name":"string","nodeType":"ElementaryTypeName","src":"4905:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4904:15:46"},"scope":6497,"src":"4832:776:46","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":5797,"nodeType":"Block","src":"5903:32:46","statements":[{"expression":{"id":5795,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"5920:8:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":5794,"id":5796,"nodeType":"Return","src":"5913:15:46"}]},"documentation":{"id":5790,"nodeType":"StructuredDocumentation","src":"5614:221:46","text":" @dev Returns the base URI set via {_setBaseURI}. This will be\n automatically added as a prefix in {tokenURI} to each token's URI, or\n to the token ID if no specific URI is set for that token ID."},"functionSelector":"6c0360eb","id":5798,"implemented":true,"kind":"function","modifiers":[],"name":"baseURI","nodeType":"FunctionDefinition","parameters":{"id":5791,"nodeType":"ParameterList","parameters":[],"src":"5856:2:46"},"returnParameters":{"id":5794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5793,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5798,"src":"5888:13:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5792,"name":"string","nodeType":"ElementaryTypeName","src":"5888:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5887:15:46"},"scope":6497,"src":"5840:95:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6635],"body":{"id":5816,"nodeType":"Block","src":"6120:54:46","statements":[{"expression":{"arguments":[{"id":5813,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5803,"src":"6161:5:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":5809,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"6137:13:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$7965_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":5811,"indexExpression":{"id":5810,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"6151:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6137:20:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":5812,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":8059,"src":"6137:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintSet_$7965_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$7965_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) view returns (uint256)"}},"id":5814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6137:30:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5808,"id":5815,"nodeType":"Return","src":"6130:37:46"}]},"documentation":{"id":5799,"nodeType":"StructuredDocumentation","src":"5941:68:46","text":" @dev See {IERC721Enumerable-tokenOfOwnerByIndex}."},"functionSelector":"2f745c59","id":5817,"implemented":true,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nodeType":"FunctionDefinition","overrides":{"id":5805,"nodeType":"OverrideSpecifier","overrides":[],"src":"6093:8:46"},"parameters":{"id":5804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5801,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5817,"src":"6043:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5800,"name":"address","nodeType":"ElementaryTypeName","src":"6043:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5803,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":5817,"src":"6058:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5802,"name":"uint256","nodeType":"ElementaryTypeName","src":"6058:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6042:30:46"},"returnParameters":{"id":5808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5807,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5817,"src":"6111:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5806,"name":"uint256","nodeType":"ElementaryTypeName","src":"6111:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6110:9:46"},"scope":6497,"src":"6014:160:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6625],"body":{"id":5828,"nodeType":"Block","src":"6315:138:46","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5824,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"6425:12:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":5825,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":7428,"src":"6425:19:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$7342_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintToAddressMap_$7342_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer) view returns (uint256)"}},"id":5826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6425:21:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5823,"id":5827,"nodeType":"Return","src":"6418:28:46"}]},"documentation":{"id":5818,"nodeType":"StructuredDocumentation","src":"6180:60:46","text":" @dev See {IERC721Enumerable-totalSupply}."},"functionSelector":"18160ddd","id":5829,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":5820,"nodeType":"OverrideSpecifier","overrides":[],"src":"6288:8:46"},"parameters":{"id":5819,"nodeType":"ParameterList","parameters":[],"src":"6265:2:46"},"returnParameters":{"id":5823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5822,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5829,"src":"6306:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5821,"name":"uint256","nodeType":"ElementaryTypeName","src":"6306:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6305:9:46"},"scope":6497,"src":"6245:208:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6643],"body":{"id":5847,"nodeType":"Block","src":"6609:85:46","statements":[{"assignments":[5839,null],"declarations":[{"constant":false,"id":5839,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5847,"src":"6620:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5838,"name":"uint256","nodeType":"ElementaryTypeName","src":"6620:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":5844,"initialValue":{"arguments":[{"id":5842,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5832,"src":"6657:5:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5840,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"6641:12:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":5841,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":7467,"src":"6641:15:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$7342_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_address_$bound_to$_t_struct$_UintToAddressMap_$7342_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (uint256,address)"}},"id":5843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6641:22:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"nodeType":"VariableDeclarationStatement","src":"6619:44:46"},{"expression":{"id":5845,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"6680:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5837,"id":5846,"nodeType":"Return","src":"6673:14:46"}]},"documentation":{"id":5830,"nodeType":"StructuredDocumentation","src":"6459:61:46","text":" @dev See {IERC721Enumerable-tokenByIndex}."},"functionSelector":"4f6ccce7","id":5848,"implemented":true,"kind":"function","modifiers":[],"name":"tokenByIndex","nodeType":"FunctionDefinition","overrides":{"id":5834,"nodeType":"OverrideSpecifier","overrides":[],"src":"6582:8:46"},"parameters":{"id":5833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5832,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":5848,"src":"6547:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5831,"name":"uint256","nodeType":"ElementaryTypeName","src":"6547:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6546:15:46"},"returnParameters":{"id":5837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5836,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5848,"src":"6600:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5835,"name":"uint256","nodeType":"ElementaryTypeName","src":"6600:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6599:9:46"},"scope":6497,"src":"6525:169:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6574],"body":{"id":5891,"nodeType":"Block","src":"6821:325:46","statements":[{"assignments":[5858],"declarations":[{"constant":false,"id":5858,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5891,"src":"6831:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5857,"name":"address","nodeType":"ElementaryTypeName","src":"6831:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5863,"initialValue":{"arguments":[{"id":5861,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5853,"src":"6862:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5859,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"6847:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$6497_$","typeString":"type(contract ERC721)"}},"id":5860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":5701,"src":"6847:14:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6847:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6831:39:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5865,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"6888:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5866,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5858,"src":"6894:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6888:11:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":5868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6901:35:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":5864,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6880:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6880:57:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5870,"nodeType":"ExpressionStatement","src":"6880:57:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5872,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"6956:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":5873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6956:12:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5874,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5858,"src":"6972:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6956:21:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":5878,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5858,"src":"7005:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5879,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"7012:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":5880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7012:12:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":5876,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"6981:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$6497_$","typeString":"type(contract ERC721)"}},"id":5877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isApprovedForAll","nodeType":"MemberAccess","referencedDeclaration":5965,"src":"6981:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":5881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6981:44:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6956:69:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c","id":5883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7039:58:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d","typeString":"literal_string \"ERC721: approve caller is not owner nor approved for all\""},"value":"ERC721: approve caller is not owner nor approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d","typeString":"literal_string \"ERC721: approve caller is not owner nor approved for all\""}],"id":5871,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6948:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6948:159:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5885,"nodeType":"ExpressionStatement","src":"6948:159:46"},{"expression":{"arguments":[{"id":5887,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"7127:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5888,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5853,"src":"7131:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5886,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6485,"src":"7118:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7118:21:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5890,"nodeType":"ExpressionStatement","src":"7118:21:46"}]},"documentation":{"id":5849,"nodeType":"StructuredDocumentation","src":"6700:46:46","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":5892,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":5855,"nodeType":"OverrideSpecifier","overrides":[],"src":"6812:8:46"},"parameters":{"id":5854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5851,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5892,"src":"6768:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5850,"name":"address","nodeType":"ElementaryTypeName","src":"6768:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5853,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5892,"src":"6780:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5852,"name":"uint256","nodeType":"ElementaryTypeName","src":"6780:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6767:29:46"},"returnParameters":{"id":5856,"nodeType":"ParameterList","parameters":[],"src":"6821:0:46"},"scope":6497,"src":"6751:395:46","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6582],"body":{"id":5912,"nodeType":"Block","src":"7292:132:46","statements":[{"expression":{"arguments":[{"arguments":[{"id":5903,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5895,"src":"7318:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5902,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6084,"src":"7310:7:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":5904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7310:16:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":5905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7328:46:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d","typeString":"literal_string \"ERC721: approved query for nonexistent token\""},"value":"ERC721: approved query for nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d","typeString":"literal_string \"ERC721: approved query for nonexistent token\""}],"id":5901,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7302:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7302:73:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5907,"nodeType":"ExpressionStatement","src":"7302:73:46"},{"expression":{"baseExpression":{"id":5908,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5605,"src":"7393:15:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":5910,"indexExpression":{"id":5909,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5895,"src":"7409:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7393:24:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5900,"id":5911,"nodeType":"Return","src":"7386:31:46"}]},"documentation":{"id":5893,"nodeType":"StructuredDocumentation","src":"7152:50:46","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":5913,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nodeType":"FunctionDefinition","overrides":{"id":5897,"nodeType":"OverrideSpecifier","overrides":[],"src":"7265:8:46"},"parameters":{"id":5896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5895,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5913,"src":"7228:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5894,"name":"uint256","nodeType":"ElementaryTypeName","src":"7228:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7227:17:46"},"returnParameters":{"id":5900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5899,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5913,"src":"7283:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5898,"name":"address","nodeType":"ElementaryTypeName","src":"7283:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7282:9:46"},"scope":6497,"src":"7207:217:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6590],"body":{"id":5946,"nodeType":"Block","src":"7575:206:46","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5923,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5916,"src":"7593:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5924,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"7605:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":5925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7605:12:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7593:24:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":5927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7619:27:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":5922,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7585:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7585:62:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5929,"nodeType":"ExpressionStatement","src":"7585:62:46"},{"expression":{"id":5937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":5930,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5611,"src":"7658:18:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":5934,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5931,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"7677:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":5932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7677:12:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7658:32:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":5935,"indexExpression":{"id":5933,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5916,"src":"7691:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7658:42:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5936,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"7703:8:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7658:53:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5938,"nodeType":"ExpressionStatement","src":"7658:53:46"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5940,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"7741:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":5941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7741:12:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":5942,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5916,"src":"7755:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5943,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"7765:8:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5939,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"7726:14:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":5944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7726:48:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5945,"nodeType":"EmitStatement","src":"7721:53:46"}]},"documentation":{"id":5914,"nodeType":"StructuredDocumentation","src":"7430:56:46","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":5947,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nodeType":"FunctionDefinition","overrides":{"id":5920,"nodeType":"OverrideSpecifier","overrides":[],"src":"7566:8:46"},"parameters":{"id":5919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5916,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":5947,"src":"7518:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5915,"name":"address","nodeType":"ElementaryTypeName","src":"7518:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5918,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":5947,"src":"7536:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5917,"name":"bool","nodeType":"ElementaryTypeName","src":"7536:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7517:33:46"},"returnParameters":{"id":5921,"nodeType":"ParameterList","parameters":[],"src":"7575:0:46"},"scope":6497,"src":"7491:290:46","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6600],"body":{"id":5964,"nodeType":"Block","src":"7950:59:46","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":5958,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5611,"src":"7967:18:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":5960,"indexExpression":{"id":5959,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5950,"src":"7986:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7967:25:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":5962,"indexExpression":{"id":5961,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5952,"src":"7993:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7967:35:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5957,"id":5963,"nodeType":"Return","src":"7960:42:46"}]},"documentation":{"id":5948,"nodeType":"StructuredDocumentation","src":"7787:55:46","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":5965,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nodeType":"FunctionDefinition","overrides":{"id":5954,"nodeType":"OverrideSpecifier","overrides":[],"src":"7926:8:46"},"parameters":{"id":5953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5950,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5965,"src":"7873:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5949,"name":"address","nodeType":"ElementaryTypeName","src":"7873:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5952,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":5965,"src":"7888:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5951,"name":"address","nodeType":"ElementaryTypeName","src":"7888:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7872:33:46"},"returnParameters":{"id":5957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5956,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5965,"src":"7944:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5955,"name":"bool","nodeType":"ElementaryTypeName","src":"7944:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7943:6:46"},"scope":6497,"src":"7847:162:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6566],"body":{"id":5991,"nodeType":"Block","src":"8160:211:46","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5978,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"8249:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":5979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8249:12:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":5980,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5972,"src":"8263:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5977,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6126,"src":"8230:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":5981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8230:41:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564","id":5982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8273:51:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2","typeString":"literal_string \"ERC721: transfer caller is not owner nor approved\""},"value":"ERC721: transfer caller is not owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2","typeString":"literal_string \"ERC721: transfer caller is not owner nor approved\""}],"id":5976,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8222:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8222:103:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5984,"nodeType":"ExpressionStatement","src":"8222:103:46"},{"expression":{"arguments":[{"id":5986,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5968,"src":"8346:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5987,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"8352:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5988,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5972,"src":"8356:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5985,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"8336:9:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8336:28:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5990,"nodeType":"ExpressionStatement","src":"8336:28:46"}]},"documentation":{"id":5966,"nodeType":"StructuredDocumentation","src":"8015:51:46","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":5992,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":5974,"nodeType":"OverrideSpecifier","overrides":[],"src":"8151:8:46"},"parameters":{"id":5973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5968,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":5992,"src":"8093:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5967,"name":"address","nodeType":"ElementaryTypeName","src":"8093:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5970,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5992,"src":"8107:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5969,"name":"address","nodeType":"ElementaryTypeName","src":"8107:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5972,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5992,"src":"8119:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5971,"name":"uint256","nodeType":"ElementaryTypeName","src":"8119:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8092:43:46"},"returnParameters":{"id":5975,"nodeType":"ParameterList","parameters":[],"src":"8160:0:46"},"scope":6497,"src":"8071:300:46","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6556],"body":{"id":6010,"nodeType":"Block","src":"8530:56:46","statements":[{"expression":{"arguments":[{"id":6004,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"8557:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6005,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"8563:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6006,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5999,"src":"8567:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":6007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8576:2:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6003,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[6011,6041],"referencedDeclaration":6041,"src":"8540:16:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":6008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8540:39:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6009,"nodeType":"ExpressionStatement","src":"8540:39:46"}]},"documentation":{"id":5993,"nodeType":"StructuredDocumentation","src":"8377:55:46","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":6011,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","overrides":{"id":6001,"nodeType":"OverrideSpecifier","overrides":[],"src":"8521:8:46"},"parameters":{"id":6000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5995,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6011,"src":"8463:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5994,"name":"address","nodeType":"ElementaryTypeName","src":"8463:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5997,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6011,"src":"8477:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5996,"name":"address","nodeType":"ElementaryTypeName","src":"8477:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5999,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6011,"src":"8489:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5998,"name":"uint256","nodeType":"ElementaryTypeName","src":"8489:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8462:43:46"},"returnParameters":{"id":6002,"nodeType":"ParameterList","parameters":[],"src":"8530:0:46"},"scope":6497,"src":"8437:149:46","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6612],"body":{"id":6040,"nodeType":"Block","src":"8765:169:46","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":6026,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"8802:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":6027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8802:12:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6028,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6018,"src":"8816:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6025,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6126,"src":"8783:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":6029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8783:41:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564","id":6030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8826:51:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2","typeString":"literal_string \"ERC721: transfer caller is not owner nor approved\""},"value":"ERC721: transfer caller is not owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2","typeString":"literal_string \"ERC721: transfer caller is not owner nor approved\""}],"id":6024,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8775:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8775:103:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6032,"nodeType":"ExpressionStatement","src":"8775:103:46"},{"expression":{"arguments":[{"id":6034,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6014,"src":"8902:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6035,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"8908:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6036,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6018,"src":"8912:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6037,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6020,"src":"8921:5:46","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"}],"id":6033,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6070,"src":"8888:13:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":6038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8888:39:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6039,"nodeType":"ExpressionStatement","src":"8888:39:46"}]},"documentation":{"id":6012,"nodeType":"StructuredDocumentation","src":"8592:55:46","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":6041,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","overrides":{"id":6022,"nodeType":"OverrideSpecifier","overrides":[],"src":"8756:8:46"},"parameters":{"id":6021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6014,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6041,"src":"8678:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6013,"name":"address","nodeType":"ElementaryTypeName","src":"8678:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6016,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6041,"src":"8692:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6015,"name":"address","nodeType":"ElementaryTypeName","src":"8692:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6018,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6041,"src":"8704:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6017,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6020,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":6041,"src":"8721:18:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6019,"name":"bytes","nodeType":"ElementaryTypeName","src":"8721:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8677:63:46"},"returnParameters":{"id":6023,"nodeType":"ParameterList","parameters":[],"src":"8765:0:46"},"scope":6497,"src":"8652:282:46","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6069,"nodeType":"Block","src":"9899:166:46","statements":[{"expression":{"arguments":[{"id":6054,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6044,"src":"9919:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6055,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6046,"src":"9925:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6056,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6048,"src":"9929:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6053,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"9909:9:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9909:28:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6058,"nodeType":"ExpressionStatement","src":"9909:28:46"},{"expression":{"arguments":[{"arguments":[{"id":6061,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6044,"src":"9978:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6062,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6046,"src":"9984:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6063,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6048,"src":"9988:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6064,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"9997:5:46","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"}],"id":6060,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6461,"src":"9955:22:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":6065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9955:48:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":6066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10005:52:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":6059,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9947:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9947:111:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6068,"nodeType":"ExpressionStatement","src":"9947:111:46"}]},"documentation":{"id":6042,"nodeType":"StructuredDocumentation","src":"8940:851:46","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `_data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":6070,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":6051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6044,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6070,"src":"9819:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6043,"name":"address","nodeType":"ElementaryTypeName","src":"9819:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6046,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6070,"src":"9833:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6045,"name":"address","nodeType":"ElementaryTypeName","src":"9833:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6048,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6070,"src":"9845:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6047,"name":"uint256","nodeType":"ElementaryTypeName","src":"9845:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6050,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":6070,"src":"9862:18:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6049,"name":"bytes","nodeType":"ElementaryTypeName","src":"9862:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9818:63:46"},"returnParameters":{"id":6052,"nodeType":"ParameterList","parameters":[],"src":"9899:0:46"},"scope":6497,"src":"9796:269:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6083,"nodeType":"Block","src":"10439:54:46","statements":[{"expression":{"arguments":[{"id":6080,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"10478:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6078,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"10456:12:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":6079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":7414,"src":"10456:21:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$7342_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$7342_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (bool)"}},"id":6081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10456:30:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6077,"id":6082,"nodeType":"Return","src":"10449:37:46"}]},"documentation":{"id":6071,"nodeType":"StructuredDocumentation","src":"10071:292:46","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":6084,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nodeType":"FunctionDefinition","parameters":{"id":6074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6073,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6084,"src":"10385:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6072,"name":"uint256","nodeType":"ElementaryTypeName","src":"10385:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10384:17:46"},"returnParameters":{"id":6077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6076,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6084,"src":"10433:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6075,"name":"bool","nodeType":"ElementaryTypeName","src":"10433:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10432:6:46"},"scope":6497,"src":"10368:125:46","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6125,"nodeType":"Block","src":"10750:252:46","statements":[{"expression":{"arguments":[{"arguments":[{"id":6096,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6089,"src":"10776:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6095,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6084,"src":"10768:7:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":6097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10768:16:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":6098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10786:46:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c","typeString":"literal_string \"ERC721: operator query for nonexistent token\""},"value":"ERC721: operator query for nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c","typeString":"literal_string \"ERC721: operator query for nonexistent token\""}],"id":6094,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10760:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10760:73:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6100,"nodeType":"ExpressionStatement","src":"10760:73:46"},{"assignments":[6102],"declarations":[{"constant":false,"id":6102,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6125,"src":"10843:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6101,"name":"address","nodeType":"ElementaryTypeName","src":"10843:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6107,"initialValue":{"arguments":[{"id":6105,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6089,"src":"10874:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6103,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"10859:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$6497_$","typeString":"type(contract ERC721)"}},"id":6104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":5701,"src":"10859:14:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":6106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10859:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10843:39:46"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6108,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6087,"src":"10900:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6109,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6102,"src":"10911:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10900:16:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6112,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6089,"src":"10932:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6111,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5913,"src":"10920:11:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":6113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10920:20:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6114,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6087,"src":"10944:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10920:31:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10900:51:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":6119,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6102,"src":"10979:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6120,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6087,"src":"10986:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6117,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"10955:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$6497_$","typeString":"type(contract ERC721)"}},"id":6118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isApprovedForAll","nodeType":"MemberAccess","referencedDeclaration":5965,"src":"10955:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":6121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10955:39:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10900:94:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6123,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10899:96:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6093,"id":6124,"nodeType":"Return","src":"10892:103:46"}]},"documentation":{"id":6085,"nodeType":"StructuredDocumentation","src":"10499:147:46","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":6126,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nodeType":"FunctionDefinition","parameters":{"id":6090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6087,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6126,"src":"10679:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6086,"name":"address","nodeType":"ElementaryTypeName","src":"10679:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6089,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6126,"src":"10696:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6088,"name":"uint256","nodeType":"ElementaryTypeName","src":"10696:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10678:34:46"},"returnParameters":{"id":6093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6092,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6126,"src":"10744:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6091,"name":"bool","nodeType":"ElementaryTypeName","src":"10744:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10743:6:46"},"scope":6497,"src":"10651:351:46","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6140,"nodeType":"Block","src":"11398:43:46","statements":[{"expression":{"arguments":[{"id":6135,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6129,"src":"11418:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6136,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6131,"src":"11422:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":6137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11431:2:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6134,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[6141,6170],"referencedDeclaration":6170,"src":"11408:9:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":6138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11408:26:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6139,"nodeType":"ExpressionStatement","src":"11408:26:46"}]},"documentation":{"id":6127,"nodeType":"StructuredDocumentation","src":"11008:320:46","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\nd*\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":6141,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nodeType":"FunctionDefinition","parameters":{"id":6132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6129,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6141,"src":"11352:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6128,"name":"address","nodeType":"ElementaryTypeName","src":"11352:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6131,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6141,"src":"11364:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6130,"name":"uint256","nodeType":"ElementaryTypeName","src":"11364:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11351:29:46"},"returnParameters":{"id":6133,"nodeType":"ParameterList","parameters":[],"src":"11398:0:46"},"scope":6497,"src":"11333:108:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6169,"nodeType":"Block","src":"11747:162:46","statements":[{"expression":{"arguments":[{"id":6152,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6144,"src":"11763:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6153,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6146,"src":"11767:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6151,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6229,"src":"11757:5:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11757:18:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6155,"nodeType":"ExpressionStatement","src":"11757:18:46"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":6160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11824:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11816:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6158,"name":"address","nodeType":"ElementaryTypeName","src":"11816:7:46","typeDescriptions":{}}},"id":6161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11816:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6162,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6144,"src":"11828:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6163,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6146,"src":"11832:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6164,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6148,"src":"11841:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6157,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6461,"src":"11793:22:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":6165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11793:54:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":6166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11849:52:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":6156,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11785:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11785:117:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6168,"nodeType":"ExpressionStatement","src":"11785:117:46"}]},"documentation":{"id":6142,"nodeType":"StructuredDocumentation","src":"11447:210:46","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":6170,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nodeType":"FunctionDefinition","parameters":{"id":6149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6144,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6170,"src":"11681:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6143,"name":"address","nodeType":"ElementaryTypeName","src":"11681:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6146,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6170,"src":"11693:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6145,"name":"uint256","nodeType":"ElementaryTypeName","src":"11693:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6148,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":6170,"src":"11710:18:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6147,"name":"bytes","nodeType":"ElementaryTypeName","src":"11710:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11680:49:46"},"returnParameters":{"id":6150,"nodeType":"ParameterList","parameters":[],"src":"11747:0:46"},"scope":6497,"src":"11662:247:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6228,"nodeType":"Block","src":"12292:332:46","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6179,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"12310:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12324:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12316:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6180,"name":"address","nodeType":"ElementaryTypeName","src":"12316:7:46","typeDescriptions":{}}},"id":6183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12316:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"12310:16:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":6185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12328:34:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":6178,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12302:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12302:61:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6187,"nodeType":"ExpressionStatement","src":"12302:61:46"},{"expression":{"arguments":[{"id":6192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12381:17:46","subExpression":{"arguments":[{"id":6190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6175,"src":"12390:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6189,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6084,"src":"12382:7:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":6191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12382:16:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":6193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12400:30:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":6188,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12373:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12373:58:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6195,"nodeType":"ExpressionStatement","src":"12373:58:46"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":6199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12471:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12463:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6197,"name":"address","nodeType":"ElementaryTypeName","src":"12463:7:46","typeDescriptions":{}}},"id":6200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12463:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6201,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"12475:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6202,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6175,"src":"12479:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6196,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6496,"src":"12442:20:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12442:45:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6204,"nodeType":"ExpressionStatement","src":"12442:45:46"},{"expression":{"arguments":[{"id":6209,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6175,"src":"12520:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6205,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"12498:13:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$7965_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":6207,"indexExpression":{"id":6206,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"12512:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12498:17:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":6208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7985,"src":"12498:21:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$7965_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$7965_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":6210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12498:30:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6211,"nodeType":"ExpressionStatement","src":"12498:30:46"},{"expression":{"arguments":[{"id":6215,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6175,"src":"12556:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6216,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"12565:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6212,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"12539:12:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":6214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"set","nodeType":"MemberAccess","referencedDeclaration":7374,"src":"12539:16:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$7342_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$7342_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)"}},"id":6217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12539:29:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6218,"nodeType":"ExpressionStatement","src":"12539:29:46"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":6222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12601:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12593:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6220,"name":"address","nodeType":"ElementaryTypeName","src":"12593:7:46","typeDescriptions":{}}},"id":6223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12593:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6224,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"12605:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6225,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6175,"src":"12609:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6219,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6512,"src":"12584:8:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12584:33:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6227,"nodeType":"EmitStatement","src":"12579:38:46"}]},"documentation":{"id":6171,"nodeType":"StructuredDocumentation","src":"11915:311:46","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":6229,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":6176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6173,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6229,"src":"12246:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6172,"name":"address","nodeType":"ElementaryTypeName","src":"12246:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6175,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6229,"src":"12258:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6174,"name":"uint256","nodeType":"ElementaryTypeName","src":"12258:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12245:29:46"},"returnParameters":{"id":6177,"nodeType":"ParameterList","parameters":[],"src":"12292:0:46"},"scope":6497,"src":"12231:393:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6297,"nodeType":"Block","src":"12890:478:46","statements":[{"assignments":[6236],"declarations":[{"constant":false,"id":6236,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6297,"src":"12900:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6235,"name":"address","nodeType":"ElementaryTypeName","src":"12900:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6241,"initialValue":{"arguments":[{"id":6239,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"12931:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6237,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"12916:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$6497_$","typeString":"type(contract ERC721)"}},"id":6238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":5701,"src":"12916:14:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":6240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12916:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12900:39:46"},{"expression":{"arguments":[{"id":6243,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"12989:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13004:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12996:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6244,"name":"address","nodeType":"ElementaryTypeName","src":"12996:7:46","typeDescriptions":{}}},"id":6247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12996:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6248,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"13008:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6242,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6496,"src":"12968:20:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12968:48:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6250,"nodeType":"ExpressionStatement","src":"12968:48:46"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":6254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13071:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13063:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6252,"name":"address","nodeType":"ElementaryTypeName","src":"13063:7:46","typeDescriptions":{}}},"id":6255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13063:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6256,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"13075:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6251,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6485,"src":"13054:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13054:29:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6258,"nodeType":"ExpressionStatement","src":"13054:29:46"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"baseExpression":{"id":6261,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5619,"src":"13139:10:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":6263,"indexExpression":{"id":6262,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"13150:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13139:19:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"id":6260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13133:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":6259,"name":"bytes","nodeType":"ElementaryTypeName","src":"13133:5:46","typeDescriptions":{}}},"id":6264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13133:26:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}},"id":6265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13133:33:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13170:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13133:38:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6274,"nodeType":"IfStatement","src":"13129:95:46","trueBody":{"id":6273,"nodeType":"Block","src":"13173:51:46","statements":[{"expression":{"id":6271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13187:26:46","subExpression":{"baseExpression":{"id":6268,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5619,"src":"13194:10:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":6270,"indexExpression":{"id":6269,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"13205:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13194:19:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6272,"nodeType":"ExpressionStatement","src":"13187:26:46"}]}},{"expression":{"arguments":[{"id":6279,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"13262:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6275,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"13234:13:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$7965_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":6277,"indexExpression":{"id":6276,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"13248:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13234:20:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":6278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":8005,"src":"13234:27:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$7965_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$7965_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":6280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13234:36:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6281,"nodeType":"ExpressionStatement","src":"13234:36:46"},{"expression":{"arguments":[{"id":6285,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"13301:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6282,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"13281:12:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":6284,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":7394,"src":"13281:19:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$7342_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$7342_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) returns (bool)"}},"id":6286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13281:28:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6287,"nodeType":"ExpressionStatement","src":"13281:28:46"},{"eventCall":{"arguments":[{"id":6289,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"13334:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13349:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13341:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6290,"name":"address","nodeType":"ElementaryTypeName","src":"13341:7:46","typeDescriptions":{}}},"id":6293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13341:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6294,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"13353:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6288,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6512,"src":"13325:8:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13325:36:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6296,"nodeType":"EmitStatement","src":"13320:41:46"}]},"documentation":{"id":6230,"nodeType":"StructuredDocumentation","src":"12630:206:46","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":6298,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":6233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6232,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6298,"src":"12856:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6231,"name":"uint256","nodeType":"ElementaryTypeName","src":"12856:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12855:17:46"},"returnParameters":{"id":6234,"nodeType":"ParameterList","parameters":[],"src":"12890:0:46"},"scope":6497,"src":"12841:527:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6369,"nodeType":"Block","src":"13771:505:46","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6311,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"13804:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6309,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"13789:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$6497_$","typeString":"type(contract ERC721)"}},"id":6310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":5701,"src":"13789:14:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":6312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13789:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6313,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6301,"src":"13816:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13789:31:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e","id":6315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13822:43:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950","typeString":"literal_string \"ERC721: transfer of token that is not own\""},"value":"ERC721: transfer of token that is not own"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950","typeString":"literal_string \"ERC721: transfer of token that is not own\""}],"id":6308,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13781:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13781:85:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6317,"nodeType":"ExpressionStatement","src":"13781:85:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6319,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"13902:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13916:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13908:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6320,"name":"address","nodeType":"ElementaryTypeName","src":"13908:7:46","typeDescriptions":{}}},"id":6323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13908:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"13902:16:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":6325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13920:38:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":6318,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13894:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13894:65:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6327,"nodeType":"ExpressionStatement","src":"13894:65:46"},{"expression":{"arguments":[{"id":6329,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6301,"src":"13991:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6330,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"13997:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6331,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"14001:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6328,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6496,"src":"13970:20:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13970:39:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6333,"nodeType":"ExpressionStatement","src":"13970:39:46"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":6337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14088:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14080:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6335,"name":"address","nodeType":"ElementaryTypeName","src":"14080:7:46","typeDescriptions":{}}},"id":6338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14080:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6339,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"14092:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6334,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6485,"src":"14071:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14071:29:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6341,"nodeType":"ExpressionStatement","src":"14071:29:46"},{"expression":{"arguments":[{"id":6346,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"14138:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6342,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"14111:13:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$7965_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":6344,"indexExpression":{"id":6343,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6301,"src":"14125:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14111:19:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":6345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":8005,"src":"14111:26:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$7965_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$7965_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":6347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14111:35:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6348,"nodeType":"ExpressionStatement","src":"14111:35:46"},{"expression":{"arguments":[{"id":6353,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"14178:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6349,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"14156:13:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$7965_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":6351,"indexExpression":{"id":6350,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"14170:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14156:17:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":6352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7985,"src":"14156:21:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$7965_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$7965_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":6354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14156:30:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6355,"nodeType":"ExpressionStatement","src":"14156:30:46"},{"expression":{"arguments":[{"id":6359,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"14214:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6360,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"14223:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6356,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"14197:12:46","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":6358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"set","nodeType":"MemberAccess","referencedDeclaration":7374,"src":"14197:16:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$7342_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$7342_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)"}},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14197:29:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6362,"nodeType":"ExpressionStatement","src":"14197:29:46"},{"eventCall":{"arguments":[{"id":6364,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6301,"src":"14251:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6365,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"14257:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6366,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"14261:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6363,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6512,"src":"14242:8:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14242:27:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6368,"nodeType":"EmitStatement","src":"14237:32:46"}]},"documentation":{"id":6299,"nodeType":"StructuredDocumentation","src":"13374:313:46","text":" @dev Transfers `tokenId` from `from` to `to`.\n  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":6370,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":6306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6301,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6370,"src":"13711:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6300,"name":"address","nodeType":"ElementaryTypeName","src":"13711:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6303,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6370,"src":"13725:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6302,"name":"address","nodeType":"ElementaryTypeName","src":"13725:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6305,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6370,"src":"13737:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6304,"name":"uint256","nodeType":"ElementaryTypeName","src":"13737:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13710:43:46"},"returnParameters":{"id":6307,"nodeType":"ParameterList","parameters":[],"src":"13771:0:46"},"scope":6497,"src":"13692:584:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6391,"nodeType":"Block","src":"14504:131:46","statements":[{"expression":{"arguments":[{"arguments":[{"id":6380,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6373,"src":"14530:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6379,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6084,"src":"14522:7:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":6381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14522:16:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e","id":6382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14540:46:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_94be4a260caaeac1b145f03ffa2e70bc612b64982d04f24073aaf3a5f9009978","typeString":"literal_string \"ERC721Metadata: URI set of nonexistent token\""},"value":"ERC721Metadata: URI set of nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_94be4a260caaeac1b145f03ffa2e70bc612b64982d04f24073aaf3a5f9009978","typeString":"literal_string \"ERC721Metadata: URI set of nonexistent token\""}],"id":6378,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14514:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14514:73:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6384,"nodeType":"ExpressionStatement","src":"14514:73:46"},{"expression":{"id":6389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6385,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5619,"src":"14597:10:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":6387,"indexExpression":{"id":6386,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6373,"src":"14608:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14597:19:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6388,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6375,"src":"14619:9:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"14597:31:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6390,"nodeType":"ExpressionStatement","src":"14597:31:46"}]},"documentation":{"id":6371,"nodeType":"StructuredDocumentation","src":"14282:136:46","text":" @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":6392,"implemented":true,"kind":"function","modifiers":[],"name":"_setTokenURI","nodeType":"FunctionDefinition","parameters":{"id":6376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6373,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6392,"src":"14445:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6372,"name":"uint256","nodeType":"ElementaryTypeName","src":"14445:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6375,"mutability":"mutable","name":"_tokenURI","nodeType":"VariableDeclaration","scope":6392,"src":"14462:23:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6374,"name":"string","nodeType":"ElementaryTypeName","src":"14462:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14444:42:46"},"returnParameters":{"id":6377,"nodeType":"ParameterList","parameters":[],"src":"14504:0:46"},"scope":6497,"src":"14423:212:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6402,"nodeType":"Block","src":"14920:36:46","statements":[{"expression":{"id":6400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6398,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"14930:8:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6399,"name":"baseURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6395,"src":"14941:8:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"14930:19:46","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6401,"nodeType":"ExpressionStatement","src":"14930:19:46"}]},"documentation":{"id":6393,"nodeType":"StructuredDocumentation","src":"14641:212:46","text":" @dev Internal function to set the base URI for all token IDs. It is\n automatically added as a prefix to the value returned in {tokenURI},\n or to the token ID if {tokenURI} is empty."},"id":6403,"implemented":true,"kind":"function","modifiers":[],"name":"_setBaseURI","nodeType":"FunctionDefinition","parameters":{"id":6396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6395,"mutability":"mutable","name":"baseURI_","nodeType":"VariableDeclaration","scope":6403,"src":"14879:22:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6394,"name":"string","nodeType":"ElementaryTypeName","src":"14879:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14878:24:46"},"returnParameters":{"id":6397,"nodeType":"ParameterList","parameters":[],"src":"14920:0:46"},"scope":6497,"src":"14858:98:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6460,"nodeType":"Block","src":"15639:459:46","statements":[{"condition":{"id":6420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15653:16:46","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6417,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"15654:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":6709,"src":"15654:13:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":6419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15654:15:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6424,"nodeType":"IfStatement","src":"15649:58:46","trueBody":{"id":6423,"nodeType":"Block","src":"15671:36:46","statements":[{"expression":{"hexValue":"74727565","id":6421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15692:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6416,"id":6422,"nodeType":"Return","src":"15685:11:46"}]}},{"assignments":[6426],"declarations":[{"constant":false,"id":6426,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6460,"src":"15716:23:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6425,"name":"bytes","nodeType":"ElementaryTypeName","src":"15716:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6444,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"arguments":[{"id":6432,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"15810:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6431,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6689,"src":"15794:15:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$6689_$","typeString":"type(contract IERC721Receiver)"}},"id":6433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15794:19:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$6689","typeString":"contract IERC721Receiver"}},"id":6434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":6688,"src":"15794:36:46","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":6435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"15794:45:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6436,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"15853:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":6437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15853:12:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6438,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"15879:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6439,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"15897:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6440,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6412,"src":"15918:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6429,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15758:3:46","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"15758:22:46","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":6441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15758:175:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":6442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15935:52:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"expression":{"id":6427,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"15742:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":6780,"src":"15742:15:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":6443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15742:246:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"15716:272:46"},{"assignments":[6446],"declarations":[{"constant":false,"id":6446,"mutability":"mutable","name":"retval","nodeType":"VariableDeclaration","scope":6460,"src":"15998:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6445,"name":"bytes4","nodeType":"ElementaryTypeName","src":"15998:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":6454,"initialValue":{"arguments":[{"id":6449,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6426,"src":"16025:10:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":6451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16038:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":6450,"name":"bytes4","nodeType":"ElementaryTypeName","src":"16038:6:46","typeDescriptions":{}}}],"id":6452,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16037:8:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"}],"expression":{"id":6447,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16014:3:46","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"16014:10:46","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":6453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16014:32:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"15998:48:46"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6455,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"16064:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6456,"name":"_ERC721_RECEIVED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5595,"src":"16074:16:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"16064:26:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6458,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16063:28:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6416,"id":6459,"nodeType":"Return","src":"16056:35:46"}]},"documentation":{"id":6404,"nodeType":"StructuredDocumentation","src":"14962:542:46","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param _data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":6461,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nodeType":"FunctionDefinition","parameters":{"id":6413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6406,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6461,"src":"15541:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6405,"name":"address","nodeType":"ElementaryTypeName","src":"15541:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6408,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6461,"src":"15555:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6407,"name":"address","nodeType":"ElementaryTypeName","src":"15555:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6410,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6461,"src":"15567:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6409,"name":"uint256","nodeType":"ElementaryTypeName","src":"15567:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6412,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":6461,"src":"15584:18:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6411,"name":"bytes","nodeType":"ElementaryTypeName","src":"15584:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15540:63:46"},"returnParameters":{"id":6416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6415,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6461,"src":"15629:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6414,"name":"bool","nodeType":"ElementaryTypeName","src":"15629:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15628:6:46"},"scope":6497,"src":"15509:589:46","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6484,"nodeType":"Block","src":"16274:125:46","statements":[{"expression":{"id":6473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6469,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5605,"src":"16284:15:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":6471,"indexExpression":{"id":6470,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6466,"src":"16300:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16284:24:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6472,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"16311:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16284:29:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6474,"nodeType":"ExpressionStatement","src":"16284:29:46"},{"eventCall":{"arguments":[{"arguments":[{"id":6478,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6466,"src":"16352:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6476,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"16337:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$6497_$","typeString":"type(contract ERC721)"}},"id":6477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":5701,"src":"16337:14:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":6479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16337:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6480,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"16362:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6481,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6466,"src":"16366:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6475,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6521,"src":"16328:8:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16328:46:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6483,"nodeType":"EmitStatement","src":"16323:51:46"}]},"documentation":{"id":6462,"nodeType":"StructuredDocumentation","src":"16104:101:46","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":6485,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":6467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6464,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6485,"src":"16228:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6463,"name":"address","nodeType":"ElementaryTypeName","src":"16228:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6466,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6485,"src":"16240:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6465,"name":"uint256","nodeType":"ElementaryTypeName","src":"16240:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16227:29:46"},"returnParameters":{"id":6468,"nodeType":"ParameterList","parameters":[],"src":"16274:0:46"},"scope":6497,"src":"16210:189:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6495,"nodeType":"Block","src":"17085:3:46","statements":[]},"documentation":{"id":6486,"nodeType":"StructuredDocumentation","src":"16405:585:46","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":6496,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":6493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6488,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6496,"src":"17025:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6487,"name":"address","nodeType":"ElementaryTypeName","src":"17025:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6490,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6496,"src":"17039:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6489,"name":"address","nodeType":"ElementaryTypeName","src":"17039:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6492,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6496,"src":"17051:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6491,"name":"uint256","nodeType":"ElementaryTypeName","src":"17051:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17024:43:46"},"returnParameters":{"id":6494,"nodeType":"ParameterList","parameters":[],"src":"17085:0:46"},"scope":6497,"src":"16995:93:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":6498,"src":"563:16527:46"}],"src":"33:17058:46"},"id":46},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[5120],"IERC721":[6613]},"id":6614,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6499,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:47"},{"absolutePath":"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol","file":"../../introspection/IERC165.sol","id":6500,"nodeType":"ImportDirective","scope":6614,"sourceUnit":5121,"src":"58:41:47","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6502,"name":"IERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":5120,"src":"190:7:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC165_$5120","typeString":"contract IERC165"}},"id":6503,"nodeType":"InheritanceSpecifier","src":"190:7:47"}],"contractDependencies":[5120],"contractKind":"interface","documentation":{"id":6501,"nodeType":"StructuredDocumentation","src":"101:67:47","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":6613,"linearizedBaseContracts":[6613,5120],"name":"IERC721","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":6504,"nodeType":"StructuredDocumentation","src":"204:88:47","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"id":6512,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":6511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6506,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6512,"src":"312:20:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6505,"name":"address","nodeType":"ElementaryTypeName","src":"312:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6508,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6512,"src":"334:18:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6507,"name":"address","nodeType":"ElementaryTypeName","src":"334:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6510,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6512,"src":"354:23:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6509,"name":"uint256","nodeType":"ElementaryTypeName","src":"354:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"311:67:47"},"src":"297:82:47"},{"anonymous":false,"documentation":{"id":6513,"nodeType":"StructuredDocumentation","src":"385:94:47","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"id":6521,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":6520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6515,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6521,"src":"499:21:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6514,"name":"address","nodeType":"ElementaryTypeName","src":"499:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6517,"indexed":true,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":6521,"src":"522:24:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6516,"name":"address","nodeType":"ElementaryTypeName","src":"522:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6519,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6521,"src":"548:23:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6518,"name":"uint256","nodeType":"ElementaryTypeName","src":"548:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"498:74:47"},"src":"484:89:47"},{"anonymous":false,"documentation":{"id":6522,"nodeType":"StructuredDocumentation","src":"579:117:47","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"id":6530,"name":"ApprovalForAll","nodeType":"EventDefinition","parameters":{"id":6529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6524,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6530,"src":"722:21:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6523,"name":"address","nodeType":"ElementaryTypeName","src":"722:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6526,"indexed":true,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":6530,"src":"745:24:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6525,"name":"address","nodeType":"ElementaryTypeName","src":"745:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6528,"indexed":false,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":6530,"src":"771:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6527,"name":"bool","nodeType":"ElementaryTypeName","src":"771:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"721:64:47"},"src":"701:85:47"},{"documentation":{"id":6531,"nodeType":"StructuredDocumentation","src":"792:76:47","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":6538,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":6534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6533,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6538,"src":"892:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6532,"name":"address","nodeType":"ElementaryTypeName","src":"892:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"891:15:47"},"returnParameters":{"id":6537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6536,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":6538,"src":"930:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6535,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"929:17:47"},"scope":6613,"src":"873:74:47","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6539,"nodeType":"StructuredDocumentation","src":"953:131:47","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":6546,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nodeType":"FunctionDefinition","parameters":{"id":6542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6541,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6546,"src":"1106:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6540,"name":"uint256","nodeType":"ElementaryTypeName","src":"1106:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1105:17:47"},"returnParameters":{"id":6545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6544,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6546,"src":"1146:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6543,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1145:15:47"},"scope":6613,"src":"1089:72:47","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6547,"nodeType":"StructuredDocumentation","src":"1167:690:47","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":6556,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":6554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6549,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6556,"src":"1888:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6548,"name":"address","nodeType":"ElementaryTypeName","src":"1888:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6551,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6556,"src":"1902:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6550,"name":"address","nodeType":"ElementaryTypeName","src":"1902:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6553,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6556,"src":"1914:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6552,"name":"uint256","nodeType":"ElementaryTypeName","src":"1914:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1887:43:47"},"returnParameters":{"id":6555,"nodeType":"ParameterList","parameters":[],"src":"1939:0:47"},"scope":6613,"src":"1862:78:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6557,"nodeType":"StructuredDocumentation","src":"1946:504:47","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":6566,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":6564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6559,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6566,"src":"2477:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6558,"name":"address","nodeType":"ElementaryTypeName","src":"2477:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6561,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6566,"src":"2491:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6560,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6563,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6566,"src":"2503:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6562,"name":"uint256","nodeType":"ElementaryTypeName","src":"2503:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2476:43:47"},"returnParameters":{"id":6565,"nodeType":"ParameterList","parameters":[],"src":"2528:0:47"},"scope":6613,"src":"2455:74:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6567,"nodeType":"StructuredDocumentation","src":"2535:452:47","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":6574,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":6572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6569,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6574,"src":"3009:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6568,"name":"address","nodeType":"ElementaryTypeName","src":"3009:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6571,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6574,"src":"3021:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6570,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3008:29:47"},"returnParameters":{"id":6573,"nodeType":"ParameterList","parameters":[],"src":"3046:0:47"},"scope":6613,"src":"2992:55:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6575,"nodeType":"StructuredDocumentation","src":"3053:139:47","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":6582,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nodeType":"FunctionDefinition","parameters":{"id":6578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6577,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6582,"src":"3218:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6576,"name":"uint256","nodeType":"ElementaryTypeName","src":"3218:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3217:17:47"},"returnParameters":{"id":6581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6580,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":6582,"src":"3258:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6579,"name":"address","nodeType":"ElementaryTypeName","src":"3258:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3257:18:47"},"scope":6613,"src":"3197:79:47","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6583,"nodeType":"StructuredDocumentation","src":"3282:309:47","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":6590,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nodeType":"FunctionDefinition","parameters":{"id":6588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6585,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":6590,"src":"3623:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6584,"name":"address","nodeType":"ElementaryTypeName","src":"3623:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6587,"mutability":"mutable","name":"_approved","nodeType":"VariableDeclaration","scope":6590,"src":"3641:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6586,"name":"bool","nodeType":"ElementaryTypeName","src":"3641:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3622:34:47"},"returnParameters":{"id":6589,"nodeType":"ParameterList","parameters":[],"src":"3665:0:47"},"scope":6613,"src":"3596:70:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6591,"nodeType":"StructuredDocumentation","src":"3672:138:47","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":6600,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nodeType":"FunctionDefinition","parameters":{"id":6596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6593,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6600,"src":"3841:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6592,"name":"address","nodeType":"ElementaryTypeName","src":"3841:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6595,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":6600,"src":"3856:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6594,"name":"address","nodeType":"ElementaryTypeName","src":"3856:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3840:33:47"},"returnParameters":{"id":6599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6598,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6600,"src":"3897:4:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6597,"name":"bool","nodeType":"ElementaryTypeName","src":"3897:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3896:6:47"},"scope":6613,"src":"3815:88:47","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6601,"nodeType":"StructuredDocumentation","src":"3909:568:47","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":6612,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":6610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6603,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6612,"src":"4508:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6602,"name":"address","nodeType":"ElementaryTypeName","src":"4508:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6605,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6612,"src":"4522:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6604,"name":"address","nodeType":"ElementaryTypeName","src":"4522:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6607,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6612,"src":"4534:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6606,"name":"uint256","nodeType":"ElementaryTypeName","src":"4534:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6609,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6612,"src":"4551:19:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6608,"name":"bytes","nodeType":"ElementaryTypeName","src":"4551:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4507:64:47"},"returnParameters":{"id":6611,"nodeType":"ParameterList","parameters":[],"src":"4580:0:47"},"scope":6613,"src":"4482:99:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6614,"src":"169:4414:47"}],"src":"33:4551:47"},"id":47},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol","exportedSymbols":{"IERC165":[5120],"IERC721":[6613],"IERC721Enumerable":[6644]},"id":6645,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6615,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:48"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":6616,"nodeType":"ImportDirective","scope":6645,"sourceUnit":6614,"src":"58:23:48","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6618,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":6613,"src":"251:7:48","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$6613","typeString":"contract IERC721"}},"id":6619,"nodeType":"InheritanceSpecifier","src":"251:7:48"}],"contractDependencies":[5120,6613],"contractKind":"interface","documentation":{"id":6617,"nodeType":"StructuredDocumentation","src":"83:136:48","text":" @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":6644,"linearizedBaseContracts":[6644,6613,5120],"name":"IERC721Enumerable","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6620,"nodeType":"StructuredDocumentation","src":"266:82:48","text":" @dev Returns the total amount of tokens stored by the contract."},"functionSelector":"18160ddd","id":6625,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":6621,"nodeType":"ParameterList","parameters":[],"src":"373:2:48"},"returnParameters":{"id":6624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6623,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6625,"src":"399:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6622,"name":"uint256","nodeType":"ElementaryTypeName","src":"399:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"398:9:48"},"scope":6644,"src":"353:55:48","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6626,"nodeType":"StructuredDocumentation","src":"414:171:48","text":" @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"functionSelector":"2f745c59","id":6635,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nodeType":"FunctionDefinition","parameters":{"id":6631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6628,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6635,"src":"619:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6627,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6630,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6635,"src":"634:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6629,"name":"uint256","nodeType":"ElementaryTypeName","src":"634:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"618:30:48"},"returnParameters":{"id":6634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6633,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6635,"src":"672:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6632,"name":"uint256","nodeType":"ElementaryTypeName","src":"672:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"671:17:48"},"scope":6644,"src":"590:99:48","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6636,"nodeType":"StructuredDocumentation","src":"695:164:48","text":" @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens."},"functionSelector":"4f6ccce7","id":6643,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nodeType":"FunctionDefinition","parameters":{"id":6639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6638,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6643,"src":"886:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6637,"name":"uint256","nodeType":"ElementaryTypeName","src":"886:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"885:15:48"},"returnParameters":{"id":6642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6641,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6643,"src":"924:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6640,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:9:48"},"scope":6644,"src":"864:69:48","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6645,"src":"220:715:48"}],"src":"33:903:48"},"id":48},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol","exportedSymbols":{"IERC165":[5120],"IERC721":[6613],"IERC721Metadata":[6671]},"id":6672,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6646,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:49"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":6647,"nodeType":"ImportDirective","scope":6672,"sourceUnit":6614,"src":"58:23:49","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6649,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":6613,"src":"246:7:49","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$6613","typeString":"contract IERC721"}},"id":6650,"nodeType":"InheritanceSpecifier","src":"246:7:49"}],"contractDependencies":[5120,6613],"contractKind":"interface","documentation":{"id":6648,"nodeType":"StructuredDocumentation","src":"83:133:49","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":6671,"linearizedBaseContracts":[6671,6613,5120],"name":"IERC721Metadata","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6651,"nodeType":"StructuredDocumentation","src":"261:58:49","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":6656,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":6652,"nodeType":"ParameterList","parameters":[],"src":"337:2:49"},"returnParameters":{"id":6655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6654,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6656,"src":"363:13:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6653,"name":"string","nodeType":"ElementaryTypeName","src":"363:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"362:15:49"},"scope":6671,"src":"324:54:49","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6657,"nodeType":"StructuredDocumentation","src":"384:60:49","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":6662,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":6658,"nodeType":"ParameterList","parameters":[],"src":"464:2:49"},"returnParameters":{"id":6661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6660,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6662,"src":"490:13:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6659,"name":"string","nodeType":"ElementaryTypeName","src":"490:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"489:15:49"},"scope":6671,"src":"449:56:49","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6663,"nodeType":"StructuredDocumentation","src":"511:90:49","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":6670,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","parameters":{"id":6666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6665,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6670,"src":"624:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6664,"name":"uint256","nodeType":"ElementaryTypeName","src":"624:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"623:17:49"},"returnParameters":{"id":6669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6668,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6670,"src":"664:13:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6667,"name":"string","nodeType":"ElementaryTypeName","src":"664:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"663:15:49"},"scope":6671,"src":"606:73:49","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6672,"src":"217:464:49"}],"src":"33:649:49"},"id":49},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[6689]},"id":6690,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6673,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:50"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":6674,"nodeType":"StructuredDocumentation","src":"58:152:50","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":6689,"linearizedBaseContracts":[6689],"name":"IERC721Receiver","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6675,"nodeType":"StructuredDocumentation","src":"243:485:50","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`."},"functionSelector":"150b7a02","id":6688,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nodeType":"FunctionDefinition","parameters":{"id":6684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6677,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":6688,"src":"759:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6676,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6679,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6688,"src":"777:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6678,"name":"address","nodeType":"ElementaryTypeName","src":"777:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6681,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6688,"src":"791:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6680,"name":"uint256","nodeType":"ElementaryTypeName","src":"791:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6683,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6688,"src":"808:19:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6682,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"758:70:50"},"returnParameters":{"id":6687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6686,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6688,"src":"847:6:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6685,"name":"bytes4","nodeType":"ElementaryTypeName","src":"847:6:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"846:8:50"},"scope":6689,"src":"733:122:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6690,"src":"211:646:50"}],"src":"33:825:50"},"id":50},"openzeppelin-contracts-solc-0.7/utils/Address.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Address.sol","exportedSymbols":{"Address":[6985]},"id":6986,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6691,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:51"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6692,"nodeType":"StructuredDocumentation","src":"58:67:51","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":6985,"linearizedBaseContracts":[6985],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":6708,"nodeType":"Block","src":"784:347:51","statements":[{"assignments":[6701],"declarations":[{"constant":false,"id":6701,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":6708,"src":"981:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6700,"name":"uint256","nodeType":"ElementaryTypeName","src":"981:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6702,"nodeType":"VariableDeclarationStatement","src":"981:12:51"},{"AST":{"nodeType":"YulBlock","src":"1068:32:51","statements":[{"nodeType":"YulAssignment","src":"1070:28:51","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1090:7:51"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"1078:11:51"},"nodeType":"YulFunctionCall","src":"1078:20:51"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1070:4:51"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6695,"isOffset":false,"isSlot":false,"src":"1090:7:51","valueSize":1},{"declaration":6701,"isOffset":false,"isSlot":false,"src":"1070:4:51","valueSize":1}],"id":6703,"nodeType":"InlineAssembly","src":"1059:41:51"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6704,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6701,"src":"1116:4:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1123:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1116:8:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6699,"id":6707,"nodeType":"Return","src":"1109:15:51"}]},"documentation":{"id":6693,"nodeType":"StructuredDocumentation","src":"148:565:51","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ===="},"id":6709,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":6696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6695,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6709,"src":"738:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6694,"name":"address","nodeType":"ElementaryTypeName","src":"738:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"737:17:51"},"returnParameters":{"id":6699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6698,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6709,"src":"778:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6697,"name":"bool","nodeType":"ElementaryTypeName","src":"778:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"777:6:51"},"scope":6985,"src":"718:413:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6742,"nodeType":"Block","src":"2119:320:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6720,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2145:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6985","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$6985","typeString":"library Address"}],"id":6719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2137:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6718,"name":"address","nodeType":"ElementaryTypeName","src":"2137:7:51","typeDescriptions":{}}},"id":6721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2137:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2137:21:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6723,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6714,"src":"2162:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2137:31:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":6725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2170:31:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":6717,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2129:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2129:73:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6727,"nodeType":"ExpressionStatement","src":"2129:73:51"},{"assignments":[6729,null],"declarations":[{"constant":false,"id":6729,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6742,"src":"2291:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6728,"name":"bool","nodeType":"ElementaryTypeName","src":"2291:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":6736,"initialValue":{"arguments":[{"hexValue":"","id":6734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2341:2:51","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":6730,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6712,"src":"2309:9:51","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":6731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2309:14:51","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":6733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":6732,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6714,"src":"2332:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2309:31:51","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":6735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2309:35:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2290:54:51"},{"expression":{"arguments":[{"id":6738,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6729,"src":"2362:7:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":6739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2371:60:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":6737,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2354:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2354:78:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6741,"nodeType":"ExpressionStatement","src":"2354:78:51"}]},"documentation":{"id":6710,"nodeType":"StructuredDocumentation","src":"1137:906:51","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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":6743,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":6715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6712,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6743,"src":"2067:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":6711,"name":"address","nodeType":"ElementaryTypeName","src":"2067:15:51","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":6714,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6743,"src":"2094:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6713,"name":"uint256","nodeType":"ElementaryTypeName","src":"2094:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2066:43:51"},"returnParameters":{"id":6716,"nodeType":"ParameterList","parameters":[],"src":"2119:0:51"},"scope":6985,"src":"2048:391:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6759,"nodeType":"Block","src":"3269:82:51","statements":[{"expression":{"arguments":[{"id":6754,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6746,"src":"3297:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6755,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6748,"src":"3305:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":6756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3311:32:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":6753,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[6760,6780],"referencedDeclaration":6780,"src":"3284:12:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":6757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3284:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6752,"id":6758,"nodeType":"Return","src":"3277:67:51"}]},"documentation":{"id":6744,"nodeType":"StructuredDocumentation","src":"2445:730:51","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, it is bubbled up by this\n function (like regular Solidity function calls).\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.\n _Available since v3.1._"},"id":6760,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":6749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6746,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6760,"src":"3202:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6745,"name":"address","nodeType":"ElementaryTypeName","src":"3202:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6748,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6760,"src":"3218:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6747,"name":"bytes","nodeType":"ElementaryTypeName","src":"3218:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3201:35:51"},"returnParameters":{"id":6752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6751,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6760,"src":"3255:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6750,"name":"bytes","nodeType":"ElementaryTypeName","src":"3255:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3254:14:51"},"scope":6985,"src":"3180:171:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6779,"nodeType":"Block","src":"3690:76:51","statements":[{"expression":{"arguments":[{"id":6773,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6763,"src":"3729:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6774,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6765,"src":"3737:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":6775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3743:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":6776,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6767,"src":"3746:12:51","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"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"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6772,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[6800,6850],"referencedDeclaration":6850,"src":"3707:21:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":6777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3707:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6771,"id":6778,"nodeType":"Return","src":"3700:59:51"}]},"documentation":{"id":6761,"nodeType":"StructuredDocumentation","src":"3357:211:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":6780,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":6768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6763,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6780,"src":"3595:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6762,"name":"address","nodeType":"ElementaryTypeName","src":"3595:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6765,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6780,"src":"3611:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6764,"name":"bytes","nodeType":"ElementaryTypeName","src":"3611:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6767,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":6780,"src":"3630:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6766,"name":"string","nodeType":"ElementaryTypeName","src":"3630:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3594:63:51"},"returnParameters":{"id":6771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6770,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6780,"src":"3676:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6769,"name":"bytes","nodeType":"ElementaryTypeName","src":"3676:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3675:14:51"},"scope":6985,"src":"3573:193:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6799,"nodeType":"Block","src":"4241:111:51","statements":[{"expression":{"arguments":[{"id":6793,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6783,"src":"4280:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6794,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6785,"src":"4288:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6795,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6787,"src":"4294:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":6796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4301:43:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":6792,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[6800,6850],"referencedDeclaration":6850,"src":"4258:21:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":6797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4258:87:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6791,"id":6798,"nodeType":"Return","src":"4251:94:51"}]},"documentation":{"id":6781,"nodeType":"StructuredDocumentation","src":"3772:351:51","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`.\n _Available since v3.1._"},"id":6800,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":6788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6783,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6800,"src":"4159:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6782,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6785,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6800,"src":"4175:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6784,"name":"bytes","nodeType":"ElementaryTypeName","src":"4175:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6787,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6800,"src":"4194:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6786,"name":"uint256","nodeType":"ElementaryTypeName","src":"4194:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4158:50:51"},"returnParameters":{"id":6791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6790,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6800,"src":"4227:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6789,"name":"bytes","nodeType":"ElementaryTypeName","src":"4227:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4226:14:51"},"scope":6985,"src":"4128:224:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6849,"nodeType":"Block","src":"4741:382:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6817,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4767:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6985","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$6985","typeString":"library Address"}],"id":6816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4759:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6815,"name":"address","nodeType":"ElementaryTypeName","src":"4759:7:51","typeDescriptions":{}}},"id":6818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4759:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"4759:21:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6820,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6807,"src":"4784:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4759:30:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":6822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4791:40:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":6814,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4751:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4751:81:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6824,"nodeType":"ExpressionStatement","src":"4751:81:51"},{"expression":{"arguments":[{"arguments":[{"id":6827,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6803,"src":"4861:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6826,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6709,"src":"4850:10:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":6828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4850:18:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":6829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4870:31:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":6825,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4842:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4842:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6831,"nodeType":"ExpressionStatement","src":"4842:60:51"},{"assignments":[6833,6835],"declarations":[{"constant":false,"id":6833,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6849,"src":"4973:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6832,"name":"bool","nodeType":"ElementaryTypeName","src":"4973:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6835,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6849,"src":"4987:23:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6834,"name":"bytes","nodeType":"ElementaryTypeName","src":"4987:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6842,"initialValue":{"arguments":[{"id":6840,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6805,"src":"5042:4:51","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":6836,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6803,"src":"5014:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5014:11:51","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":6839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":6838,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6807,"src":"5034:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5014:27:51","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":6841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5014:33:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4972:75:51"},{"expression":{"arguments":[{"id":6844,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6833,"src":"5082:7:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6845,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6835,"src":"5091:10:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6846,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6809,"src":"5103:12:51","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6843,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6984,"src":"5064:17:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":6847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5064:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6813,"id":6848,"nodeType":"Return","src":"5057:59:51"}]},"documentation":{"id":6801,"nodeType":"StructuredDocumentation","src":"4358:237:51","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":6850,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":6810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6803,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6850,"src":"4631:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6802,"name":"address","nodeType":"ElementaryTypeName","src":"4631:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6805,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6850,"src":"4647:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6804,"name":"bytes","nodeType":"ElementaryTypeName","src":"4647:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6807,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6850,"src":"4666:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6806,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6809,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":6850,"src":"4681:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6808,"name":"string","nodeType":"ElementaryTypeName","src":"4681:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4630:78:51"},"returnParameters":{"id":6813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6812,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6850,"src":"4727:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6811,"name":"bytes","nodeType":"ElementaryTypeName","src":"4727:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4726:14:51"},"scope":6985,"src":"4600:523:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6866,"nodeType":"Block","src":"5400:97:51","statements":[{"expression":{"arguments":[{"id":6861,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6853,"src":"5436:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6862,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6855,"src":"5444:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":6863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5450:39:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":6860,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[6867,6902],"referencedDeclaration":6902,"src":"5417:18:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":6864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5417:73:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6859,"id":6865,"nodeType":"Return","src":"5410:80:51"}]},"documentation":{"id":6851,"nodeType":"StructuredDocumentation","src":"5129:166:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":6867,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nodeType":"FunctionDefinition","parameters":{"id":6856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6853,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6867,"src":"5328:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6852,"name":"address","nodeType":"ElementaryTypeName","src":"5328:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6855,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6867,"src":"5344:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6854,"name":"bytes","nodeType":"ElementaryTypeName","src":"5344:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5327:35:51"},"returnParameters":{"id":6859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6858,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6867,"src":"5386:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6857,"name":"bytes","nodeType":"ElementaryTypeName","src":"5386:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5385:14:51"},"scope":6985,"src":"5300:197:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6901,"nodeType":"Block","src":"5809:288:51","statements":[{"expression":{"arguments":[{"arguments":[{"id":6881,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6870,"src":"5838:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6880,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6709,"src":"5827:10:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":6882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5827:18:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":6883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5847:38:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""},"value":"Address: static call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""}],"id":6879,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5819:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5819:67:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6885,"nodeType":"ExpressionStatement","src":"5819:67:51"},{"assignments":[6887,6889],"declarations":[{"constant":false,"id":6887,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6901,"src":"5957:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6886,"name":"bool","nodeType":"ElementaryTypeName","src":"5957:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6889,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6901,"src":"5971:23:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6888,"name":"bytes","nodeType":"ElementaryTypeName","src":"5971:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6894,"initialValue":{"arguments":[{"id":6892,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6872,"src":"6016:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6890,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6870,"src":"5998:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"5998:17:51","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":6893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5998:23:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5956:65:51"},{"expression":{"arguments":[{"id":6896,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6887,"src":"6056:7:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6897,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6889,"src":"6065:10:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6898,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6874,"src":"6077:12:51","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6895,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6984,"src":"6038:17:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":6899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6038:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6878,"id":6900,"nodeType":"Return","src":"6031:59:51"}]},"documentation":{"id":6868,"nodeType":"StructuredDocumentation","src":"5503:173:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":6902,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nodeType":"FunctionDefinition","parameters":{"id":6875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6870,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6902,"src":"5709:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6869,"name":"address","nodeType":"ElementaryTypeName","src":"5709:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6872,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6902,"src":"5725:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6871,"name":"bytes","nodeType":"ElementaryTypeName","src":"5725:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6874,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":6902,"src":"5744:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6873,"name":"string","nodeType":"ElementaryTypeName","src":"5744:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5708:63:51"},"returnParameters":{"id":6878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6877,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6902,"src":"5795:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6876,"name":"bytes","nodeType":"ElementaryTypeName","src":"5795:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5794:14:51"},"scope":6985,"src":"5681:416:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6918,"nodeType":"Block","src":"6373:101:51","statements":[{"expression":{"arguments":[{"id":6913,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6905,"src":"6411:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6914,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6907,"src":"6419:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":6915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6425:41:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":6912,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[6919,6954],"referencedDeclaration":6954,"src":"6390:20:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":6916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6390:77:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6911,"id":6917,"nodeType":"Return","src":"6383:84:51"}]},"documentation":{"id":6903,"nodeType":"StructuredDocumentation","src":"6103:168:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":6919,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":6908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6905,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6919,"src":"6306:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6904,"name":"address","nodeType":"ElementaryTypeName","src":"6306:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6907,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6919,"src":"6322:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6906,"name":"bytes","nodeType":"ElementaryTypeName","src":"6322:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6305:35:51"},"returnParameters":{"id":6911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6910,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6919,"src":"6359:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6909,"name":"bytes","nodeType":"ElementaryTypeName","src":"6359:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6358:14:51"},"scope":6985,"src":"6276:198:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6953,"nodeType":"Block","src":"6785:292:51","statements":[{"expression":{"arguments":[{"arguments":[{"id":6933,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6922,"src":"6814:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6932,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6709,"src":"6803:10:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":6934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6803:18:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","id":6935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:40:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""},"value":"Address: delegate call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""}],"id":6931,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6795:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6795:69:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6937,"nodeType":"ExpressionStatement","src":"6795:69:51"},{"assignments":[6939,6941],"declarations":[{"constant":false,"id":6939,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6953,"src":"6935:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6938,"name":"bool","nodeType":"ElementaryTypeName","src":"6935:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6941,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6953,"src":"6949:23:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6940,"name":"bytes","nodeType":"ElementaryTypeName","src":"6949:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6946,"initialValue":{"arguments":[{"id":6944,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6924,"src":"6996:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6942,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6922,"src":"6976:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"6976:19:51","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":6945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6976:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6934:67:51"},{"expression":{"arguments":[{"id":6948,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6939,"src":"7036:7:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6949,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6941,"src":"7045:10:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6950,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6926,"src":"7057:12:51","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6947,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6984,"src":"7018:17:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":6951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7018:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6930,"id":6952,"nodeType":"Return","src":"7011:59:51"}]},"documentation":{"id":6920,"nodeType":"StructuredDocumentation","src":"6480:175:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":6954,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":6927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6922,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6954,"src":"6690:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6921,"name":"address","nodeType":"ElementaryTypeName","src":"6690:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6924,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6954,"src":"6706:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6923,"name":"bytes","nodeType":"ElementaryTypeName","src":"6706:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6926,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":6954,"src":"6725:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6925,"name":"string","nodeType":"ElementaryTypeName","src":"6725:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6689:63:51"},"returnParameters":{"id":6930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6929,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6954,"src":"6771:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6928,"name":"bytes","nodeType":"ElementaryTypeName","src":"6771:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6770:14:51"},"scope":6985,"src":"6660:417:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6983,"nodeType":"Block","src":"7212:596:51","statements":[{"condition":{"id":6965,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6956,"src":"7226:7:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6981,"nodeType":"Block","src":"7283:519:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6969,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7367:10:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7367:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7367:21:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6979,"nodeType":"Block","src":"7739:53:51","statements":[{"expression":{"arguments":[{"id":6976,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"7764:12:51","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6975,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7757:6:51","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7757:20:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6978,"nodeType":"ExpressionStatement","src":"7757:20:51"}]},"id":6980,"nodeType":"IfStatement","src":"7363:429:51","trueBody":{"id":6974,"nodeType":"Block","src":"7390:343:51","statements":[{"AST":{"nodeType":"YulBlock","src":"7574:145:51","statements":[{"nodeType":"YulVariableDeclaration","src":"7596:40:51","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"7625:10:51"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7619:5:51"},"nodeType":"YulFunctionCall","src":"7619:17:51"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"7600:15:51","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7668:2:51","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"7672:10:51"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7664:3:51"},"nodeType":"YulFunctionCall","src":"7664:19:51"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"7685:15:51"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7657:6:51"},"nodeType":"YulFunctionCall","src":"7657:44:51"},"nodeType":"YulExpressionStatement","src":"7657:44:51"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6958,"isOffset":false,"isSlot":false,"src":"7625:10:51","valueSize":1},{"declaration":6958,"isOffset":false,"isSlot":false,"src":"7672:10:51","valueSize":1}],"id":6973,"nodeType":"InlineAssembly","src":"7565:154:51"}]}}]},"id":6982,"nodeType":"IfStatement","src":"7222:580:51","trueBody":{"id":6968,"nodeType":"Block","src":"7235:42:51","statements":[{"expression":{"id":6966,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7256:10:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6964,"id":6967,"nodeType":"Return","src":"7249:17:51"}]}}]},"id":6984,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyCallResult","nodeType":"FunctionDefinition","parameters":{"id":6961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6956,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6984,"src":"7110:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6955,"name":"bool","nodeType":"ElementaryTypeName","src":"7110:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6958,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6984,"src":"7124:23:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6957,"name":"bytes","nodeType":"ElementaryTypeName","src":"7124:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6960,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":6984,"src":"7149:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6959,"name":"string","nodeType":"ElementaryTypeName","src":"7149:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7109:67:51"},"returnParameters":{"id":6964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6963,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6984,"src":"7198:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6962,"name":"bytes","nodeType":"ElementaryTypeName","src":"7198:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7197:14:51"},"scope":6985,"src":"7083:725:51","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":6986,"src":"126:7684:51"}],"src":"33:7778:51"},"id":51},"openzeppelin-contracts-solc-0.7/utils/Context.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Context.sol","exportedSymbols":{"Context":[7008]},"id":7009,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6987,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:52"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":7008,"linearizedBaseContracts":[7008],"name":"Context","nodeType":"ContractDefinition","nodes":[{"body":{"id":6995,"nodeType":"Block","src":"668:34:52","statements":[{"expression":{"expression":{"id":6992,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"685:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"685:10:52","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":6991,"id":6994,"nodeType":"Return","src":"678:17:52"}]},"id":6996,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nodeType":"FunctionDefinition","parameters":{"id":6988,"nodeType":"ParameterList","parameters":[],"src":"617:2:52"},"returnParameters":{"id":6991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6990,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6996,"src":"651:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":6989,"name":"address","nodeType":"ElementaryTypeName","src":"651:15:52","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"650:17:52"},"scope":7008,"src":"598:104:52","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":7006,"nodeType":"Block","src":"773:165:52","statements":[{"expression":{"id":7001,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"783:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$7008","typeString":"contract Context"}},"id":7002,"nodeType":"ExpressionStatement","src":"783:4:52"},{"expression":{"expression":{"id":7003,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"923:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"923:8:52","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":7000,"id":7005,"nodeType":"Return","src":"916:15:52"}]},"id":7007,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nodeType":"FunctionDefinition","parameters":{"id":6997,"nodeType":"ParameterList","parameters":[],"src":"725:2:52"},"returnParameters":{"id":7000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6999,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7007,"src":"759:12:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6998,"name":"bytes","nodeType":"ElementaryTypeName","src":"759:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"758:14:52"},"scope":7008,"src":"708:230:52","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":7009,"src":"566:374:52"}],"src":"33:908:52"},"id":52},"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol","exportedSymbols":{"EnumerableMap":[7568]},"id":7569,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7010,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:53"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7011,"nodeType":"StructuredDocumentation","src":"58:705:53","text":" @dev Library for managing an enumerable variant of Solidity's\n https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n type.\n Maps have the following properties:\n - Entries are added, removed, and checked for existence in constant time\n (O(1)).\n - Entries are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableMap for EnumerableMap.UintToAddressMap;\n     // Declare a set state variable\n     EnumerableMap.UintToAddressMap private myMap;\n }\n ```\n As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n supported."},"fullyImplemented":true,"id":7568,"linearizedBaseContracts":[7568],"name":"EnumerableMap","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableMap.MapEntry","id":7016,"members":[{"constant":false,"id":7013,"mutability":"mutable","name":"_key","nodeType":"VariableDeclaration","scope":7016,"src":"1276:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7012,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1276:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7015,"mutability":"mutable","name":"_value","nodeType":"VariableDeclaration","scope":7016,"src":"1298:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7014,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1298:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"MapEntry","nodeType":"StructDefinition","scope":7568,"src":"1250:69:53","visibility":"public"},{"canonicalName":"EnumerableMap.Map","id":7024,"members":[{"constant":false,"id":7019,"mutability":"mutable","name":"_entries","nodeType":"VariableDeclaration","scope":7024,"src":"1388:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage_ptr","typeString":"struct EnumerableMap.MapEntry[]"},"typeName":{"baseType":{"id":7017,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":7016,"src":"1388:8:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"id":7018,"nodeType":"ArrayTypeName","src":"1388:10:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage_ptr","typeString":"struct EnumerableMap.MapEntry[]"}},"visibility":"internal"},{"constant":false,"id":7023,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":7024,"src":"1557:37:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":7022,"keyType":{"id":7020,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1566:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1557:28:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":7021,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Map","nodeType":"StructDefinition","scope":7568,"src":"1325:276:53","visibility":"public"},{"body":{"id":7085,"nodeType":"Block","src":"1910:596:53","statements":[{"assignments":[7037],"declarations":[{"constant":false,"id":7037,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":7085,"src":"2018:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7036,"name":"uint256","nodeType":"ElementaryTypeName","src":"2018:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7042,"initialValue":{"baseExpression":{"expression":{"id":7038,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7027,"src":"2037:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7023,"src":"2037:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7041,"indexExpression":{"id":7040,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7029,"src":"2050:3:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2037:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2018:36:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7043,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7037,"src":"2069:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2081:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2069:13:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7083,"nodeType":"Block","src":"2408:92:53","statements":[{"expression":{"id":7079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":7070,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7027,"src":"2422:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"2422:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7076,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7072,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7037,"src":"2435:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2446:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2435:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2422:26:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":7077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":7015,"src":"2422:33:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7078,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7031,"src":"2458:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2422:41:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7080,"nodeType":"ExpressionStatement","src":"2422:41:53"},{"expression":{"hexValue":"66616c7365","id":7081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2484:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7035,"id":7082,"nodeType":"Return","src":"2477:12:53"}]},"id":7084,"nodeType":"IfStatement","src":"2065:435:53","trueBody":{"id":7069,"nodeType":"Block","src":"2084:318:53","statements":[{"expression":{"arguments":[{"arguments":[{"id":7052,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7029,"src":"2170:3:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7053,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7031,"src":"2183:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7051,"name":"MapEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7016,"src":"2153:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MapEntry_$7016_storage_ptr_$","typeString":"type(struct EnumerableMap.MapEntry storage pointer)"}},"id":7054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["_key","_value"],"nodeType":"FunctionCall","src":"2153:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_memory_ptr","typeString":"struct EnumerableMap.MapEntry memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MapEntry_$7016_memory_ptr","typeString":"struct EnumerableMap.MapEntry memory"}],"expression":{"expression":{"id":7046,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7027,"src":"2135:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7049,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"2135:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"2135:17:53","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_struct$_MapEntry_$7016_storage_$returns$__$","typeString":"function (struct EnumerableMap.MapEntry storage ref)"}},"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2135:57:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7056,"nodeType":"ExpressionStatement","src":"2135:57:53"},{"expression":{"id":7065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7057,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7027,"src":"2327:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7060,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7023,"src":"2327:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7061,"indexExpression":{"id":7059,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7029,"src":"2340:3:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2327:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":7062,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7027,"src":"2347:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"2347:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2347:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2327:39:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7066,"nodeType":"ExpressionStatement","src":"2327:39:53"},{"expression":{"hexValue":"74727565","id":7067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2387:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7035,"id":7068,"nodeType":"Return","src":"2380:11:53"}]}}]},"documentation":{"id":7025,"nodeType":"StructuredDocumentation","src":"1607:216:53","text":" @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present."},"id":7086,"implemented":true,"kind":"function","modifiers":[],"name":"_set","nodeType":"FunctionDefinition","parameters":{"id":7032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7027,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7086,"src":"1842:15:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":7026,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":7024,"src":"1842:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":7029,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7086,"src":"1859:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7028,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1859:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7031,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7086,"src":"1872:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7030,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1872:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1841:45:53"},"returnParameters":{"id":7035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7034,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7086,"src":"1904:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7033,"name":"bool","nodeType":"ElementaryTypeName","src":"1904:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1903:6:53"},"scope":7568,"src":"1828:678:53","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7166,"nodeType":"Block","src":"2744:1447:53","statements":[{"assignments":[7097],"declarations":[{"constant":false,"id":7097,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":7166,"src":"2852:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7096,"name":"uint256","nodeType":"ElementaryTypeName","src":"2852:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7102,"initialValue":{"baseExpression":{"expression":{"id":7098,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"2871:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7023,"src":"2871:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7101,"indexExpression":{"id":7100,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7091,"src":"2884:3:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2871:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2852:36:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7103,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7097,"src":"2903:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2903:13:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7164,"nodeType":"Block","src":"4148:37:53","statements":[{"expression":{"hexValue":"66616c7365","id":7162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4169:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7095,"id":7163,"nodeType":"Return","src":"4162:12:53"}]},"id":7165,"nodeType":"IfStatement","src":"2899:1286:53","trueBody":{"id":7161,"nodeType":"Block","src":"2918:1224:53","statements":[{"assignments":[7107],"declarations":[{"constant":false,"id":7107,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":7161,"src":"3259:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7106,"name":"uint256","nodeType":"ElementaryTypeName","src":"3259:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7111,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7108,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7097,"src":"3283:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3294:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3283:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3259:36:53"},{"assignments":[7113],"declarations":[{"constant":false,"id":7113,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":7161,"src":"3309:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7112,"name":"uint256","nodeType":"ElementaryTypeName","src":"3309:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7119,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7114,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"3329:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7115,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"3329:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3329:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3351:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3329:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3309:43:53"},{"assignments":[7121],"declarations":[{"constant":false,"id":7121,"mutability":"mutable","name":"lastEntry","nodeType":"VariableDeclaration","scope":7161,"src":"3592:26:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage_ptr","typeString":"struct EnumerableMap.MapEntry"},"typeName":{"id":7120,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":7016,"src":"3592:8:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"visibility":"internal"}],"id":7126,"initialValue":{"baseExpression":{"expression":{"id":7122,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"3621:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"3621:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7125,"indexExpression":{"id":7124,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7113,"src":"3634:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3621:23:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3592:52:53"},{"expression":{"id":7133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7127,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"3736:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"3736:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7131,"indexExpression":{"id":7129,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"3749:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3736:27:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7132,"name":"lastEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7121,"src":"3766:9:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"src":"3736:39:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":7134,"nodeType":"ExpressionStatement","src":"3736:39:53"},{"expression":{"id":7144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7135,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"3841:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7023,"src":"3841:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7140,"indexExpression":{"expression":{"id":7137,"name":"lastEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7121,"src":"3854:9:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":7138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":7013,"src":"3854:14:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3841:28:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7141,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"3872:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3888:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3872:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3841:48:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7145,"nodeType":"ExpressionStatement","src":"3841:48:53"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7146,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"3995:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"3995:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3995:16:53","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3995:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7152,"nodeType":"ExpressionStatement","src":"3995:18:53"},{"expression":{"id":7157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4081:24:53","subExpression":{"baseExpression":{"expression":{"id":7153,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"4088:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7154,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7023,"src":"4088:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7156,"indexExpression":{"id":7155,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7091,"src":"4101:3:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4088:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7158,"nodeType":"ExpressionStatement","src":"4081:24:53"},{"expression":{"hexValue":"74727565","id":7159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4127:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7095,"id":7160,"nodeType":"Return","src":"4120:11:53"}]}}]},"documentation":{"id":7087,"nodeType":"StructuredDocumentation","src":"2512:157:53","text":" @dev Removes a key-value pair from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present."},"id":7167,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nodeType":"FunctionDefinition","parameters":{"id":7092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7089,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7167,"src":"2691:15:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":7088,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":7024,"src":"2691:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":7091,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7167,"src":"2708:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7090,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2708:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2690:30:53"},"returnParameters":{"id":7095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7094,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7167,"src":"2738:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7093,"name":"bool","nodeType":"ElementaryTypeName","src":"2738:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2737:6:53"},"scope":7568,"src":"2674:1517:53","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7184,"nodeType":"Block","src":"4347:46:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7177,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7170,"src":"4364:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7023,"src":"4364:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7180,"indexExpression":{"id":7179,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"4377:3:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4364:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4385:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4364:22:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7176,"id":7183,"nodeType":"Return","src":"4357:29:53"}]},"documentation":{"id":7168,"nodeType":"StructuredDocumentation","src":"4197:68:53","text":" @dev Returns true if the key is in the map. O(1)."},"id":7185,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nodeType":"FunctionDefinition","parameters":{"id":7173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7170,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7185,"src":"4289:15:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":7169,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":7024,"src":"4289:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":7172,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7185,"src":"4306:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7171,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4306:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4288:30:53"},"returnParameters":{"id":7176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7175,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7185,"src":"4341:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7174,"name":"bool","nodeType":"ElementaryTypeName","src":"4341:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4340:6:53"},"scope":7568,"src":"4270:123:53","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":7197,"nodeType":"Block","src":"4548:43:53","statements":[{"expression":{"expression":{"expression":{"id":7193,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7188,"src":"4565:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"4565:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4565:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7192,"id":7196,"nodeType":"Return","src":"4558:26:53"}]},"documentation":{"id":7186,"nodeType":"StructuredDocumentation","src":"4399:79:53","text":" @dev Returns the number of key-value pairs in the map. O(1)."},"id":7198,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nodeType":"FunctionDefinition","parameters":{"id":7189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7188,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7198,"src":"4500:15:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":7187,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":7024,"src":"4500:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"}],"src":"4499:17:53"},"returnParameters":{"id":7192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7191,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7198,"src":"4539:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7190,"name":"uint256","nodeType":"ElementaryTypeName","src":"4539:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4538:9:53"},"scope":7568,"src":"4483:108:53","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":7232,"nodeType":"Block","src":"5019:189:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7211,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7201,"src":"5037:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"5037:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5037:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7214,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7203,"src":"5059:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5037:27:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473","id":7216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5066:36:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155","typeString":"literal_string \"EnumerableMap: index out of bounds\""},"value":"EnumerableMap: index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155","typeString":"literal_string \"EnumerableMap: index out of bounds\""}],"id":7210,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5029:7:53","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5029:74:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7218,"nodeType":"ExpressionStatement","src":"5029:74:53"},{"assignments":[7220],"declarations":[{"constant":false,"id":7220,"mutability":"mutable","name":"entry","nodeType":"VariableDeclaration","scope":7232,"src":"5114:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage_ptr","typeString":"struct EnumerableMap.MapEntry"},"typeName":{"id":7219,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":7016,"src":"5114:8:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"visibility":"internal"}],"id":7225,"initialValue":{"baseExpression":{"expression":{"id":7221,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7201,"src":"5139:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7222,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"5139:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7224,"indexExpression":{"id":7223,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7203,"src":"5152:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5139:19:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5114:44:53"},{"expression":{"components":[{"expression":{"id":7226,"name":"entry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7220,"src":"5176:5:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":7227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":7013,"src":"5176:10:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":7228,"name":"entry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7220,"src":"5188:5:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":7229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":7015,"src":"5188:12:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":7230,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5175:26:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"functionReturnParameters":7209,"id":7231,"nodeType":"Return","src":"5168:33:53"}]},"documentation":{"id":7199,"nodeType":"StructuredDocumentation","src":"4596:333:53","text":" @dev Returns the key-value pair stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of entries inside the\n array, and it may change when more entries are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7233,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nodeType":"FunctionDefinition","parameters":{"id":7204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7201,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7233,"src":"4947:15:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":7200,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":7024,"src":"4947:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":7203,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7233,"src":"4964:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7202,"name":"uint256","nodeType":"ElementaryTypeName","src":"4964:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4946:32:53"},"returnParameters":{"id":7209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7206,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7233,"src":"5001:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7205,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5001:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7208,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7233,"src":"5010:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7207,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5010:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5000:18:53"},"scope":7568,"src":"4934:274:53","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":7270,"nodeType":"Block","src":"5434:220:53","statements":[{"assignments":[7246],"declarations":[{"constant":false,"id":7246,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":7270,"src":"5444:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7245,"name":"uint256","nodeType":"ElementaryTypeName","src":"5444:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7251,"initialValue":{"baseExpression":{"expression":{"id":7247,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"5463:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7248,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7023,"src":"5463:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7250,"indexExpression":{"id":7249,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7238,"src":"5476:3:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5463:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5444:36:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7252,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"5494:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5506:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5494:13:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7259,"nodeType":"IfStatement","src":"5490:36:53","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":7255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5517:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":7256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5524:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":7257,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5516:10:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":7244,"id":7258,"nodeType":"Return","src":"5509:17:53"}},{"expression":{"components":[{"hexValue":"74727565","id":7260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5580:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"baseExpression":{"expression":{"id":7261,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"5586:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"5586:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7266,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7263,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"5599:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5610:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5599:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5586:26:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":7267,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":7015,"src":"5586:33:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":7268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5579:41:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"functionReturnParameters":7244,"id":7269,"nodeType":"Return","src":"5572:48:53"}]},"documentation":{"id":7234,"nodeType":"StructuredDocumentation","src":"5214:131:53","text":" @dev Tries to returns the value associated with `key`.  O(1).\n Does not revert if `key` is not in the map."},"id":7271,"implemented":true,"kind":"function","modifiers":[],"name":"_tryGet","nodeType":"FunctionDefinition","parameters":{"id":7239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7236,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7271,"src":"5367:15:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":7235,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":7024,"src":"5367:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":7238,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7271,"src":"5384:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7237,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5384:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5366:30:53"},"returnParameters":{"id":7244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7241,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7271,"src":"5419:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7240,"name":"bool","nodeType":"ElementaryTypeName","src":"5419:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7243,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7271,"src":"5425:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7242,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5425:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5418:15:53"},"scope":7568,"src":"5350:304:53","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":7303,"nodeType":"Block","src":"5881:232:53","statements":[{"assignments":[7282],"declarations":[{"constant":false,"id":7282,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":7303,"src":"5891:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7281,"name":"uint256","nodeType":"ElementaryTypeName","src":"5891:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7287,"initialValue":{"baseExpression":{"expression":{"id":7283,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"5910:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7284,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7023,"src":"5910:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7286,"indexExpression":{"id":7285,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7276,"src":"5923:3:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5910:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5891:36:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7289,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"5945:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5957:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5945:13:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579","id":7292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5960:32:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072","typeString":"literal_string \"EnumerableMap: nonexistent key\""},"value":"EnumerableMap: nonexistent key"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072","typeString":"literal_string \"EnumerableMap: nonexistent key\""}],"id":7288,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5937:7:53","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5937:56:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7294,"nodeType":"ExpressionStatement","src":"5937:56:53"},{"expression":{"expression":{"baseExpression":{"expression":{"id":7295,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"6046:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"6046:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7300,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7297,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"6059:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6070:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6059:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6046:26:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":7301,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":7015,"src":"6046:33:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7280,"id":7302,"nodeType":"Return","src":"6039:40:53"}]},"documentation":{"id":7272,"nodeType":"StructuredDocumentation","src":"5660:141:53","text":" @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."},"id":7304,"implemented":true,"kind":"function","modifiers":[],"name":"_get","nodeType":"FunctionDefinition","parameters":{"id":7277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7274,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7304,"src":"5820:15:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":7273,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":7024,"src":"5820:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":7276,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7304,"src":"5837:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7275,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5837:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5819:30:53"},"returnParameters":{"id":7280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7279,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7304,"src":"5872:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7278,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5872:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5871:9:53"},"scope":7568,"src":"5806:307:53","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":7338,"nodeType":"Block","src":"6498:212:53","statements":[{"assignments":[7317],"declarations":[{"constant":false,"id":7317,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":7338,"src":"6508:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7316,"name":"uint256","nodeType":"ElementaryTypeName","src":"6508:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7322,"initialValue":{"baseExpression":{"expression":{"id":7318,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7307,"src":"6527:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7023,"src":"6527:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7321,"indexExpression":{"id":7320,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7309,"src":"6540:3:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6527:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6508:36:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7324,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"6562:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6574:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6562:13:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":7327,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7311,"src":"6577:12:53","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":7323,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6554:7:53","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6554:36:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7329,"nodeType":"ExpressionStatement","src":"6554:36:53"},{"expression":{"expression":{"baseExpression":{"expression":{"id":7330,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7307,"src":"6643:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":7331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":7019,"src":"6643:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$7016_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":7335,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7332,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"6656:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6667:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6656:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6643:26:53","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$7016_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":7336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":7015,"src":"6643:33:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7315,"id":7337,"nodeType":"Return","src":"6636:40:53"}]},"documentation":{"id":7305,"nodeType":"StructuredDocumentation","src":"6119:271:53","text":" @dev Same as {_get}, with a custom error message when `key` is not in the map.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {_tryGet}."},"id":7339,"implemented":true,"kind":"function","modifiers":[],"name":"_get","nodeType":"FunctionDefinition","parameters":{"id":7312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7307,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7339,"src":"6409:15:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":7306,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":7024,"src":"6409:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":7309,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7339,"src":"6426:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7308,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6426:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7311,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":7339,"src":"6439:26:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7310,"name":"string","nodeType":"ElementaryTypeName","src":"6439:6:53","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6408:58:53"},"returnParameters":{"id":7315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7314,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7339,"src":"6489:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7313,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6489:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6488:9:53"},"scope":7568,"src":"6395:315:53","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableMap.UintToAddressMap","id":7342,"members":[{"constant":false,"id":7341,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":7342,"src":"6775:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":7340,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":7024,"src":"6775:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"}],"name":"UintToAddressMap","nodeType":"StructDefinition","scope":7568,"src":"6741:51:53","visibility":"public"},{"body":{"id":7373,"nodeType":"Block","src":"7114:88:53","statements":[{"expression":{"arguments":[{"expression":{"id":7355,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7345,"src":"7136:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":7356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7341,"src":"7136:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":7359,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7347,"src":"7156:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7148:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7357,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7148:7:53","typeDescriptions":{}}},"id":7360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7148:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"arguments":[{"id":7367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7349,"src":"7186:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7178:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7365,"name":"uint160","nodeType":"ElementaryTypeName","src":"7178:7:53","typeDescriptions":{}}},"id":7368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7178:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7170:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7363,"name":"uint256","nodeType":"ElementaryTypeName","src":"7170:7:53","typeDescriptions":{}}},"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7170:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7162:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7361,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7162:7:53","typeDescriptions":{}}},"id":7370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7162:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7354,"name":"_set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7086,"src":"7131:4:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$7024_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)"}},"id":7371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7131:64:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7353,"id":7372,"nodeType":"Return","src":"7124:71:53"}]},"documentation":{"id":7343,"nodeType":"StructuredDocumentation","src":"6798:216:53","text":" @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present."},"id":7374,"implemented":true,"kind":"function","modifiers":[],"name":"set","nodeType":"FunctionDefinition","parameters":{"id":7350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7345,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7374,"src":"7032:28:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":7344,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7342,"src":"7032:16:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":7347,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7374,"src":"7062:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7346,"name":"uint256","nodeType":"ElementaryTypeName","src":"7062:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7349,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7374,"src":"7075:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7348,"name":"address","nodeType":"ElementaryTypeName","src":"7075:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7031:58:53"},"returnParameters":{"id":7353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7352,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7374,"src":"7108:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7351,"name":"bool","nodeType":"ElementaryTypeName","src":"7108:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7107:6:53"},"scope":7568,"src":"7019:183:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7393,"nodeType":"Block","src":"7444:57:53","statements":[{"expression":{"arguments":[{"expression":{"id":7385,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7377,"src":"7469:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":7386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7341,"src":"7469:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":7389,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7379,"src":"7489:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7481:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7481:7:53","typeDescriptions":{}}},"id":7390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7481:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7384,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"7461:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$7024_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)"}},"id":7391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7461:33:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7383,"id":7392,"nodeType":"Return","src":"7454:40:53"}]},"documentation":{"id":7375,"nodeType":"StructuredDocumentation","src":"7208:148:53","text":" @dev Removes a value from a set. O(1).\n Returns true if the key was removed from the map, that is if it was present."},"id":7394,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":7380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7377,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7394,"src":"7377:28:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":7376,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7342,"src":"7377:16:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":7379,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7394,"src":"7407:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7378,"name":"uint256","nodeType":"ElementaryTypeName","src":"7407:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:43:53"},"returnParameters":{"id":7383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7382,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7394,"src":"7438:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7381,"name":"bool","nodeType":"ElementaryTypeName","src":"7438:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7437:6:53"},"scope":7568,"src":"7361:140:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7413,"nodeType":"Block","src":"7670:59:53","statements":[{"expression":{"arguments":[{"expression":{"id":7405,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7397,"src":"7697:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":7406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7341,"src":"7697:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":7409,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7399,"src":"7717:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7709:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7407,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7709:7:53","typeDescriptions":{}}},"id":7410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7709:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7404,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7185,"src":"7687:9:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$7024_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)"}},"id":7411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7687:35:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7403,"id":7412,"nodeType":"Return","src":"7680:42:53"}]},"documentation":{"id":7395,"nodeType":"StructuredDocumentation","src":"7507:68:53","text":" @dev Returns true if the key is in the map. O(1)."},"id":7414,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":7400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7397,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7414,"src":"7598:28:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":7396,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7342,"src":"7598:16:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":7399,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7414,"src":"7628:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7398,"name":"uint256","nodeType":"ElementaryTypeName","src":"7628:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7597:43:53"},"returnParameters":{"id":7403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7402,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7414,"src":"7664:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7401,"name":"bool","nodeType":"ElementaryTypeName","src":"7664:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7663:6:53"},"scope":7568,"src":"7580:149:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7427,"nodeType":"Block","src":"7890:43:53","statements":[{"expression":{"arguments":[{"expression":{"id":7423,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7915:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":7424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7341,"src":"7915:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"}],"id":7422,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"7907:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$7024_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableMap.Map storage pointer) view returns (uint256)"}},"id":7425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7907:19:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7421,"id":7426,"nodeType":"Return","src":"7900:26:53"}]},"documentation":{"id":7415,"nodeType":"StructuredDocumentation","src":"7735:72:53","text":" @dev Returns the number of elements in the map. O(1)."},"id":7428,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":7418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7417,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7428,"src":"7828:28:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":7416,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7342,"src":"7828:16:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"}],"src":"7827:30:53"},"returnParameters":{"id":7421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7420,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7428,"src":"7881:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7419,"name":"uint256","nodeType":"ElementaryTypeName","src":"7881:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7880:9:53"},"scope":7568,"src":"7812:121:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7466,"nodeType":"Block","src":"8359:135:53","statements":[{"assignments":[7441,7443],"declarations":[{"constant":false,"id":7441,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7466,"src":"8370:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7440,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8370:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7443,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7466,"src":"8383:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7442,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8383:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7449,"initialValue":{"arguments":[{"expression":{"id":7445,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"8404:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":7446,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7341,"src":"8404:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"id":7447,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"8416:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7444,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7233,"src":"8400:3:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$7024_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)"}},"id":7448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8400:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"8369:53:53"},{"expression":{"components":[{"arguments":[{"id":7452,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7441,"src":"8448:3:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8440:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7450,"name":"uint256","nodeType":"ElementaryTypeName","src":"8440:7:53","typeDescriptions":{}}},"id":7453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8440:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"arguments":[{"id":7460,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7443,"src":"8478:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8470:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7458,"name":"uint256","nodeType":"ElementaryTypeName","src":"8470:7:53","typeDescriptions":{}}},"id":7461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8470:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8462:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7456,"name":"uint160","nodeType":"ElementaryTypeName","src":"8462:7:53","typeDescriptions":{}}},"id":7462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8462:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8454:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7454,"name":"address","nodeType":"ElementaryTypeName","src":"8454:7:53","typeDescriptions":{}}},"id":7463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8454:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":7464,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8439:48:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_payable_$","typeString":"tuple(uint256,address payable)"}},"functionReturnParameters":7439,"id":7465,"nodeType":"Return","src":"8432:55:53"}]},"documentation":{"id":7429,"nodeType":"StructuredDocumentation","src":"7938:318:53","text":" @dev Returns the element stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7467,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":7434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7431,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7467,"src":"8273:28:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":7430,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7342,"src":"8273:16:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":7433,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7467,"src":"8303:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7432,"name":"uint256","nodeType":"ElementaryTypeName","src":"8303:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8272:45:53"},"returnParameters":{"id":7439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7436,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7467,"src":"8341:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7435,"name":"uint256","nodeType":"ElementaryTypeName","src":"8341:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7438,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7467,"src":"8350:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7437,"name":"address","nodeType":"ElementaryTypeName","src":"8350:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8340:18:53"},"scope":7568,"src":"8261:233:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7505,"nodeType":"Block","src":"8771:142:53","statements":[{"assignments":[7480,7482],"declarations":[{"constant":false,"id":7480,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7505,"src":"8782:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7479,"name":"bool","nodeType":"ElementaryTypeName","src":"8782:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7482,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7505,"src":"8796:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7481,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8796:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7491,"initialValue":{"arguments":[{"expression":{"id":7484,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7470,"src":"8821:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":7485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7341,"src":"8821:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":7488,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7472,"src":"8841:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8833:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7486,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8833:7:53","typeDescriptions":{}}},"id":7489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8833:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7483,"name":"_tryGet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7271,"src":"8813:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$7024_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool,bytes32)"}},"id":7490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8813:33:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"8781:65:53"},{"expression":{"components":[{"id":7492,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7480,"src":"8864:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"arguments":[{"id":7499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7482,"src":"8897:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8889:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7497,"name":"uint256","nodeType":"ElementaryTypeName","src":"8889:7:53","typeDescriptions":{}}},"id":7500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8889:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8881:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7495,"name":"uint160","nodeType":"ElementaryTypeName","src":"8881:7:53","typeDescriptions":{}}},"id":7501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8881:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8873:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7493,"name":"address","nodeType":"ElementaryTypeName","src":"8873:7:53","typeDescriptions":{}}},"id":7502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8873:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":7503,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8863:43:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_payable_$","typeString":"tuple(bool,address payable)"}},"functionReturnParameters":7478,"id":7504,"nodeType":"Return","src":"8856:50:53"}]},"documentation":{"id":7468,"nodeType":"StructuredDocumentation","src":"8500:169:53","text":" @dev Tries to returns the value associated with `key`.  O(1).\n Does not revert if `key` is not in the map.\n _Available since v3.4._"},"id":7506,"implemented":true,"kind":"function","modifiers":[],"name":"tryGet","nodeType":"FunctionDefinition","parameters":{"id":7473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7470,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7506,"src":"8690:28:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":7469,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7342,"src":"8690:16:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":7472,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7506,"src":"8720:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7471,"name":"uint256","nodeType":"ElementaryTypeName","src":"8720:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8689:43:53"},"returnParameters":{"id":7478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7475,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7506,"src":"8756:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7474,"name":"bool","nodeType":"ElementaryTypeName","src":"8756:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7477,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7506,"src":"8762:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7476,"name":"address","nodeType":"ElementaryTypeName","src":"8762:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8755:15:53"},"scope":7568,"src":"8674:239:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7534,"nodeType":"Block","src":"9153:81:53","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":7523,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"9199:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":7524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7341,"src":"9199:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":7527,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7511,"src":"9219:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9211:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7525,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9211:7:53","typeDescriptions":{}}},"id":7528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9211:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7522,"name":"_get","nodeType":"Identifier","overloadedDeclarations":[7304,7339],"referencedDeclaration":7304,"src":"9194:4:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$7024_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)"}},"id":7529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9194:30:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9186:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7520,"name":"uint256","nodeType":"ElementaryTypeName","src":"9186:7:53","typeDescriptions":{}}},"id":7530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9186:39:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9178:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7518,"name":"uint160","nodeType":"ElementaryTypeName","src":"9178:7:53","typeDescriptions":{}}},"id":7531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9178:48:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9170:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7516,"name":"address","nodeType":"ElementaryTypeName","src":"9170:7:53","typeDescriptions":{}}},"id":7532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9170:57:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":7515,"id":7533,"nodeType":"Return","src":"9163:64:53"}]},"documentation":{"id":7507,"nodeType":"StructuredDocumentation","src":"8919:141:53","text":" @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."},"id":7535,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":7512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7509,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7535,"src":"9078:28:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":7508,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7342,"src":"9078:16:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":7511,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7535,"src":"9108:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7510,"name":"uint256","nodeType":"ElementaryTypeName","src":"9108:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9077:43:53"},"returnParameters":{"id":7515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7514,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7535,"src":"9144:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7513,"name":"address","nodeType":"ElementaryTypeName","src":"9144:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9143:9:53"},"scope":7568,"src":"9065:169:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7566,"nodeType":"Block","src":"9630:95:53","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":7554,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7538,"src":"9676:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":7555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7341,"src":"9676:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":7558,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7540,"src":"9696:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9688:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7556,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9688:7:53","typeDescriptions":{}}},"id":7559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9688:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7560,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7542,"src":"9702:12:53","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$7024_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7553,"name":"_get","nodeType":"Identifier","overloadedDeclarations":[7304,7339],"referencedDeclaration":7339,"src":"9671:4:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$7024_storage_ptr_$_t_bytes32_$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)"}},"id":7561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9671:44:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9663:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7551,"name":"uint256","nodeType":"ElementaryTypeName","src":"9663:7:53","typeDescriptions":{}}},"id":7562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9663:53:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9655:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7549,"name":"uint160","nodeType":"ElementaryTypeName","src":"9655:7:53","typeDescriptions":{}}},"id":7563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9655:62:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9647:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7547,"name":"address","nodeType":"ElementaryTypeName","src":"9647:7:53","typeDescriptions":{}}},"id":7564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9647:71:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":7546,"id":7565,"nodeType":"Return","src":"9640:78:53"}]},"documentation":{"id":7536,"nodeType":"StructuredDocumentation","src":"9240:269:53","text":" @dev Same as {get}, with a custom error message when `key` is not in the map.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryGet}."},"id":7567,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":7543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7538,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":7567,"src":"9527:28:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":7537,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":7342,"src":"9527:16:53","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$7342_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":7540,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7567,"src":"9557:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7539,"name":"uint256","nodeType":"ElementaryTypeName","src":"9557:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7542,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":7567,"src":"9570:26:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7541,"name":"string","nodeType":"ElementaryTypeName","src":"9570:6:53","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9526:71:53"},"returnParameters":{"id":7546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7545,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7567,"src":"9621:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7544,"name":"address","nodeType":"ElementaryTypeName","src":"9621:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9620:9:53"},"scope":7568,"src":"9514:211:53","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7569,"src":"764:8963:53"}],"src":"33:9695:53"},"id":53},"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol","exportedSymbols":{"EnumerableSet":[8060]},"id":8061,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7570,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:54"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7571,"nodeType":"StructuredDocumentation","src":"58:686:54","text":" @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."},"fullyImplemented":true,"id":8060,"linearizedBaseContracts":[8060],"name":"EnumerableSet","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.Set","id":7579,"members":[{"constant":false,"id":7574,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":7579,"src":"1267:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7572,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1267:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7573,"nodeType":"ArrayTypeName","src":"1267:9:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":7578,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":7579,"src":"1418:37:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":7577,"keyType":{"id":7575,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1427:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1418:28:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":7576,"name":"uint256","nodeType":"ElementaryTypeName","src":"1438:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Set","nodeType":"StructDefinition","scope":8060,"src":"1213:249:54","visibility":"public"},{"body":{"id":7619,"nodeType":"Block","src":"1701:335:54","statements":[{"condition":{"id":7593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1715:22:54","subExpression":{"arguments":[{"id":7590,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7582,"src":"1726:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},{"id":7591,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7584,"src":"1731:5:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7589,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7718,"src":"1716:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$7579_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":7592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1716:21:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7617,"nodeType":"Block","src":"1993:37:54","statements":[{"expression":{"hexValue":"66616c7365","id":7615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2014:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7588,"id":7616,"nodeType":"Return","src":"2007:12:54"}]},"id":7618,"nodeType":"IfStatement","src":"1711:319:54","trueBody":{"id":7614,"nodeType":"Block","src":"1739:248:54","statements":[{"expression":{"arguments":[{"id":7599,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7584,"src":"1770:5:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":7594,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7582,"src":"1753:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7574,"src":"1753:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"1753:16:54","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":7600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7601,"nodeType":"ExpressionStatement","src":"1753:23:54"},{"expression":{"id":7610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7602,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7582,"src":"1911:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7605,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7578,"src":"1911:12:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7606,"indexExpression":{"id":7604,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7584,"src":"1924:5:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1911:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":7607,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7582,"src":"1933:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7608,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7574,"src":"1933:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1933:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1911:40:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7611,"nodeType":"ExpressionStatement","src":"1911:40:54"},{"expression":{"hexValue":"74727565","id":7612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7588,"id":7613,"nodeType":"Return","src":"1965:11:54"}]}}]},"documentation":{"id":7580,"nodeType":"StructuredDocumentation","src":"1468:159:54","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":7620,"implemented":true,"kind":"function","modifiers":[],"name":"_add","nodeType":"FunctionDefinition","parameters":{"id":7585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7582,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7620,"src":"1646:15:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7581,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7579,"src":"1646:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":7584,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7620,"src":"1663:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7583,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1663:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1645:32:54"},"returnParameters":{"id":7588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7587,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7620,"src":"1695:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7586,"name":"bool","nodeType":"ElementaryTypeName","src":"1695:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1694:6:54"},"scope":8060,"src":"1632:404:54","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7699,"nodeType":"Block","src":"2276:1440:54","statements":[{"assignments":[7631],"declarations":[{"constant":false,"id":7631,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":7699,"src":"2386:18:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7630,"name":"uint256","nodeType":"ElementaryTypeName","src":"2386:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7636,"initialValue":{"baseExpression":{"expression":{"id":7632,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"2407:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7578,"src":"2407:12:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7635,"indexExpression":{"id":7634,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"2420:5:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2407:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2386:40:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7637,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7631,"src":"2441:10:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2455:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2441:15:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7697,"nodeType":"Block","src":"3673:37:54","statements":[{"expression":{"hexValue":"66616c7365","id":7695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3694:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7629,"id":7696,"nodeType":"Return","src":"3687:12:54"}]},"id":7698,"nodeType":"IfStatement","src":"2437:1273:54","trueBody":{"id":7694,"nodeType":"Block","src":"2458:1209:54","statements":[{"assignments":[7641],"declarations":[{"constant":false,"id":7641,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":7694,"src":"2798:21:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7640,"name":"uint256","nodeType":"ElementaryTypeName","src":"2798:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7645,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7642,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7631,"src":"2822:10:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2835:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2822:14:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2798:38:54"},{"assignments":[7647],"declarations":[{"constant":false,"id":7647,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":7694,"src":"2850:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7646,"name":"uint256","nodeType":"ElementaryTypeName","src":"2850:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7653,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7648,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"2870:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7574,"src":"2870:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2870:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2891:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2870:22:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2850:42:54"},{"assignments":[7655],"declarations":[{"constant":false,"id":7655,"mutability":"mutable","name":"lastvalue","nodeType":"VariableDeclaration","scope":7694,"src":"3132:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7654,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3132:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7660,"initialValue":{"baseExpression":{"expression":{"id":7656,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"3152:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7574,"src":"3152:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7659,"indexExpression":{"id":7658,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7647,"src":"3164:9:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3152:22:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3132:42:54"},{"expression":{"id":7667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7661,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"3266:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7574,"src":"3266:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7665,"indexExpression":{"id":7663,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7641,"src":"3278:13:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3266:26:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7666,"name":"lastvalue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7655,"src":"3295:9:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3266:38:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7668,"nodeType":"ExpressionStatement","src":"3266:38:54"},{"expression":{"id":7677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7669,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"3370:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7672,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7578,"src":"3370:12:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7673,"indexExpression":{"id":7671,"name":"lastvalue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7655,"src":"3383:9:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3370:23:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7674,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7641,"src":"3396:13:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3412:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3396:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3370:43:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7678,"nodeType":"ExpressionStatement","src":"3370:43:54"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7679,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"3519:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7682,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7574,"src":"3519:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3519:15:54","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3519:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7685,"nodeType":"ExpressionStatement","src":"3519:17:54"},{"expression":{"id":7690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"3604:26:54","subExpression":{"baseExpression":{"expression":{"id":7686,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"3611:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7687,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7578,"src":"3611:12:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7689,"indexExpression":{"id":7688,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"3624:5:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3611:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7691,"nodeType":"ExpressionStatement","src":"3604:26:54"},{"expression":{"hexValue":"74727565","id":7692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3652:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7629,"id":7693,"nodeType":"Return","src":"3645:11:54"}]}}]},"documentation":{"id":7621,"nodeType":"StructuredDocumentation","src":"2042:157:54","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":7700,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nodeType":"FunctionDefinition","parameters":{"id":7626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7623,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7700,"src":"2221:15:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7622,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7579,"src":"2221:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":7625,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7700,"src":"2238:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7624,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2238:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2220:32:54"},"returnParameters":{"id":7629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7628,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7700,"src":"2270:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7627,"name":"bool","nodeType":"ElementaryTypeName","src":"2270:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2269:6:54"},"scope":8060,"src":"2204:1512:54","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7717,"nodeType":"Block","src":"3876:48:54","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7710,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7703,"src":"3893:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7711,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7578,"src":"3893:12:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7713,"indexExpression":{"id":7712,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"3906:5:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3893:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3916:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3893:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7709,"id":7716,"nodeType":"Return","src":"3886:31:54"}]},"documentation":{"id":7701,"nodeType":"StructuredDocumentation","src":"3722:70:54","text":" @dev Returns true if the value is in the set. O(1)."},"id":7718,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nodeType":"FunctionDefinition","parameters":{"id":7706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7703,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7718,"src":"3816:15:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7702,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7579,"src":"3816:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":7705,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7718,"src":"3833:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7704,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3833:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3815:32:54"},"returnParameters":{"id":7709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7708,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7718,"src":"3870:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7707,"name":"bool","nodeType":"ElementaryTypeName","src":"3870:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3869:6:54"},"scope":8060,"src":"3797:127:54","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":7730,"nodeType":"Block","src":"4070:42:54","statements":[{"expression":{"expression":{"expression":{"id":7726,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7721,"src":"4087:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7727,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7574,"src":"4087:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4087:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7725,"id":7729,"nodeType":"Return","src":"4080:25:54"}]},"documentation":{"id":7719,"nodeType":"StructuredDocumentation","src":"3930:70:54","text":" @dev Returns the number of values on the set. O(1)."},"id":7731,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nodeType":"FunctionDefinition","parameters":{"id":7722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7721,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7731,"src":"4022:15:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7720,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7579,"src":"4022:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"src":"4021:17:54"},"returnParameters":{"id":7725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7724,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7731,"src":"4061:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7723,"name":"uint256","nodeType":"ElementaryTypeName","src":"4061:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4060:9:54"},"scope":8060,"src":"4005:107:54","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":7755,"nodeType":"Block","src":"4520:125:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7742,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7734,"src":"4538:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7574,"src":"4538:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4538:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7745,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"4559:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4538:26:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473","id":7747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4566:36:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb","typeString":"literal_string \"EnumerableSet: index out of bounds\""},"value":"EnumerableSet: index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb","typeString":"literal_string \"EnumerableSet: index out of bounds\""}],"id":7741,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4530:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4530:73:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7749,"nodeType":"ExpressionStatement","src":"4530:73:54"},{"expression":{"baseExpression":{"expression":{"id":7750,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7734,"src":"4620:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7574,"src":"4620:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7753,"indexExpression":{"id":7752,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"4632:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4620:18:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7740,"id":7754,"nodeType":"Return","src":"4613:25:54"}]},"documentation":{"id":7732,"nodeType":"StructuredDocumentation","src":"4117:322:54","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7756,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nodeType":"FunctionDefinition","parameters":{"id":7737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7734,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7756,"src":"4457:15:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7733,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7579,"src":"4457:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":7736,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7756,"src":"4474:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7735,"name":"uint256","nodeType":"ElementaryTypeName","src":"4474:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4456:32:54"},"returnParameters":{"id":7740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7739,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7756,"src":"4511:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7738,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4511:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4510:9:54"},"scope":8060,"src":"4444:201:54","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableSet.Bytes32Set","id":7759,"members":[{"constant":false,"id":7758,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":7759,"src":"4698:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7757,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7579,"src":"4698:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"Bytes32Set","nodeType":"StructDefinition","scope":8060,"src":"4670:45:54","visibility":"public"},{"body":{"id":7775,"nodeType":"Block","src":"4961:47:54","statements":[{"expression":{"arguments":[{"expression":{"id":7770,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7762,"src":"4983:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7758,"src":"4983:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7772,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7764,"src":"4995:5:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7769,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7620,"src":"4978:4:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$7579_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4978:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7768,"id":7774,"nodeType":"Return","src":"4971:30:54"}]},"documentation":{"id":7760,"nodeType":"StructuredDocumentation","src":"4721:159:54","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":7776,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7762,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7776,"src":"4898:22:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7761,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7759,"src":"4898:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7764,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7776,"src":"4922:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7763,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4922:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4897:39:54"},"returnParameters":{"id":7768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7767,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7776,"src":"4955:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7766,"name":"bool","nodeType":"ElementaryTypeName","src":"4955:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4954:6:54"},"scope":8060,"src":"4885:123:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7792,"nodeType":"Block","src":"5255:50:54","statements":[{"expression":{"arguments":[{"expression":{"id":7787,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7779,"src":"5280:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7758,"src":"5280:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7781,"src":"5292:5:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7786,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7700,"src":"5272:7:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$7579_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5272:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7785,"id":7791,"nodeType":"Return","src":"5265:33:54"}]},"documentation":{"id":7777,"nodeType":"StructuredDocumentation","src":"5014:157:54","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":7793,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":7782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7779,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7793,"src":"5192:22:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7778,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7759,"src":"5192:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7781,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7793,"src":"5216:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7780,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5216:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5191:39:54"},"returnParameters":{"id":7785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7784,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7793,"src":"5249:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7783,"name":"bool","nodeType":"ElementaryTypeName","src":"5249:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5248:6:54"},"scope":8060,"src":"5176:129:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7809,"nodeType":"Block","src":"5472:52:54","statements":[{"expression":{"arguments":[{"expression":{"id":7804,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7796,"src":"5499:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7805,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7758,"src":"5499:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7806,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7798,"src":"5511:5:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7803,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7718,"src":"5489:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$7579_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":7807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5489:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7802,"id":7808,"nodeType":"Return","src":"5482:35:54"}]},"documentation":{"id":7794,"nodeType":"StructuredDocumentation","src":"5311:70:54","text":" @dev Returns true if the value is in the set. O(1)."},"id":7810,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":7799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7796,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7810,"src":"5404:22:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7795,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7759,"src":"5404:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7798,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7810,"src":"5428:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7797,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5428:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5403:39:54"},"returnParameters":{"id":7802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7801,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7810,"src":"5466:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7800,"name":"bool","nodeType":"ElementaryTypeName","src":"5466:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5465:6:54"},"scope":8060,"src":"5386:138:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7823,"nodeType":"Block","src":"5677:43:54","statements":[{"expression":{"arguments":[{"expression":{"id":7819,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7813,"src":"5702:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7820,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7758,"src":"5702:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7818,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"5694:7:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$7579_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":7821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5694:19:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7817,"id":7822,"nodeType":"Return","src":"5687:26:54"}]},"documentation":{"id":7811,"nodeType":"StructuredDocumentation","src":"5530:70:54","text":" @dev Returns the number of values in the set. O(1)."},"id":7824,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":7814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7813,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7824,"src":"5621:22:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7812,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7759,"src":"5621:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"5620:24:54"},"returnParameters":{"id":7817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7816,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7824,"src":"5668:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7815,"name":"uint256","nodeType":"ElementaryTypeName","src":"5668:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5667:9:54"},"scope":8060,"src":"5605:115:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7840,"nodeType":"Block","src":"6135:46:54","statements":[{"expression":{"arguments":[{"expression":{"id":7835,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7827,"src":"6156:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7758,"src":"6156:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7837,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7829,"src":"6168:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7834,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7756,"src":"6152:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$7579_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":7838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6152:22:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7833,"id":7839,"nodeType":"Return","src":"6145:29:54"}]},"documentation":{"id":7825,"nodeType":"StructuredDocumentation","src":"5725:322:54","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7841,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":7830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7827,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7841,"src":"6064:22:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7826,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7759,"src":"6064:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7759_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7829,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7841,"src":"6088:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7828,"name":"uint256","nodeType":"ElementaryTypeName","src":"6088:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6063:39:54"},"returnParameters":{"id":7833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7832,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7841,"src":"6126:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7831,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6126:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6125:9:54"},"scope":8060,"src":"6052:129:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.AddressSet","id":7844,"members":[{"constant":false,"id":7843,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":7844,"src":"6234:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7842,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7579,"src":"6234:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"AddressSet","nodeType":"StructDefinition","scope":8060,"src":"6206:45:54","visibility":"public"},{"body":{"id":7869,"nodeType":"Block","src":"6497:74:54","statements":[{"expression":{"arguments":[{"expression":{"id":7855,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7847,"src":"6519:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7856,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7843,"src":"6519:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":7863,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7849,"src":"6555:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6547:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7861,"name":"uint160","nodeType":"ElementaryTypeName","src":"6547:7:54","typeDescriptions":{}}},"id":7864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6547:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6539:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7859,"name":"uint256","nodeType":"ElementaryTypeName","src":"6539:7:54","typeDescriptions":{}}},"id":7865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6539:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6531:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7857,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6531:7:54","typeDescriptions":{}}},"id":7866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6531:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7854,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7620,"src":"6514:4:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$7579_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6514:50:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7853,"id":7868,"nodeType":"Return","src":"6507:57:54"}]},"documentation":{"id":7845,"nodeType":"StructuredDocumentation","src":"6257:159:54","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":7870,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7847,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7870,"src":"6434:22:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7846,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7844,"src":"6434:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7849,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7870,"src":"6458:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7848,"name":"address","nodeType":"ElementaryTypeName","src":"6458:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6433:39:54"},"returnParameters":{"id":7853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7852,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7870,"src":"6491:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7851,"name":"bool","nodeType":"ElementaryTypeName","src":"6491:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6490:6:54"},"scope":8060,"src":"6421:150:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7895,"nodeType":"Block","src":"6818:77:54","statements":[{"expression":{"arguments":[{"expression":{"id":7881,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7873,"src":"6843:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7882,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7843,"src":"6843:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":7889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7875,"src":"6879:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6871:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7887,"name":"uint160","nodeType":"ElementaryTypeName","src":"6871:7:54","typeDescriptions":{}}},"id":7890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6871:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6863:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7885,"name":"uint256","nodeType":"ElementaryTypeName","src":"6863:7:54","typeDescriptions":{}}},"id":7891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6863:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6855:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7883,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6855:7:54","typeDescriptions":{}}},"id":7892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6855:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7880,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7700,"src":"6835:7:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$7579_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6835:53:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7879,"id":7894,"nodeType":"Return","src":"6828:60:54"}]},"documentation":{"id":7871,"nodeType":"StructuredDocumentation","src":"6577:157:54","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":7896,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":7876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7873,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7896,"src":"6755:22:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7872,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7844,"src":"6755:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7875,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7896,"src":"6779:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7874,"name":"address","nodeType":"ElementaryTypeName","src":"6779:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6754:39:54"},"returnParameters":{"id":7879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7878,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7896,"src":"6812:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7877,"name":"bool","nodeType":"ElementaryTypeName","src":"6812:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6811:6:54"},"scope":8060,"src":"6739:156:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7921,"nodeType":"Block","src":"7062:79:54","statements":[{"expression":{"arguments":[{"expression":{"id":7907,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"7089:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7843,"src":"7089:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":7915,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7901,"src":"7125:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7117:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7913,"name":"uint160","nodeType":"ElementaryTypeName","src":"7117:7:54","typeDescriptions":{}}},"id":7916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7117:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7109:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7911,"name":"uint256","nodeType":"ElementaryTypeName","src":"7109:7:54","typeDescriptions":{}}},"id":7917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7109:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7101:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7909,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7101:7:54","typeDescriptions":{}}},"id":7918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7101:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7906,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7718,"src":"7079:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$7579_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":7919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7079:55:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7905,"id":7920,"nodeType":"Return","src":"7072:62:54"}]},"documentation":{"id":7897,"nodeType":"StructuredDocumentation","src":"6901:70:54","text":" @dev Returns true if the value is in the set. O(1)."},"id":7922,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":7902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7899,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7922,"src":"6994:22:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7898,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7844,"src":"6994:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7901,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7922,"src":"7018:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7900,"name":"address","nodeType":"ElementaryTypeName","src":"7018:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6993:39:54"},"returnParameters":{"id":7905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7904,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7922,"src":"7056:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7903,"name":"bool","nodeType":"ElementaryTypeName","src":"7056:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7055:6:54"},"scope":8060,"src":"6976:165:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7935,"nodeType":"Block","src":"7294:43:54","statements":[{"expression":{"arguments":[{"expression":{"id":7931,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"7319:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7843,"src":"7319:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7930,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"7311:7:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$7579_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":7933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7311:19:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7929,"id":7934,"nodeType":"Return","src":"7304:26:54"}]},"documentation":{"id":7923,"nodeType":"StructuredDocumentation","src":"7147:70:54","text":" @dev Returns the number of values in the set. O(1)."},"id":7936,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":7926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7925,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7936,"src":"7238:22:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7924,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7844,"src":"7238:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"7237:24:54"},"returnParameters":{"id":7929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7928,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7936,"src":"7285:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7927,"name":"uint256","nodeType":"ElementaryTypeName","src":"7285:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7284:9:54"},"scope":8060,"src":"7222:115:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7961,"nodeType":"Block","src":"7752:73:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":7953,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7939,"src":"7797:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7843,"src":"7797:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7955,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7941,"src":"7809:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7952,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7756,"src":"7793:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$7579_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":7956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7793:22:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7785:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7950,"name":"uint256","nodeType":"ElementaryTypeName","src":"7785:7:54","typeDescriptions":{}}},"id":7957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7785:31:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7777:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7948,"name":"uint160","nodeType":"ElementaryTypeName","src":"7777:7:54","typeDescriptions":{}}},"id":7958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7777:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7769:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7946,"name":"address","nodeType":"ElementaryTypeName","src":"7769:7:54","typeDescriptions":{}}},"id":7959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7769:49:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":7945,"id":7960,"nodeType":"Return","src":"7762:56:54"}]},"documentation":{"id":7937,"nodeType":"StructuredDocumentation","src":"7342:322:54","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7962,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":7942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7939,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7962,"src":"7681:22:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7938,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7844,"src":"7681:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7844_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7941,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7962,"src":"7705:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7940,"name":"uint256","nodeType":"ElementaryTypeName","src":"7705:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7680:39:54"},"returnParameters":{"id":7945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7944,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7962,"src":"7743:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7943,"name":"address","nodeType":"ElementaryTypeName","src":"7743:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7742:9:54"},"scope":8060,"src":"7669:156:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.UintSet","id":7965,"members":[{"constant":false,"id":7964,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":7965,"src":"7873:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7963,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7579,"src":"7873:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"UintSet","nodeType":"StructDefinition","scope":8060,"src":"7848:42:54","visibility":"public"},{"body":{"id":7984,"nodeType":"Block","src":"8133:56:54","statements":[{"expression":{"arguments":[{"expression":{"id":7976,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7968,"src":"8155:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7964,"src":"8155:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":7980,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7970,"src":"8175:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8167:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8167:7:54","typeDescriptions":{}}},"id":7981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8167:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7975,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7620,"src":"8150:4:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$7579_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8150:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7974,"id":7983,"nodeType":"Return","src":"8143:39:54"}]},"documentation":{"id":7966,"nodeType":"StructuredDocumentation","src":"7896:159:54","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":7985,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7968,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7985,"src":"8073:19:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7967,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7965,"src":"8073:7:54","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":7970,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7985,"src":"8094:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7969,"name":"uint256","nodeType":"ElementaryTypeName","src":"8094:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8072:36:54"},"returnParameters":{"id":7974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7973,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7985,"src":"8127:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7972,"name":"bool","nodeType":"ElementaryTypeName","src":"8127:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8126:6:54"},"scope":8060,"src":"8060:129:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8004,"nodeType":"Block","src":"8433:59:54","statements":[{"expression":{"arguments":[{"expression":{"id":7996,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7988,"src":"8458:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7964,"src":"8458:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":8000,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7990,"src":"8478:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8470:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7998,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8470:7:54","typeDescriptions":{}}},"id":8001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8470:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7995,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7700,"src":"8450:7:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$7579_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":8002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8450:35:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7994,"id":8003,"nodeType":"Return","src":"8443:42:54"}]},"documentation":{"id":7986,"nodeType":"StructuredDocumentation","src":"8195:157:54","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":8005,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":7991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7988,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8005,"src":"8373:19:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7987,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7965,"src":"8373:7:54","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":7990,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8005,"src":"8394:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7989,"name":"uint256","nodeType":"ElementaryTypeName","src":"8394:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8372:36:54"},"returnParameters":{"id":7994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7993,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8005,"src":"8427:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7992,"name":"bool","nodeType":"ElementaryTypeName","src":"8427:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8426:6:54"},"scope":8060,"src":"8357:135:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8024,"nodeType":"Block","src":"8656:61:54","statements":[{"expression":{"arguments":[{"expression":{"id":8016,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"8683:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":8017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7964,"src":"8683:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":8020,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"8703:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8695:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":8018,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8695:7:54","typeDescriptions":{}}},"id":8021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8695:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8015,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7718,"src":"8673:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$7579_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":8022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8673:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8014,"id":8023,"nodeType":"Return","src":"8666:44:54"}]},"documentation":{"id":8006,"nodeType":"StructuredDocumentation","src":"8498:70:54","text":" @dev Returns true if the value is in the set. O(1)."},"id":8025,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":8011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8008,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8025,"src":"8591:19:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":8007,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7965,"src":"8591:7:54","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":8010,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8025,"src":"8612:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8009,"name":"uint256","nodeType":"ElementaryTypeName","src":"8612:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8590:36:54"},"returnParameters":{"id":8014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8013,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8025,"src":"8650:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8012,"name":"bool","nodeType":"ElementaryTypeName","src":"8650:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8649:6:54"},"scope":8060,"src":"8573:144:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8038,"nodeType":"Block","src":"8867:43:54","statements":[{"expression":{"arguments":[{"expression":{"id":8034,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8028,"src":"8892:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":8035,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7964,"src":"8892:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":8033,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"8884:7:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$7579_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":8036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8884:19:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8032,"id":8037,"nodeType":"Return","src":"8877:26:54"}]},"documentation":{"id":8026,"nodeType":"StructuredDocumentation","src":"8723:70:54","text":" @dev Returns the number of values on the set. O(1)."},"id":8039,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":8029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8028,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8039,"src":"8814:19:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":8027,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7965,"src":"8814:7:54","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"}],"src":"8813:21:54"},"returnParameters":{"id":8032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8031,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8039,"src":"8858:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8030,"name":"uint256","nodeType":"ElementaryTypeName","src":"8858:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8857:9:54"},"scope":8060,"src":"8798:112:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8058,"nodeType":"Block","src":"9322:55:54","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":8052,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8042,"src":"9351:3:54","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":8053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7964,"src":"9351:10:54","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":8054,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8044,"src":"9363:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$7579_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8051,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7756,"src":"9347:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$7579_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":8055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9347:22:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9339:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8049,"name":"uint256","nodeType":"ElementaryTypeName","src":"9339:7:54","typeDescriptions":{}}},"id":8056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9339:31:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8048,"id":8057,"nodeType":"Return","src":"9332:38:54"}]},"documentation":{"id":8040,"nodeType":"StructuredDocumentation","src":"8915:322:54","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":8059,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":8045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8042,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8059,"src":"9254:19:54","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":8041,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7965,"src":"9254:7:54","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7965_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":8044,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":8059,"src":"9275:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8043,"name":"uint256","nodeType":"ElementaryTypeName","src":"9275:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9253:36:54"},"returnParameters":{"id":8048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8047,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8059,"src":"9313:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8046,"name":"uint256","nodeType":"ElementaryTypeName","src":"9313:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9312:9:54"},"scope":8060,"src":"9242:135:54","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8061,"src":"745:8634:54"}],"src":"33:9347:54"},"id":54},"openzeppelin-contracts-solc-0.7/utils/Strings.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Strings.sol","exportedSymbols":{"Strings":[8147]},"id":8148,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8062,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:55"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":8063,"nodeType":"StructuredDocumentation","src":"58:34:55","text":" @dev String operations."},"fullyImplemented":true,"id":8147,"linearizedBaseContracts":[8147],"name":"Strings","nodeType":"ContractDefinition","nodes":[{"body":{"id":8145,"nodeType":"Block","src":"273:654:55","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8071,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8066,"src":"475:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"484:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"475:10:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8077,"nodeType":"IfStatement","src":"471:51:55","trueBody":{"id":8076,"nodeType":"Block","src":"487:35:55","statements":[{"expression":{"hexValue":"30","id":8074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"508:3:55","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"functionReturnParameters":8070,"id":8075,"nodeType":"Return","src":"501:10:55"}]}},{"assignments":[8079],"declarations":[{"constant":false,"id":8079,"mutability":"mutable","name":"temp","nodeType":"VariableDeclaration","scope":8145,"src":"531:12:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8078,"name":"uint256","nodeType":"ElementaryTypeName","src":"531:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8081,"initialValue":{"id":8080,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8066,"src":"546:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"531:20:55"},{"assignments":[8083],"declarations":[{"constant":false,"id":8083,"mutability":"mutable","name":"digits","nodeType":"VariableDeclaration","scope":8145,"src":"561:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8082,"name":"uint256","nodeType":"ElementaryTypeName","src":"561:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8084,"nodeType":"VariableDeclarationStatement","src":"561:14:55"},{"body":{"id":8095,"nodeType":"Block","src":"603:57:55","statements":[{"expression":{"id":8089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"617:8:55","subExpression":{"id":8088,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8083,"src":"617:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8090,"nodeType":"ExpressionStatement","src":"617:8:55"},{"expression":{"id":8093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8091,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"639:4:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":8092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"647:2:55","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"639:10:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8094,"nodeType":"ExpressionStatement","src":"639:10:55"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8085,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"592:4:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"600:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"592:9:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8096,"nodeType":"WhileStatement","src":"585:75:55"},{"assignments":[8098],"declarations":[{"constant":false,"id":8098,"mutability":"mutable","name":"buffer","nodeType":"VariableDeclaration","scope":8145,"src":"669:19:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8097,"name":"bytes","nodeType":"ElementaryTypeName","src":"669:5:55","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":8103,"initialValue":{"arguments":[{"id":8101,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8083,"src":"701:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"691:9:55","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":8099,"name":"bytes","nodeType":"ElementaryTypeName","src":"695:5:55","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":8102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"691:17:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"669:39:55"},{"assignments":[8105],"declarations":[{"constant":false,"id":8105,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":8145,"src":"718:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8104,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8109,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8106,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8083,"src":"734:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"743:1:55","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"734:10:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"718:26:55"},{"expression":{"id":8112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8110,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"754:4:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8111,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8066,"src":"761:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"754:12:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8113,"nodeType":"ExpressionStatement","src":"754:12:55"},{"body":{"id":8138,"nodeType":"Block","src":"794:96:55","statements":[{"expression":{"id":8132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8117,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8098,"src":"808:6:55","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8120,"indexExpression":{"id":8119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"815:7:55","subExpression":{"id":8118,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8105,"src":"815:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"808:15:55","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3438","id":8125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"839:2:55","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8126,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"844:4:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"3130","id":8127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"851:2:55","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"844:9:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"839:14:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"833:5:55","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8123,"name":"uint8","nodeType":"ElementaryTypeName","src":"833:5:55","typeDescriptions":{}}},"id":8130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"833:21:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":8122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"826:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":8121,"name":"bytes1","nodeType":"ElementaryTypeName","src":"826:6:55","typeDescriptions":{}}},"id":8131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"826:29:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"808:47:55","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":8133,"nodeType":"ExpressionStatement","src":"808:47:55"},{"expression":{"id":8136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8134,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"869:4:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":8135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"877:2:55","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"869:10:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8137,"nodeType":"ExpressionStatement","src":"869:10:55"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8114,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"783:4:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"791:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"783:9:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8139,"nodeType":"WhileStatement","src":"776:114:55"},{"expression":{"arguments":[{"id":8142,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8098,"src":"913:6:55","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"906:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":8140,"name":"string","nodeType":"ElementaryTypeName","src":"906:6:55","typeDescriptions":{}}},"id":8143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"906:14:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":8070,"id":8144,"nodeType":"Return","src":"899:21:55"}]},"documentation":{"id":8064,"nodeType":"StructuredDocumentation","src":"115:82:55","text":" @dev Converts a `uint256` to its ASCII `string` representation."},"id":8146,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nodeType":"FunctionDefinition","parameters":{"id":8067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8066,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8146,"src":"220:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8065,"name":"uint256","nodeType":"ElementaryTypeName","src":"220:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"219:15:55"},"returnParameters":{"id":8070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8069,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8146,"src":"258:13:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8068,"name":"string","nodeType":"ElementaryTypeName","src":"258:6:55","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"257:15:55"},"scope":8147,"src":"202:725:55","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8148,"src":"93:836:55"}],"src":"33:897:55"},"id":55}},"contracts":{"contracts/elixir-core/interfaces/IElixirFactory.sol":{"IElixirFactory":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint24","name":"fee","type":"uint24"},{"indexed":true,"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"FeeAmountEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":true,"internalType":"uint24","name":"fee","type":"uint24"},{"indexed":false,"internalType":"int24","name":"tickSpacing","type":"int24"},{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"createPool","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"enableFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"feeAmountTickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"getPool","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"createPool(address,address,uint24)":"a1671295","enableFeeAmount(uint24,int24)":"8a7c195f","feeAmountTickSpacing(uint24)":"22afcccb","getPool(address,address,uint24)":"1698ee82","implementation()":"5c60da1b","owner()":"8da5cb5b","setOwner(address)":"13af4035"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"FeeAmountEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"enableFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"feeAmountTickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"FeeAmountEnabled(uint24,int24)\":{\"params\":{\"fee\":\"The enabled fee, denominated in hundredths of a bip\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks for pools created with the given fee\"}},\"OwnerChanged(address,address)\":{\"params\":{\"newOwner\":\"The owner after the owner was changed\",\"oldOwner\":\"The owner before the owner was changed\"}},\"PoolCreated(address,address,uint24,int24,address)\":{\"params\":{\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"pool\":\"The address of the created pool\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks\",\"token0\":\"The first token of the pool by address sort order\",\"token1\":\"The second token of the pool by address sort order\"}}},\"kind\":\"dev\",\"methods\":{\"createPool(address,address,uint24)\":{\"details\":\"tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments are invalid.\",\"params\":{\"fee\":\"The desired fee for the pool\",\"tokenA\":\"One of the two tokens in the desired pool\",\"tokenB\":\"The other of the two tokens in the desired pool\"},\"returns\":{\"pool\":\"The address of the newly created pool\"}},\"enableFeeAmount(uint24,int24)\":{\"details\":\"Fee amounts may never be removed once enabled\",\"params\":{\"fee\":\"The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\",\"tickSpacing\":\"The spacing between ticks to be enforced for all pools created with the given fee amount\"}},\"feeAmountTickSpacing(uint24)\":{\"details\":\"A fee amount can never be removed, so this value should be hard coded or cached in the calling context\",\"params\":{\"fee\":\"The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\"},\"returns\":{\"_0\":\"The tick spacing\"}},\"getPool(address,address,uint24)\":{\"details\":\"tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\",\"params\":{\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"tokenA\":\"The contract address of either token0 or token1\",\"tokenB\":\"The contract address of the other token\"},\"returns\":{\"pool\":\"The pool address\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the pool implementation\"}},\"owner()\":{\"details\":\"Can be changed by the current owner via setOwner\",\"returns\":{\"_0\":\"The address of the factory owner\"}},\"setOwner(address)\":{\"details\":\"Must be called by the current owner\",\"params\":{\"_owner\":\"The new owner of the factory\"}}},\"title\":\"The interface for the Elixir Factory\",\"version\":1},\"userdoc\":{\"events\":{\"FeeAmountEnabled(uint24,int24)\":{\"notice\":\"Emitted when a new fee amount is enabled for pool creation via the factory\"},\"OwnerChanged(address,address)\":{\"notice\":\"Emitted when the owner of the factory is changed\"},\"PoolCreated(address,address,uint24,int24,address)\":{\"notice\":\"Emitted when a pool is created\"}},\"kind\":\"user\",\"methods\":{\"createPool(address,address,uint24)\":{\"notice\":\"Creates a pool for the given two tokens and fee\"},\"enableFeeAmount(uint24,int24)\":{\"notice\":\"Enables a fee amount with the given tickSpacing\"},\"feeAmountTickSpacing(uint24)\":{\"notice\":\"Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\"},\"getPool(address,address,uint24)\":{\"notice\":\"Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\"},\"implementation()\":{\"notice\":\"Returns the implementation contract of the pool\"},\"owner()\":{\"notice\":\"Returns the current owner of the factory\"},\"setOwner(address)\":{\"notice\":\"Updates the owner of the factory\"}},\"notice\":\"The Elixir Factory facilitates creation of Elixir pools and control over the protocol fees\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":\"IElixirFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/IElixirPool.sol":{"IElixirPool":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"CollectProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid1","type":"uint256"}],"name":"Flash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16"}],"name":"IncreaseObservationCardinalityNext","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Initialize","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"feeProtocol0Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol0New","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1New","type":"uint8"}],"name":"SetFeeProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"indexed":false,"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"SetRewardRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"int256","name":"amount0","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1","type":"int256"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Swap","type":"event"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"name":"increaseObservationCardinalityNext","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"uint24","name":"_fee","type":"uint24"},{"internalType":"int24","name":"_tickSpacing","type":"int24"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint192","name":"rewardPerLiquidityCumulativeX64","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"},{"internalType":"uint192[]","name":"rewardPerLiquidityCumulativeX64s","type":"uint192[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"positions","outputs":[{"internalType":"uint128","name":"_liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardSlot","outputs":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"},{"internalType":"uint192","name":"rewardPerLiquidityInsideX64","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int16","name":"wordPosition","type":"int16"}],"name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint192","name":"rewardPerLiquidityOutsideX64","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"burn(int24,int24,uint128)":"a34123a7","collect(address,int24,int24,uint128,uint128)":"4f1eb3d8","collectProtocol(address,uint128,uint128)":"85b66729","factory()":"c45a0155","fee()":"ddca3f43","feeGrowthGlobal0X128()":"f3058399","feeGrowthGlobal1X128()":"46141319","flash(address,uint256,uint256,bytes)":"490e6cbc","increaseObservationCardinalityNext(uint16)":"32148f67","initialize(address,address,uint24,int24)":"14f2705c","initialize(uint160)":"f637731d","liquidity()":"1a686502","maxLiquidityPerTick()":"70cf754a","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","observations(uint256)":"252c09d7","observe(uint32[])":"883bdbfd","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","rewardSlot()":"94fd4a3e","setFeeProtocol(uint8,uint8)":"8206a4d1","setRewardRate(uint144,uint32)":"218064e5","slot0()":"3850c7bd","snapshotCumulativesInside(int24,int24)":"a38807f2","swap(address,bool,int256,uint160,bytes)":"128acb08","tickBitmap(int16)":"5339c296","tickSpacing()":"d0c93a7c","ticks(int24)":"f30dba93","token0()":"0dfe1681","token1()":"d21220a7"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"SetRewardRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"_fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"_tickSpacing\",\"type\":\"int24\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityCumulativeX64\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"},{\"internalType\":\"uint192[]\",\"name\":\"rewardPerLiquidityCumulativeX64s\",\"type\":\"uint192[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardSlot\",\"outputs\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"setRewardRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityInsideX64\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityOutsideX64\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The pool interface is broken up into many smaller pieces\",\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"feeGrowthGlobal0X128()\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128()\":{\"details\":\"This value can overflow the uint256\"},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IElixirFlashCallback#elixirFlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(address,address,uint24,int24)\":{\"params\":{\"_fee\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\",\"_tickSpacing\":\"The pool tick spacing\",\"_token0\":\"The first of the two tokens of the pool, sorted by address\",\"_token1\":\"The second of the two tokens of the pool, sorted by address\"}},\"initialize(uint160)\":{\"details\":\"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"liquidity()\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\"},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IElixirMintCallback#elixirMintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"observations(uint256)\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"returns\":{\"blockTimestamp\":\"The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use Returns rewardPerLiquidityCumulativeX64 reward per liquidity\"}},\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"positions(bytes32)\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"returns\":{\"_liquidity\":\"The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\"}},\"protocolFees()\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"rewardSlot()\":{\"details\":\"Both of the variables can be set arbitrarily by the owner. The pool does not set any restrictions on the values other than their variable types. The factory owner should relegate the setting of these variables to a reward contract that will update these variables based on a proper reward distribution logic.\",\"returns\":{\"rewardPerSecondX48\":\"The rewards per second promised to be distributed to the pool as a Q96.48 value rewardRateEffectiveUntil The timestamp when the rewardPerSecondX48 is no longer effective\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"setRewardRate(uint144,uint32)\":{\"params\":{\"rewardPerSecondX48\":\"The new reward rate per second (in Q48)\",\"rewardRateEffectiveUntil\":\"The timestamp when the new reward rate will expire\"}},\"slot0()\":{\"returns\":{\"sqrtPriceX96\":\"The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IElixirSwapCallback#elixirSwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"ticks(int24)\":{\"params\":{\"tick\":\"The tick to look up\"},\"returns\":{\"liquidityGross\":\"the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"The interface for a Elixir Pool\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"SetRewardRate(uint144,uint32)\":{\"notice\":\"Emitted when the reward rate is changed by the owner\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IElixirFactory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(address,address,uint24,int24)\":{\"notice\":\"Initialize the pool to set immutable parameters\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"rewardSlot()\":{\"notice\":\"The rewardSlot storage slot in the pool stores variables necessary to update Oracle.Observation.rewardPerLiquidityCumulativeX64 accumulator.\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"setRewardRate(uint144,uint32)\":{\"notice\":\"Set the reward rate the active liquidity receives per second\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"A Pangolin pool facilitates swapping and automated market making between any two assets that strictly conform to the ERC20 specification\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":\"IElixirPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol":{"IElixirMintCallback":{"abi":[{"inputs":[{"internalType":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"elixirMintCallback(uint256,uint256,bytes)":"1507a8f4"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Owed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Owed\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"elixirMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirMintCallback(uint256,uint256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the minted liquidity. The caller of this method must be checked to be a ElixirPool deployed by the canonical ElixirFactory.\",\"params\":{\"amount0Owed\":\"The amount of token0 due to the pool for the minted liquidity\",\"amount1Owed\":\"The amount of token1 due to the pool for the minted liquidity\",\"data\":\"Any data passed through by the caller via the IElixirPoolActions#mint call\"}}},\"title\":\"Callback for IElixirPoolActions#mint\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IElixirPool#mint.\"}},\"notice\":\"Any contract that calls IElixirPoolActions#mint must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":\"IElixirMintCallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":{\"keccak256\":\"0xc15f6629fbba11617680a3df47f3a590dcc8360b731788b2783c827c0ba3667a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ca98b55c62541f6685c762569b82b7c7a774398f406554520f874221153250f\",\"dweb:/ipfs/QmVCL8LwVC1LuarhTUVDYijd7W4cmaU5HjVJr5KgqLEdTe\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol":{"IElixirPoolActions":{"abi":[{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"name":"increaseObservationCardinalityNext","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"burn(int24,int24,uint128)":"a34123a7","collect(address,int24,int24,uint128,uint128)":"4f1eb3d8","flash(address,uint256,uint256,bytes)":"490e6cbc","increaseObservationCardinalityNext(uint16)":"32148f67","initialize(uint160)":"f637731d","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","swap(address,bool,int256,uint160,bytes)":"128acb08"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IElixirFlashCallback#elixirFlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(uint160)\":{\"details\":\"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IElixirMintCallback#elixirMintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IElixirSwapCallback#elixirSwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}}},\"title\":\"Permissionless pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"}},\"notice\":\"Contains pool methods that can be called by anyone\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":\"IElixirPoolActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol":{"IElixirPoolDerivedState":{"abi":[{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"},{"internalType":"uint192[]","name":"rewardPerLiquidityCumulativeX64s","type":"uint192[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"},{"internalType":"uint192","name":"rewardPerLiquidityInsideX64","type":"uint192"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"observe(uint32[])":"883bdbfd","snapshotCumulativesInside(int24,int24)":"a38807f2"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"},{\"internalType\":\"uint192[]\",\"name\":\"rewardPerLiquidityCumulativeX64s\",\"type\":\"uint192[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityInsideX64\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}}},\"title\":\"Pool state that is not stored\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"}},\"notice\":\"Contains view functions to provide information about the pool that is computed rather than stored on the blockchain. The functions here may have variable gas costs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":\"IElixirPoolDerivedState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol":{"IElixirPoolEvents":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"CollectProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid1","type":"uint256"}],"name":"Flash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16"}],"name":"IncreaseObservationCardinalityNext","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Initialize","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"feeProtocol0Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol0New","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1New","type":"uint8"}],"name":"SetFeeProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"indexed":false,"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"SetRewardRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"int256","name":"amount0","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1","type":"int256"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Swap","type":"event"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"SetRewardRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"}],\"devdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"details\":\"Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\",\"params\":{\"amount\":\"The amount of liquidity to remove\",\"amount0\":\"The amount of token0 withdrawn\",\"amount1\":\"The amount of token1 withdrawn\",\"owner\":\"The owner of the position for which liquidity is removed\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"details\":\"Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\",\"params\":{\"amount0\":\"The amount of token0 fees collected\",\"amount1\":\"The amount of token1 fees collected\",\"owner\":\"The owner of the position for which fees are collected\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"CollectProtocol(address,address,uint128,uint128)\":{\"params\":{\"amount0\":\"The amount of token1 protocol fees that is withdrawn\",\"recipient\":\"The address that receives the collected protocol fees\",\"sender\":\"The address that collects the protocol fees\"}},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount of token0 that was flashed\",\"amount1\":\"The amount of token1 that was flashed\",\"paid0\":\"The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\",\"paid1\":\"The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\",\"recipient\":\"The address that received the tokens from flash\",\"sender\":\"The address that initiated the swap call, and that received the callback\"}},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"details\":\"observationCardinalityNext is not the observation cardinality until an observation is written at the index just before a mint/swap/burn.\",\"params\":{\"observationCardinalityNextNew\":\"The updated value of the next observation cardinality\",\"observationCardinalityNextOld\":\"The previous value of the next observation cardinality\"}},\"Initialize(uint160,int24)\":{\"details\":\"Mint/Burn/Swap cannot be emitted by the pool before Initialize\",\"params\":{\"sqrtPriceX96\":\"The initial sqrt price of the pool, as a Q64.96\",\"tick\":\"The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\"}},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of liquidity minted to the position range\",\"amount0\":\"How much token0 was required for the minted liquidity\",\"amount1\":\"How much token1 was required for the minted liquidity\",\"owner\":\"The owner of the position and recipient of any minted liquidity\",\"sender\":\"The address that minted the liquidity\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"params\":{\"feeProtocol0New\":\"The updated value of the token0 protocol fee\",\"feeProtocol0Old\":\"The previous value of the token0 protocol fee\",\"feeProtocol1New\":\"The updated value of the token1 protocol fee\",\"feeProtocol1Old\":\"The previous value of the token1 protocol fee\"}},\"SetRewardRate(uint144,uint32)\":{\"params\":{\"rewardPerSecondX48\":\"The new reward rate per second (in Q48)\",\"rewardRateEffectiveUntil\":\"The timestamp when the new reward rate will expire\"}},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"params\":{\"amount0\":\"The delta of the token0 balance of the pool\",\"amount1\":\"The delta of the token1 balance of the pool\",\"liquidity\":\"The liquidity of the pool after the swap\",\"recipient\":\"The address that received the output of the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of price of the pool after the swap\"}}},\"kind\":\"dev\",\"methods\":{},\"title\":\"Events emitted by a pool\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"SetRewardRate(uint144,uint32)\":{\"notice\":\"Emitted when the reward rate is changed by the owner\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains all events emitted by the pool\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":\"IElixirPoolEvents\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol":{"IElixirPoolImmutables":{"abi":[{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"factory()":"c45a0155","fee()":"ddca3f43","maxLiquidityPerTick()":"70cf754a","tickSpacing()":"d0c93a7c","token0()":"0dfe1681","token1()":"d21220a7"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"Pool state that never changes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IElixirFactory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"These parameters are fixed for a pool forever, i.e., the methods will always return the same values\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":\"IElixirPoolImmutables\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol":{"IElixirPoolOwnerActions":{"abi":[{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"uint24","name":"_fee","type":"uint24"},{"internalType":"int24","name":"_tickSpacing","type":"int24"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"collectProtocol(address,uint128,uint128)":"85b66729","initialize(address,address,uint24,int24)":"14f2705c","setFeeProtocol(uint8,uint8)":"8206a4d1","setRewardRate(uint144,uint32)":"218064e5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"_fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"_tickSpacing\",\"type\":\"int24\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"setRewardRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"initialize(address,address,uint24,int24)\":{\"params\":{\"_fee\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\",\"_tickSpacing\":\"The pool tick spacing\",\"_token0\":\"The first of the two tokens of the pool, sorted by address\",\"_token1\":\"The second of the two tokens of the pool, sorted by address\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"setRewardRate(uint144,uint32)\":{\"params\":{\"rewardPerSecondX48\":\"The new reward rate per second (in Q48)\",\"rewardRateEffectiveUntil\":\"The timestamp when the new reward rate will expire\"}}},\"title\":\"Permissioned pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"initialize(address,address,uint24,int24)\":{\"notice\":\"Initialize the pool to set immutable parameters\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"setRewardRate(uint144,uint32)\":{\"notice\":\"Set the reward rate the active liquidity receives per second\"}},\"notice\":\"Contains pool methods that may only be called by the factory owner\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":\"IElixirPoolOwnerActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol":{"IElixirPoolState":{"abi":[{"inputs":[],"name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint192","name":"rewardPerLiquidityCumulativeX64","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"positions","outputs":[{"internalType":"uint128","name":"_liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardSlot","outputs":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int16","name":"wordPosition","type":"int16"}],"name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint192","name":"rewardPerLiquidityOutsideX64","type":"uint192"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"feeGrowthGlobal0X128()":"f3058399","feeGrowthGlobal1X128()":"46141319","liquidity()":"1a686502","observations(uint256)":"252c09d7","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","rewardSlot()":"94fd4a3e","slot0()":"3850c7bd","tickBitmap(int16)":"5339c296","ticks(int24)":"f30dba93"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityCumulativeX64\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardSlot\",\"outputs\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityOutsideX64\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"feeGrowthGlobal0X128()\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128()\":{\"details\":\"This value can overflow the uint256\"},\"liquidity()\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\"},\"observations(uint256)\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"returns\":{\"blockTimestamp\":\"The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use Returns rewardPerLiquidityCumulativeX64 reward per liquidity\"}},\"positions(bytes32)\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"returns\":{\"_liquidity\":\"The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\"}},\"protocolFees()\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"rewardSlot()\":{\"details\":\"Both of the variables can be set arbitrarily by the owner. The pool does not set any restrictions on the values other than their variable types. The factory owner should relegate the setting of these variables to a reward contract that will update these variables based on a proper reward distribution logic.\",\"returns\":{\"rewardPerSecondX48\":\"The rewards per second promised to be distributed to the pool as a Q96.48 value rewardRateEffectiveUntil The timestamp when the rewardPerSecondX48 is no longer effective\"}},\"slot0()\":{\"returns\":{\"sqrtPriceX96\":\"The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\"}},\"ticks(int24)\":{\"params\":{\"tick\":\"The tick to look up\"},\"returns\":{\"liquidityGross\":\"the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\"}}},\"title\":\"Pool state that can change\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"rewardSlot()\":{\"notice\":\"The rewardSlot storage slot in the pool stores variables necessary to update Oracle.Observation.rewardPerLiquidityCumulativeX64 accumulator.\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"}},\"notice\":\"These methods compose the pool's state, and can change with any frequency including multiple times per transaction\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":\"IElixirPoolState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/FixedPoint128.sol":{"FixedPoint128":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e87d6834a4829f5edd2ebe3af828bcde292041d52c9b9dafe7150362ad5434a564736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 PUSH30 0x6834A4829F5EDD2EBE3AF828BCDE292041D52C9B9DAFE7150362AD5434A5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"216:101:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e87d6834a4829f5edd2ebe3af828bcde292041d52c9b9dafe7150362ad5434a564736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 PUSH30 0x6834A4829F5EDD2EBE3AF828BCDE292041D52C9B9DAFE7150362AD5434A5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"216:101:9:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"FixedPoint128\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/libraries/FixedPoint128.sol\":\"FixedPoint128\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x558d30194d1a7f76eb5e983633625efd87b13ac0862792a69a305ce69003ab14\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89bca54921a13c0c863c055f18b3108582491fcc091d7188b58e05786c7f2b55\",\"dweb:/ipfs/QmfS5jM1WxULWx4FNB3CJC7KAWDpMpzRgFSGV5dp8RaCJr\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/FixedPoint96.sol":{"FixedPoint96":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220af44c7a2a17170aa54b3122a49e4ce9e7cb0748ccf3449ef6e65b036f175dca864736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAF DIFFICULTY 0xC7 LOG2 LOG1 PUSH18 0x70AA54B3122A49E4CE9E7CB0748CCF3449EF PUSH15 0x65B036F175DCA864736F6C63430007 MOD STOP CALLER ","sourceMap":"251:137:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220af44c7a2a17170aa54b3122a49e4ce9e7cb0748ccf3449ef6e65b036f175dca864736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAF DIFFICULTY 0xC7 LOG2 LOG1 PUSH18 0x70AA54B3122A49E4CE9E7CB0748CCF3449EF PUSH15 0x65B036F175DCA864736F6C63430007 MOD STOP CALLER ","sourceMap":"251:137:10:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Used in SqrtPriceMath.sol\",\"kind\":\"dev\",\"methods\":{},\"title\":\"FixedPoint96\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":\"FixedPoint96\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/FullMath.sol":{"FullMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b00efbd67b260187019e08aadb4a0d21af25e6e4512b27677563da0bd22154e564736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0xE 0xFB 0xD6 PUSH28 0x260187019E08AADB4A0D21AF25E6E4512B27677563DA0BD22154E564 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"368:4879:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b00efbd67b260187019e08aadb4a0d21af25e6e4512b27677563da0bd22154e564736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0xE 0xFB 0xD6 PUSH28 0x260187019E08AADB4A0D21AF25E6E4512B27677563DA0BD22154E564 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"368:4879:11:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Handles \\\"phantom overflow\\\" i.e., allows multiplication and division where an intermediate value overflows 256 bits\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Contains 512-bit math functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/libraries/FullMath.sol\":\"FullMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/TickMath.sol":{"TickMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fdda798e6560a07d7a19d63c86fe973c68e933398c303c32001d314446722a9a64736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 REVERT 0xDA PUSH26 0x8E6560A07D7A19D63C86FE973C68E933398C303C32001D314446 PUSH19 0x2A9A64736F6C63430007060033000000000000 ","sourceMap":"319:8529:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fdda798e6560a07d7a19d63c86fe973c68e933398c303c32001d314446722a9a64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 REVERT 0xDA PUSH26 0x8E6560A07D7A19D63C86FE973C68E933398C303C32001D314446 PUSH19 0x2A9A64736F6C63430007060033000000000000 ","sourceMap":"319:8529:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MAX_SQRT_RATIO\":{\"details\":\"The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\"},\"MAX_TICK\":{\"details\":\"The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128\"},\"MIN_SQRT_RATIO\":{\"details\":\"The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\"},\"MIN_TICK\":{\"details\":\"The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128\"}},\"title\":\"Math library for computing sqrt prices from ticks and vice versa\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports prices between 2**-128 and 2**128\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/libraries/TickMath.sol\":\"TickMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]}},\"version\":1}"}},"contracts/elixir-periphery/NonfungiblePositionManager.sol":{"NonfungiblePositionManager":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH9","type":"address"},{"internalType":"address","name":"_tokenDescriptor_","type":"address"},{"internalType":"address","name":"_elixirRewarder_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"ClaimReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"DecreaseLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"IncreaseLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"claimReward","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Max","type":"uint128"},{"internalType":"uint128","name":"amount1Max","type":"uint128"}],"internalType":"struct INonfungiblePositionManager.CollectParams","name":"params","type":"tuple"}],"name":"collect","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"createAndInitializePoolIfNecessary","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.DecreaseLiquidityParams","name":"params","type":"tuple"}],"name":"decreaseLiquidity","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"forgoReward","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.IncreaseLiquidityParams","name":"params","type":"tuple"}],"name":"increaseLiquidity","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.MintParams","name":"params","type":"tuple"}],"name":"mint","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"positionReward","outputs":[{"internalType":"uint192","name":"rewardPerLiquidityInsideLastX64","type":"uint192"},{"internalType":"uint32","name":"rewardLastUpdated","type":"uint32"},{"internalType":"uint32","name":"rewardLastCollected","type":"uint32"},{"internalType":"uint256","name":"rewardOwed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"positions","outputs":[{"internalType":"uint96","name":"nonce","type":"uint96"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_elixirRewarder_","type":"address"}],"name":"updateRewardManager","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenDescriptor_","type":"address"}],"name":"updateTokenDescriptor","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:682:56","statements":[{"nodeType":"YulBlock","src":"6:3:56","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:56","statements":[{"nodeType":"YulAssignment","src":"86:22:56","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:56"},"nodeType":"YulFunctionCall","src":"95:13:56"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:56"}]},{"body":{"nodeType":"YulBlock","src":"171:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:56"},"nodeType":"YulFunctionCall","src":"173:12:56"},"nodeType":"YulExpressionStatement","src":"173:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:56"},"nodeType":"YulFunctionCall","src":"152:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:56"},"nodeType":"YulFunctionCall","src":"148:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:56"},"nodeType":"YulFunctionCall","src":"137:31:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:56"},"nodeType":"YulFunctionCall","src":"127:42:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:56"},"nodeType":"YulFunctionCall","src":"120:50:56"},"nodeType":"YulIf","src":"117:2:56"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:56","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:56","type":""}],"src":"14:179:56"},{"body":{"nodeType":"YulBlock","src":"330:350:56","statements":[{"body":{"nodeType":"YulBlock","src":"377:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"386:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"394:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"379:6:56"},"nodeType":"YulFunctionCall","src":"379:22:56"},"nodeType":"YulExpressionStatement","src":"379:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"351:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"360:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"347:3:56"},"nodeType":"YulFunctionCall","src":"347:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"372:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"343:3:56"},"nodeType":"YulFunctionCall","src":"343:33:56"},"nodeType":"YulIf","src":"340:2:56"},{"nodeType":"YulAssignment","src":"412:52:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"454:9:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"422:31:56"},"nodeType":"YulFunctionCall","src":"422:42:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"412:6:56"}]},{"nodeType":"YulAssignment","src":"473:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"519:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"530:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"515:3:56"},"nodeType":"YulFunctionCall","src":"515:18:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"483:31:56"},"nodeType":"YulFunctionCall","src":"483:51:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"473:6:56"}]},{"nodeType":"YulAssignment","src":"543:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"589:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"600:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"585:3:56"},"nodeType":"YulFunctionCall","src":"585:18:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"553:31:56"},"nodeType":"YulFunctionCall","src":"553:51:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"543:6:56"}]},{"nodeType":"YulAssignment","src":"613:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"659:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"670:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"655:3:56"},"nodeType":"YulFunctionCall","src":"655:18:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"623:31:56"},"nodeType":"YulFunctionCall","src":"623:51:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"613:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"272:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"283:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"295:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"303:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"311:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"319:6:56","type":""}],"src":"198:482:56"}]},"contents":"{\n    { }\n    function abi_decode_t_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_t_address_fromMemory(headStart)\n        value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n        value2 := abi_decode_t_address_fromMemory(add(headStart, 64))\n        value3 := abi_decode_t_address_fromMemory(add(headStart, 96))\n    }\n}","id":56,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"610100604052600d80546001600160b01b0319166001176001600160b01b0316600160b01b1790553480156200003457600080fd5b50604051620063a1380380620063a18339810160408190526200005791620002fb565b83836040518060400160405280601481526020017f456c6978697220506f736974696f6e73204e465400000000000000000000000081525060405180604001604052806008815260200167495849522d504f5360c01b815250604051806040016040528060018152602001603160f81b8152508282620000e46301ffc9a760e01b620001ad60201b60201c565b8151620000f990600690602085019062000232565b5080516200010f90600790602084019062000232565b50620001226380ac58cd60e01b620001ad565b62000134635b5e139f60e01b620001ad565b6200014663780e9d6360e01b620001ad565b50508251602093840120608052805192019190912060a052506001600160601b0319606092831b811660c052911b1660e052600e80546001600160a01b039384166001600160a01b031991821617909155600f805492909316911617905550620003579050565b6001600160e01b031980821614156200020d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200026a5760008555620002b5565b82601f106200028557805160ff1916838001178555620002b5565b82800160010185558215620002b5579182015b82811115620002b557825182559160200191906001019062000298565b50620002c3929150620002c7565b5090565b5b80821115620002c35760008155600101620002c8565b80516001600160a01b0381168114620002f657600080fd5b919050565b6000806000806080858703121562000311578384fd5b6200031c85620002de565b93506200032c60208601620002de565b92506200033c60408601620002de565b91506200034c60608601620002de565b905092959194509250565b60805160a05160c05160601c60e05160601c615fc8620003d96000398061021052806116a3528061178e52806118165280613745528061378b52806137ff525080610a1c5280610d3d5280610e04528061102452806129f15280612c595280612e6d5280613221528061392b5250806114b75250806114965250615fc86000f3fe6080604052600436106102005760003560e01c80634f6ccce7116101145780634f6ccce7146104b85780636352211e146104d85780636c0360eb146104f857806370a082311461050d57806375e39cec1461052d5780637ac2ff7b1461055d578063883164561461057057806395d89b411461059357806397f12a83146105a857806399fbab88146105bb578063a22cb465146105f3578063a4a78f0c14610613578063ac9650d814610626578063b88d4fde14610646578063c2e3140a14610666578063c45a015514610679578063c87b56dd1461068e578063df2ab5bb146106ae578063e70eb392146106c1578063e985e9c5146106d4578063f3995c67146106f4578063fc6f78651461070757610270565b806301ffc9a714610275578063050eb2eb146102ab57806306fdde03146102be578063081812fc146102e0578063095ea7b31461030d5780630c49ccbe1461032d57806312210e8a1461034e57806313ead562146103565780631507a8f41461036957806318160ddd14610389578063219f5d17146103ab57806323b872dd146103cd57806329048e7b146103ed5780632f745c591461040057806330adf81f146104205780633644e5151461043557806342842e0e1461044a57806342966c681461046a5780634659a4941461047d57806349404b7c146104905780634aa4a4fc146104a357610270565b3661027057336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461026e576040805162461bcd60e51b81526020600482015260096024820152684e6f7420574554483960b81b604482015290519081900360640190fd5b005b600080fd5b34801561028157600080fd5b50610295610290366004615406565b61071a565b6040516102a291906159f1565b60405180910390f35b61026e6102b93660046150f5565b61073d565b3480156102ca57600080fd5b506102d3610767565b6040516102a29190615a58565b3480156102ec57600080fd5b506103006102fb366004615769565b6107fd565b6040516102a29190615892565b34801561031957600080fd5b5061026e6103283660046152d1565b610850565b61034061033b366004615535565b610926565b6040516102a2929190615bce565b61026e610d11565b610300610364366004615165565b610d1b565b34801561037557600080fd5b5061026e6103843660046157c8565b61100f565b34801561039557600080fd5b5061039e61108d565b6040516102a291906159fc565b6103be6103b9366004615546565b61109e565b6040516102a293929190615b5c565b3480156103d957600080fd5b5061026e6103e83660046151be565b611379565b61026e6103fb366004615769565b6113d0565b34801561040c57600080fd5b5061039e61041b3660046152d1565b611422565b34801561042c57600080fd5b5061039e61144d565b34801561044157600080fd5b5061039e611471565b34801561045657600080fd5b5061026e6104653660046151be565b61152f565b61026e610478366004615769565b61154a565b61026e61048b36600461533d565b611605565b61026e61049e366004615781565b61169f565b3480156104af57600080fd5b50610300611814565b3480156104c457600080fd5b5061039e6104d3366004615769565b611838565b3480156104e457600080fd5b506103006104f3366004615769565b61184e565b34801561050457600080fd5b506102d3611876565b34801561051957600080fd5b5061039e6105283660046150f5565b61187b565b34801561053957600080fd5b5061054d610548366004615769565b6118e3565b6040516102a29493929190615b7d565b61026e61056b36600461533d565b611a30565b61058361057e366004615601565b611dc0565b6040516102a29493929190615baa565b34801561059f57600080fd5b506102d3612349565b61026e6105b63660046150f5565b6123aa565b3480156105c757600080fd5b506105db6105d6366004615769565b6123d4565b6040516102a29c9b9a99989796959493929190615bdc565b3480156105ff57600080fd5b5061026e61060e3660046152a4565b612629565b61026e61062136600461533d565b61272a565b610639610634366004615398565b6127c3565b6040516102a29190615991565b34801561065257600080fd5b5061026e6106613660046151fe565b612902565b61026e61067436600461533d565b612960565b34801561068557600080fd5b506103006129ef565b34801561069a57600080fd5b506102d36106a9366004615769565b612a13565b61026e6106bc3660046152fc565b612aad565b61026e6106cf366004615781565b612b85565b3480156106e057600080fd5b506102956106ef36600461512d565b612cd1565b61026e61070236600461533d565b612cff565b61034061071536600461551e565b612d71565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b61074561321f565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107f35780601f106107c8576101008083540402835291602001916107f3565b820191906000526020600020905b8154815290600101906020018083116107d657829003601f168201915b5050505050905090565b6000610808826132cd565b61082d5760405162461bcd60e51b815260040161082490615a91565b60405180910390fd5b506000908152600c6020526040902054600160601b90046001600160a01b031690565b600061085b8261184e565b9050806001600160a01b0316836001600160a01b031614156108ae5760405162461bcd60e51b8152600401808060200182810382526021815260200180615f416021913960400191505060405180910390fd5b806001600160a01b03166108c06132da565b6001600160a01b031614806108dc57506108dc816106ef6132da565b6109175760405162461bcd60e51b8152600401808060200182810382526038815260200180615e4b6038913960400191505060405180910390fd5b61092183836132de565b505050565b600080823561093481613354565b83608001356109428161337d565b60006109546040870160208801615613565b6001600160801b03161161096757600080fd5b84356000908152600c602090815260409182902060018101549092600160801b9091046001600160801b0316916109a2918901908901615613565b6001600160801b0316816001600160801b031610156109c057600080fd5b6001828101546001600160501b03166000908152600b60209081526040808320815160608101835281546001600160a01b039081168252919095015490811692850192909252600160a01b90910462ffffff1690830152610a417f0000000000000000000000000000000000000000000000000000000000000000836133c8565b9050610a4d84826134a7565b60018401546001600160a01b0382169063a34123a790600160501b8104600290810b91600160681b9004900b610a8960408e0160208f01615613565b6040518463ffffffff1660e01b8152600401610aa793929190615a32565b6040805180830381600087803b158015610ac057600080fd5b505af1158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af891906157a5565b909850965060408901358810801590610b15575088606001358710155b610b315760405162461bcd60e51b815260040161082490615ac4565b6001840154600090610b5a903090600160501b8104600290810b91600160681b9004900b61360c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610b8b91906159fc565b60a06040518083038186803b158015610ba357600080fd5b505afa158015610bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdb919061565d565b50509250925050610c0087600201548303876001600160801b0316600160801b613661565b6004880180546001600160801b03198116928e016001600160801b039182160181169290921790556003880154610c4191908303908816600160801b613661565b6004880180546001600160801b03808216938e01600160801b9283900482160116029190911790556002870182905560038701819055610c8760408d0160208e01615613565b86038760010160106101000a8154816001600160801b0302191690836001600160801b031602179055508b600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48d6020016020810190610cea9190615613565b8d8d604051610cfb93929190615b5c565b60405180910390a2505050505050505050915091565b610d19613710565b565b6000836001600160a01b0316856001600160a01b031610610d3b57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b158015610dc657600080fd5b505afa158015610dda573d6000803e3d6000fd5b505050506040513d6020811015610df057600080fd5b505190506001600160a01b038116610f26577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b505050506040513d6020811015610eb957600080fd5b50516040805163f637731d60e01b81526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050611007565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610f6157600080fd5b505afa158015610f75573d6000803e3d6000fd5b505050506040513d60e0811015610f8b57600080fd5b505190506001600160a01b03811661100557816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610fec57600080fd5b505af1158015611000573d6000803e3d6000fd5b505050505b505b949350505050565b600061101d82840184615557565b905061104d7f00000000000000000000000000000000000000000000000000000000000000008260000151613720565b50841561106857805151602082015161106891903388613743565b83156110865761108681600001516020015182602001513387613743565b5050505050565b600061109960026138d3565b905090565b60008060008360a001356110b18161337d565b84356000908152600c602090815260408083206001808201546001600160501b0381168652600b855283862084516060808201875282546001600160a01b039081168352929094015480831682890190815262ffffff600160a01b9092048216838901908152885161014081018a528451861681529151909416818a0152925116828701523082850152600160501b8304600290810b810b608080850191909152600160681b909404810b900b60a0830152958c013560c0820152938b013560e0850152908a01356101008401528901356101208301529290611193906138de565b6001870154939a50919850965091506000906111c6903090600160501b8104600290810b91600160681b9004900b61360c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016111f791906159fc565b60a06040518083038186803b15801561120f57600080fd5b505afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611247919061565d565b50509250925050611283866002015483038760010160109054906101000a90046001600160801b03166001600160801b0316600160801b613661565b6004870180546001600160801b0380821690930183166001600160801b0319909116179055600387015460018801546112ca9291840391600160801b918290041690613661565b6004870180546001600160801b03600160801b8083048216909401811690930292169190911790556112fc86856134a7565b60028601829055600386018190556001860180546001600160801b03600160801b80830482168e0182160291161790556040518b35907f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f90611363908d908d908d90615b5c565b60405180910390a2505050505050509193909250565b61138a6113846132da565b82613b19565b6113c55760405162461bcd60e51b8152600401808060200182810382526031815260200180615f626031913960400191505060405180910390fd5b610921838383613bb5565b806113da81613354565b6000828152600c602052604090206113f0613cef565b60058201805463ffffffff92909216600160e01b026001600160e01b0390921691909117905560006006909101555050565b6001600160a01b03821660009081526001602052604081206114449083613d0b565b90505b92915050565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006114de613d17565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b61092183838360405180602001604052806000815250612902565b8061155481613354565b6000828152600c602052604090206001810154600160801b90046001600160801b031615801561158f575060048101546001600160801b0316155b80156115ad57506004810154600160801b90046001600160801b0316155b80156115bb57506006810154155b6115c457600080fd5b6000838152600c6020526040812081815560018101829055600281018290556003810182905560048101829055600581018290556006015561092183613d1b565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561167f57600080fd5b505af1158015611693573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561170e57600080fd5b505afa158015611722573d6000803e3d6000fd5b505050506040513d602081101561173857600080fd5b5051905082811015611786576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e7420574554483960701b604482015290519081900360640190fd5b8015610921577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156117f257600080fd5b505af1158015611806573d6000803e3d6000fd5b505050506109218282613dd6565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080611846600284613ec5565b509392505050565b600061144782604051806060016040528060298152602001615ead6029913960029190613ee3565b606090565b60006001600160a01b0382166118c25760405162461bcd60e51b815260040180806020018281038252602a815260200180615e83602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600160205260409020611447906138d3565b6000818152600c6020908152604080832081516101c08101835281546001600160601b03811682526001600160a01b03600160601b909104169381019390935260018101546001600160501b038116928401839052600160501b8104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e08601526004830154808216610100870152919091041661012084015260058101546001600160c01b03811661014085015263ffffffff600160c01b82048116610160860152600160e01b90910416610180840152600601546101a083015282918291829190611a085760405162461bcd60e51b815260040161082490615af2565b806101400151816101600151826101800151836101a001519450945094509450509193509193565b83611a3a8161337d565b6000611a44611471565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad8989611a7081613ef0565b604080516020808201969096526001600160a01b03909416848201526060840192909252608083015260a08083018b90528151808403909101815260c08301825280519084012061190160f01b60e084015260e283019490945261010280830194909452805180830390940184526101229091019052815191012090506000611af88861184e565b9050806001600160a01b0316896001600160a01b03161415611b61576040805162461bcd60e51b815260206004820152601f60248201527f4552433732315065726d69743a20617070726f76616c20746f206f776e657200604482015290519081900360640190fd5b611b6a81613f25565b15611cd2576040805160208082018890528183018790526001600160f81b031960f88a901b1660608301528251604181840301815260618301808552630b135d3f60e11b90526065830186815260858401948552815160a585015281516001600160a01b03871695631626ba7e958995919260c59091019185019080838360005b83811015611c03578181015183820152602001611beb565b50505050905090810190601f168015611c305780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015611c4e57600080fd5b505afa158015611c62573d6000803e3d6000fd5b505050506040513d6020811015611c7857600080fd5b50516001600160e01b031916630b135d3f60e11b14611ccd576040805162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611dab565b600060018388888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611d2e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611d645750816001600160a01b0316816001600160a01b0316145b611da9576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b505b611db589896132de565b505050505050505050565b600080600080846101400135611dd58161337d565b604080516101408101909152600090611ea19080611df660208b018b6150f5565b6001600160a01b03168152602001896020016020810190611e1791906150f5565b6001600160a01b03168152602001611e3560608b0160408c0161574f565b62ffffff168152306020820152604001611e5560808b0160608c0161542e565b60020b8152602001611e6d60a08b0160808c0161542e565b60020b81526020018960a0013581526020018960c0013581526020018960e0013581526020018961010001358152506138de565b92975090955093509050611eee611ec061014089016101208a016150f5565b600d80546001600160b01b0319811660016001600160b01b0392831690810190921617909155975087613f2b565b6000611f1930611f0460808b0160608c0161542e565b611f1460a08c0160808d0161542e565b61360c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401611f4a91906159fc565b60a06040518083038186803b158015611f6257600080fd5b505afa158015611f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9a919061565d565b5050925092505060006120138560405180606001604052808e6000016020810190611fc591906150f5565b6001600160a01b031681526020018e6020016020810190611fe691906150f5565b6001600160a01b031681526020018e6040016020810190612007919061574f565b62ffffff169052614046565b9050604051806101c0016040528060006001600160601b0316815260200160006001600160a01b03168152602001826001600160501b031681526020018c6060016020810190612063919061542e565b60020b815260200161207b60a08e0160808f0161542e565b60020b81526020018a6001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160c01b03168152602001600063ffffffff168152602001600063ffffffff1681526020016000815250600c60008c815260200190815260200160002060008201518160000160006101000a8154816001600160601b0302191690836001600160601b03160217905550602082015181600001600c6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160501b0302191690836001600160501b03160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055506101408201518160050160006101000a8154816001600160c01b0302191690836001600160c01b031602179055506101608201518160050160186101000a81548163ffffffff021916908363ffffffff16021790555061018082015181600501601c6101000a81548163ffffffff021916908363ffffffff1602179055506101a08201518160060155905050897f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f8a8a8a60405161233493929190615b5c565b60405180910390a25050505050509193509193565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107f35780601f106107c8576101008083540402835291602001916107f3565b6123b261321f565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600c6020908152604080832081516101c08101835281546001600160601b03811682526001600160a01b03600160601b909104169381019390935260018101546001600160501b038116928401839052600160501b8104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e08601526004830154808216610100870152919091041661012084015260058101546001600160c01b03811661014085015263ffffffff600160c01b82048116610160860152600160e01b90910416610180840152600601546101a083015282918291829182918291829182918291829182918291906125095760405162461bcd60e51b815260040161082490615af2565b6000600b600083604001516001600160501b03166001600160501b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681525050905081600001518260200151826000015183602001518460400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001519d509d509d509d509d509d509d509d509d509d509d509d50505091939597999b5091939597999b565b6126316132da565b6001600160a01b0316826001600160a01b03161415612693576040805162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015290519081900360640190fd5b80600560006126a06132da565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556126e46132da565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561277b57600080fd5b505afa15801561278f573d6000803e3d6000fd5b505050506040513d60208110156127a557600080fd5b505110156127bb576127bb868686868686611605565b505050505050565b6060816001600160401b03811180156127db57600080fd5b5060405190808252806020026020018201604052801561280f57816020015b60608152602001906001900390816127fa5790505b50905060005b828110156128fb576000803086868581811061282d57fe5b905060200281019061283f9190615c76565b60405161284d929190615882565b600060405180830381855af49150503d8060008114612888576040519150601f19603f3d011682016040523d82523d6000602084013e61288d565b606091505b5091509150816128d9576044815110156128a657600080fd5b600481019050808060200190518101906128c091906154b5565b60405162461bcd60e51b81526004016108249190615a58565b808484815181106128e657fe5b60209081029190910101525050600101612815565b5092915050565b61291361290d6132da565b83613b19565b61294e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f626031913960400191505060405180910390fd5b61295a84848484614125565b50505050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156129af57600080fd5b505afa1580156129c3573d6000803e3d6000fd5b505050506040513d60208110156129d957600080fd5b505110156127bb576127bb868686868686612cff565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060612a1e826132cd565b612a2757600080fd5b600e5460405163e9dc637560e01b81526001600160a01b039091169063e9dc637590612a599030908690600401615a05565b60006040518083038186803b158015612a7157600080fd5b505afa158015612a85573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261144791908101906154b5565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612afc57600080fd5b505afa158015612b10573d6000803e3d6000fd5b505050506040513d6020811015612b2657600080fd5b5051905082811015612b74576040805162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a103a37b5b2b760711b604482015290519081900360640190fd5b801561295a5761295a848383614177565b81612b8f81613354565b6001600160a01b038216612ba257600080fd5b6000838152600c6020526040812060068101549091612bbf613cef565b6000600685018190556005850180546001600160e01b0316600160e01b63ffffffff851602179055600f546001808701546001600160501b03168352600b6020908152604093849020845160608101865281546001600160a01b039081168252919093015480821692840192909252600160a01b90910462ffffff169382019390935292935016906332d5eeaf90879085908a90612c7e907f0000000000000000000000000000000000000000000000000000000000000000906133c8565b600589015460405160e087901b6001600160e01b0319168152612cb79594939291600160c01b900463ffffffff16908990600401615952565b600060405180830381600087803b15801561167f57600080fd5b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561167f57600080fd5b6000808235612d7f81613354565b6000612d916060860160408701615613565b6001600160801b03161180612dbe57506000612db36080860160608701615613565b6001600160801b0316115b612dc757600080fd5b600080612dda60408701602088016150f5565b6001600160a01b031614612dfd57612df860408601602087016150f5565b612dff565b305b85356000908152600c602090815260408083206001808201546001600160501b03168552600b8452828520835160608101855281546001600160a01b039081168252919092015490811694820194909452600160a01b90930462ffffff169183019190915292935090612e927f0000000000000000000000000000000000000000000000000000000000000000836133c8565b600484015460018501549192506001600160801b0380821692600160801b928390048216929004161561308857600185015460405163a34123a760e01b81526001600160a01b0385169163a34123a791612f0991600160501b8104600290810b92600160681b909204900b90600090600401615a32565b6040805180830381600087803b158015612f2257600080fd5b505af1158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a91906157a5565b5050600185015460009081906001600160a01b0386169063514ea4bf90612f98903090600160501b8104600290810b91600160681b9004900b61360c565b6040518263ffffffff1660e01b8152600401612fb491906159fc565b60a06040518083038186803b158015612fcc57600080fd5b505afa158015612fe0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613004919061565d565b50509250925050613040876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613661565b84019350613079876003015482038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613661565b60028801929092556003870155015b6000806001600160801b0384166130a560608e0160408f01615613565b6001600160801b0316116130c8576130c360608d0160408e01615613565b6130ca565b835b836001600160801b03168d60600160208101906130e79190615613565b6001600160801b03161161310a5761310560808e0160608f01615613565b61310c565b835b60018901546040516309e3d67b60e31b81529294509092506001600160a01b03871691634f1eb3d89161315f918c91600160501b8104600290810b92600160681b909204900b90889088906004016158eb565b6040805180830381600087803b15801561317857600080fd5b505af115801561318c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b0919061562f565b6004890180546001600160801b03196001600160801b03918216600160801b878a0384160217168689038216179091556040519281169d50169a508c35907f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f0190610cfb908b9086908690615928565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561327857600080fd5b505afa15801561328c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b09190615111565b6001600160a01b0316336001600160a01b031614610d1957600080fd5b60006114476002836142be565b3390565b6000818152600c6020526040902080546001600160601b0316600160601b6001600160a01b03851690810291909117909155819061331b8261184e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61335e3382613b19565b61337a5760405162461bcd60e51b815260040161082490615a6b565b50565b8042111561337a576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b0316106133f057600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6001600160601b03191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b60018201546040516351c403f960e11b81526000916001600160a01b0384169163a38807f2916134f091600160501b8204600290810b92600160681b9004900b90600401615a1e565b60806040518083038186803b15801561350857600080fd5b505afa15801561351c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613540919061544a565b60058701549094506001600160c01b0380861691161092506135659150505750613608565b6005830154600160c01b900463ffffffff16156135bf57600583015460018401546135b3916001600160c01b0390811684031690600160801b90046001600160801b0316600160401b613661565b60068401805490910190555b6005830180546001600160c01b0319166001600160c01b0383161790556135e4613cef565b8360050160186101000a81548163ffffffff021916908363ffffffff160217905550505b5050565b604080516001600160601b0319606086901b16602080830191909152600285810b60e890811b60348501529085900b901b60378301528251601a818403018152603a90920190925280519101205b9392505050565b6000808060001985870986860292508281109083900303905080613697576000841161368c57600080fd5b50829004905061365a565b8084116136a357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b4715610d1957610d193347613dd6565b600061372c83836133c8565b9050336001600160a01b0382161461144757600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156137845750804710155b156138a6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156137e457600080fd5b505af11580156137f8573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561387457600080fd5b505af1158015613888573d6000803e3d6000fd5b505050506040513d602081101561389e57600080fd5b5061295a9050565b6001600160a01b0383163014156138c7576138c2848383614177565b61295a565b61295a848484846142ca565b60006114478261441a565b6000806000806000604051806060016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001876040015162ffffff1681525090506139507f0000000000000000000000000000000000000000000000000000000000000000826133c8565b91506000826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561398d57600080fd5b505afa1580156139a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c591906156be565b505050505050905060006139dc886080015161441e565b905060006139ed8960a0015161441e565b9050613a048383838c60c001518d60e00151614745565b9750505050816001600160a01b0316633c8a7d8d876060015188608001518960a00151896040518060400160405280888152602001336001600160a01b0316815250604051602001613a569190615b1c565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401613a859594939291906158a6565b6040805180830381600087803b158015613a9e57600080fd5b505af1158015613ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad691906157a5565b61010088015191955093508410801590613af557508561012001518310155b613b115760405162461bcd60e51b815260040161082490615ac4565b509193509193565b6000613b24826132cd565b613b5f5760405162461bcd60e51b815260040180806020018281038252602c815260200180615e1f602c913960400191505060405180910390fd5b6000613b6a8361184e565b9050806001600160a01b0316846001600160a01b03161480613ba55750836001600160a01b0316613b9a846107fd565b6001600160a01b0316145b8061100757506110078185612cd1565b826001600160a01b0316613bc88261184e565b6001600160a01b031614613c0d5760405162461bcd60e51b8152600401808060200182810382526029815260200180615ef86029913960400191505060405180910390fd5b6001600160a01b038216613c525760405162461bcd60e51b8152600401808060200182810382526024815260200180615dd56024913960400191505060405180910390fd5b613c5d838383610921565b613c686000826132de565b6001600160a01b0383166000908152600160205260409020613c8a9082614809565b506001600160a01b0382166000908152600160205260409020613cad9082614815565b50613cba60028284614821565b5080826001600160a01b0316846001600160a01b0316600080516020615f2183398151915260405160405180910390a4505050565b600063ffffffff4211613d025742611099565b5063ffffffff90565b60006114448383614837565b4690565b6000613d268261184e565b9050613d3481600084610921565b613d3f6000836132de565b6000828152600860205260409020546002600019610100600184161502019091160415613d7d576000828152600860205260408120613d7d9161506d565b6001600160a01b0381166000908152600160205260409020613d9f9083614809565b50613dab60028361489b565b5060405182906000906001600160a01b03841690600080516020615f21833981519152908390a45050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613e225780518252601f199092019160209182019101613e03565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613e84576040519150601f19603f3d011682016040523d82523d6000602084013e613e89565b606091505b5050905080610921576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b6000808080613ed486866148a7565b909450925050505b9250929050565b6000611007848484614922565b6000908152600c6020526040902080546001600160601b0319811660016001600160601b039283169081019092161790915590565b3b151590565b6001600160a01b038216613f86576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613f8f816132cd565b15613fe0576040805162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015290519081900360640190fd5b613fec60008383610921565b6001600160a01b038216600090815260016020526040902061400e9082614815565b5061401b60028284614821565b5060405181906001600160a01b03841690600090600080516020615f21833981519152908290a45050565b6001600160a01b0382166000908152600a60205260409020546001600160501b0316806114475750600d805460016001600160501b03600160b01b8084048216838101909216026001600160b01b03909316929092179092556001600160a01b038085166000908152600a6020908152604080832080546001600160501b03191686179055848352600b825291829020865181549085166001600160a01b031991821617825591870151950180549287015162ffffff16600160a01b0262ffffff60a01b19969094169290911691909117939093161790915592915050565b614130848484613bb5565b61413c848484846149ec565b61295a5760405162461bcd60e51b8152600401808060200182810382526032815260200180615da36032913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106141f35780518252601f1990920191602091820191016141d4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614255576040519150601f19603f3d011682016040523d82523d6000602084013e61425a565b606091505b5091509150818015614288575080511580614288575080806020019051602081101561428557600080fd5b50515b611086576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b60006114448383614b54565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000948594938a169392918291908083835b6020831061434e5780518252601f19909201916020918201910161432f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146143b0576040519150601f19603f3d011682016040523d82523d6000602084013e6143b5565b606091505b50915091508180156143e35750805115806143e357508080602001905160208110156143e057600080fd5b50515b6127bb576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b5490565b60008060008360020b12614435578260020b61443d565b8260020b6000035b9050620d89e881111561447b576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661448f57600160801b6144a1565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b0316905060028216156144cb576ffff97272373d413259a46990580e213a0260801c5b60048216156144ea576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614509576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614528576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614547576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614566576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614585576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156145a5576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156145c5576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156145e5576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614605576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614625576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614645576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614665576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614685576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156146a6576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156146c6576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156146e5576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614702576b048a170391f7dc42444e8fa20260801c5b60008460020b131561471d57806000198161471957fe5b0490505b600160201b810615614730576001614733565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b03161115614765579293925b846001600160a01b0316866001600160a01b03161161479057614789858585614b6c565b9050614800565b836001600160a01b0316866001600160a01b031610156147f25760006147b7878686614b6c565b905060006147c6878986614bcf565b9050806001600160801b0316826001600160801b0316106147e757806147e9565b815b92505050614800565b6147fd858584614bcf565b90505b95945050505050565b60006114448383614c0c565b60006114448383614cd2565b600061100784846001600160a01b038516614d1c565b815460009082106148795760405162461bcd60e51b8152600401808060200182810382526022815260200180615d816022913960400191505060405180910390fd5b82600001828154811061488857fe5b9060005260206000200154905092915050565b60006114448383614db3565b8154600090819083106148eb5760405162461bcd60e51b8152600401808060200182810382526022815260200180615ed66022913960400191505060405180910390fd5b60008460000184815481106148fc57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816149bd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561498257818101518382015260200161496a565b50505050905090810190601f1680156149af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106149d057fe5b9060005260206000209060020201600101549150509392505050565b6000614a00846001600160a01b0316613f25565b614a0c57506001611007565b6000614b1a630a85bd0160e11b614a216132da565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614a88578181015183820152602001614a70565b50505050905090810190601f168015614ab55780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001615da3603291396001600160a01b0388169190614e87565b90506000818060200190516020811015614b3357600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6000826001600160a01b0316846001600160a01b03161115614b8c579192915b6000614baf856001600160a01b0316856001600160a01b0316600160601b613661565b9050614800614bca84838888036001600160a01b0316613661565b614e96565b6000826001600160a01b0316846001600160a01b03161115614bef579192915b611007614bca83600160601b8787036001600160a01b0316613661565b60008181526001830160205260408120548015614cc85783546000198083019190810190600090879083908110614c3f57fe5b9060005260206000200154905080876000018481548110614c5c57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614c8c57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611447565b6000915050611447565b6000614cde8383614b54565b614d1457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611447565b506000611447565b600082815260018401602052604081205480614d8157505060408051808201825283815260208082018481528654600181810189556000898152848120955160029093029095019182559151908201558654868452818801909252929091205561365a565b82856000016001830381548110614d9457fe5b906000526020600020906002020160010181905550600091505061365a565b60008181526001830160205260408120548015614cc85783546000198083019190810190600090879083908110614de657fe5b9060005260206000209060020201905080876000018481548110614e0657fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614e4557fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506114479350505050565b60606110078484600085614eac565b806001600160801b038116811461073857600080fd5b606082471015614eed5760405162461bcd60e51b8152600401808060200182810382526026815260200180615df96026913960400191505060405180910390fd5b614ef685613f25565b614f47576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614f855780518252601f199092019160209182019101614f66565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fe7576040519150601f19603f3d011682016040523d82523d6000602084013e614fec565b606091505b5091509150614ffc828286615007565b979650505050505050565b6060831561501657508161365a565b8251156150265782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561498257818101518382015260200161496a565b50805460018160011615610100020316600290046000825580601f10615093575061337a565b601f01602090049060005260206000209081019061337a91905b808211156150c157600081556001016150ad565b5090565b803561073881615d2a565b805161ffff8116811461073857600080fd5b803562ffffff8116811461073857600080fd5b600060208284031215615106578081fd5b813561365a81615d2a565b600060208284031215615122578081fd5b815161365a81615d2a565b6000806040838503121561513f578081fd5b823561514a81615d2a565b9150602083013561515a81615d2a565b809150509250929050565b6000806000806080858703121561517a578182fd5b843561518581615d2a565b9350602085013561519581615d2a565b92506151a3604086016150e2565b915060608501356151b381615d2a565b939692955090935050565b6000806000606084860312156151d2578081fd5b83356151dd81615d2a565b925060208401356151ed81615d2a565b929592945050506040919091013590565b60008060008060808587031215615213578182fd5b843561521e81615d2a565b9350602085013561522e81615d2a565b92506040850135915060608501356001600160401b0381111561524f578182fd5b8501601f8101871361525f578182fd5b803561527261526d82615cdd565b615cba565b818152886020838501011115615286578384fd5b81602084016020830137908101602001929092525092959194509250565b600080604083850312156152b6578182fd5b82356152c181615d2a565b9150602083013561515a81615d3f565b600080604083850312156152e3578182fd5b82356152ee81615d2a565b946020939093013593505050565b600080600060608486031215615310578081fd5b833561531b81615d2a565b925060208401359150604084013561533281615d2a565b809150509250925092565b60008060008060008060c08789031215615355578384fd5b863561536081615d2a565b95506020870135945060408701359350606087013561537e81615d71565b9598949750929560808101359460a0909101359350915050565b600080602083850312156153aa578182fd5b82356001600160401b03808211156153c0578384fd5b818501915085601f8301126153d3578384fd5b8135818111156153e1578485fd5b86602080830285010111156153f4578485fd5b60209290920196919550909350505050565b600060208284031215615417578081fd5b81356001600160e01b03198116811461365a578182fd5b60006020828403121561543f578081fd5b813561365a81615d4d565b6000806000806080858703121561545f578182fd5b84518060060b811461546f578283fd5b602086015190945061548081615d2a565b604086015190935063ffffffff81168114615499578283fd5b60608601519092506001600160c01b03811681146151b3578182fd5b6000602082840312156154c6578081fd5b81516001600160401b038111156154db578182fd5b8201601f810184136154eb578182fd5b80516154f961526d82615cdd565b81815285602083850101111561550d578384fd5b614800826020830160208601615cfe565b60006080828403121561552f578081fd5b50919050565b600060a0828403121561552f578081fd5b600060c0828403121561552f578081fd5b60008183036080811215615569578182fd5b604051604081016001600160401b03828210818311171561558657fe5b816040526060841215615597578485fd5b60a08301935081841081851117156155ab57fe5b5082604052843592506155bd83615d2a565b9182526020840135916155cf83615d2a565b8260608301526155e1604086016150e2565b608083015281526155f4606085016150c5565b6020820152949350505050565b6000610160828403121561552f578081fd5b600060208284031215615624578081fd5b813561365a81615d5c565b60008060408385031215615641578182fd5b825161564c81615d5c565b602084015190925061515a81615d5c565b600080600080600060a08688031215615674578283fd5b855161567f81615d5c565b809550506020860151935060408601519250606086015161569f81615d5c565b60808701519092506156b081615d5c565b809150509295509295909350565b600080600080600080600060e0888a0312156156d8578485fd5b87516156e381615d2a565b60208901519097506156f481615d4d565b9550615702604089016150d0565b9450615710606089016150d0565b935061571e608089016150d0565b925060a088015161572e81615d71565b60c089015190925061573f81615d3f565b8091505092959891949750929550565b600060208284031215615760578081fd5b611444826150e2565b60006020828403121561577a578081fd5b5035919050565b60008060408385031215615793578182fd5b82359150602083013561515a81615d2a565b600080604083850312156157b7578182fd5b505080516020909101519092909150565b600080600080606085870312156157dd578182fd5b843593506020850135925060408501356001600160401b0380821115615801578384fd5b818701915087601f830112615814578384fd5b813581811115615822578485fd5b886020828501011115615833578485fd5b95989497505060200194505050565b6000815180845261585a816020860160208601615cfe565b601f01601f19169290920160200192915050565b60020b9052565b6001600160801b03169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b0386168152600285810b602083015284900b60408201526001600160801b038316606082015260a060808201819052600090614ffc90830184615842565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039390931683526001600160801b03918216602084015216604082015260600190565b6001600160a01b039687168152602081019590955260408501939093529316606083015263ffffffff928316608083015290911660a082015260c00190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156159e457603f198886030184526159d2858351615842565b945092850192908501906001016159b6565b5092979650505050505050565b901515815260200190565b90815260200190565b6001600160a01b03929092168252602082015260400190565b600292830b8152910b602082015260400190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b6000602082526114446020830184615842565b6020808252600c908201526b139bdd08185c1c1c9bdd995960a21b604082015260600190565b60208082526019908201527822a9219b99189d103737b732bc34b9ba32b73a103a37b5b2b760391b604082015260600190565b602080825260149082015273507269636520736c69707061676520636865636b60601b604082015260600190565b60208082526010908201526f125b9d985b1a59081d1bdad95b88125160821b604082015260600190565b815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b6001600160801b039390931683526020830191909152604082015260600190565b6001600160c01b0394909416845263ffffffff928316602085015291166040830152606082015260800190565b9384526001600160801b039290921660208401526040830152606082015260800190565b918252602082015260400190565b6001600160601b038d1681526001600160a01b038c811660208301528b811660408301528a16606082015262ffffff89166080820152600288900b60a08201526101808101615c2e60c083018961586e565b615c3b60e0830188615875565b8561010083015284610120830152615c57610140830185615875565b615c65610160830184615875565b9d9c50505050505050505050505050565b6000808335601e19843603018112615c8c578283fd5b8301803591506001600160401b03821115615ca5578283fd5b602001915036819003821315613edc57600080fd5b6040518181016001600160401b0381118282101715615cd557fe5b604052919050565b60006001600160401b03821115615cf057fe5b50601f01601f191660200190565b60005b83811015615d19578181015183820152602001615d01565b8381111561295a5750506000910152565b6001600160a01b038116811461337a57600080fd5b801515811461337a57600080fd5b8060020b811461337a57600080fd5b6001600160801b038116811461337a57600080fd5b60ff8116811461337a57600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a26469706673582212207b1a07a33e639444dfba3ec3e54d047cdfc998dd1da87d8f46be03e604fa5c5a64736f6c63430007060033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND PUSH1 0x1 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x63A1 CODESIZE SUB DUP1 PUSH3 0x63A1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x57 SWAP2 PUSH3 0x2FB JUMP JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C6978697220506F736974696F6E73204E4654000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 ADD PUSH8 0x495849522D504F53 PUSH1 0xC0 SHL DUP2 MSTORE POP 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 DUP3 DUP3 PUSH3 0xE4 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH3 0x1AD PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 MLOAD PUSH3 0xF9 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x232 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x10F SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x232 JUMP JUMPDEST POP PUSH3 0x122 PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH3 0x1AD JUMP JUMPDEST PUSH3 0x134 PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH3 0x1AD JUMP JUMPDEST PUSH3 0x146 PUSH4 0x780E9D63 PUSH1 0xE0 SHL PUSH3 0x1AD JUMP JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 SWAP4 DUP5 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xA0 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xC0 MSTORE SWAP2 SHL AND PUSH1 0xE0 MSTORE PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0xF DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP PUSH3 0x357 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x20D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x26A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x2B5 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x285 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2B5 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2B5 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2B5 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x298 JUMP JUMPDEST POP PUSH3 0x2C3 SWAP3 SWAP2 POP PUSH3 0x2C7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2C3 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2C8 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x311 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH3 0x31C DUP6 PUSH3 0x2DE JUMP JUMPDEST SWAP4 POP PUSH3 0x32C PUSH1 0x20 DUP7 ADD PUSH3 0x2DE JUMP JUMPDEST SWAP3 POP PUSH3 0x33C PUSH1 0x40 DUP7 ADD PUSH3 0x2DE JUMP JUMPDEST SWAP2 POP PUSH3 0x34C PUSH1 0x60 DUP7 ADD PUSH3 0x2DE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x5FC8 PUSH3 0x3D9 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x210 MSTORE DUP1 PUSH2 0x16A3 MSTORE DUP1 PUSH2 0x178E MSTORE DUP1 PUSH2 0x1816 MSTORE DUP1 PUSH2 0x3745 MSTORE DUP1 PUSH2 0x378B MSTORE DUP1 PUSH2 0x37FF MSTORE POP DUP1 PUSH2 0xA1C MSTORE DUP1 PUSH2 0xD3D MSTORE DUP1 PUSH2 0xE04 MSTORE DUP1 PUSH2 0x1024 MSTORE DUP1 PUSH2 0x29F1 MSTORE DUP1 PUSH2 0x2C59 MSTORE DUP1 PUSH2 0x2E6D MSTORE DUP1 PUSH2 0x3221 MSTORE DUP1 PUSH2 0x392B MSTORE POP DUP1 PUSH2 0x14B7 MSTORE POP DUP1 PUSH2 0x1496 MSTORE POP PUSH2 0x5FC8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x200 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x4D8 JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x4F8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x50D JUMPI DUP1 PUSH4 0x75E39CEC EQ PUSH2 0x52D JUMPI DUP1 PUSH4 0x7AC2FF7B EQ PUSH2 0x55D JUMPI DUP1 PUSH4 0x88316456 EQ PUSH2 0x570 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x593 JUMPI DUP1 PUSH4 0x97F12A83 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0x99FBAB88 EQ PUSH2 0x5BB JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x5F3 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x613 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x626 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x666 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x679 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x68E JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x6AE JUMPI DUP1 PUSH4 0xE70EB392 EQ PUSH2 0x6C1 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x6F4 JUMPI DUP1 PUSH4 0xFC6F7865 EQ PUSH2 0x707 JUMPI PUSH2 0x270 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x50EB2EB EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2BE JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0xC49CCBE EQ PUSH2 0x32D JUMPI DUP1 PUSH4 0x12210E8A EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x356 JUMPI DUP1 PUSH4 0x1507A8F4 EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x219F5D17 EQ PUSH2 0x3AB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x29048E7B EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x435 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x49404B7C EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x4A3 JUMPI PUSH2 0x270 JUMP JUMPDEST CALLDATASIZE PUSH2 0x270 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x26E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x4E6F74205745544839 PUSH1 0xB8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x290 CALLDATASIZE PUSH1 0x4 PUSH2 0x5406 JUMP JUMPDEST PUSH2 0x71A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x59F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26E PUSH2 0x2B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x50F5 JUMP JUMPDEST PUSH2 0x73D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x767 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x5A58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x300 PUSH2 0x2FB CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x5892 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x328 CALLDATASIZE PUSH1 0x4 PUSH2 0x52D1 JUMP JUMPDEST PUSH2 0x850 JUMP JUMPDEST PUSH2 0x340 PUSH2 0x33B CALLDATASIZE PUSH1 0x4 PUSH2 0x5535 JUMP JUMPDEST PUSH2 0x926 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP3 SWAP2 SWAP1 PUSH2 0x5BCE JUMP JUMPDEST PUSH2 0x26E PUSH2 0xD11 JUMP JUMPDEST PUSH2 0x300 PUSH2 0x364 CALLDATASIZE PUSH1 0x4 PUSH2 0x5165 JUMP JUMPDEST PUSH2 0xD1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x384 CALLDATASIZE PUSH1 0x4 PUSH2 0x57C8 JUMP JUMPDEST PUSH2 0x100F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x108D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x59FC JUMP JUMPDEST PUSH2 0x3BE PUSH2 0x3B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5546 JUMP JUMPDEST PUSH2 0x109E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x3E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x51BE JUMP JUMPDEST PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x13D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x52D1 JUMP JUMPDEST PUSH2 0x1422 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x144D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x1471 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x51BE JUMP JUMPDEST PUSH2 0x152F JUMP JUMPDEST PUSH2 0x26E PUSH2 0x478 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x154A JUMP JUMPDEST PUSH2 0x26E PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x533D JUMP JUMPDEST PUSH2 0x1605 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x5781 JUMP JUMPDEST PUSH2 0x169F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x300 PUSH2 0x1814 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x4D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x1838 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x300 PUSH2 0x4F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x184E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x1876 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x528 CALLDATASIZE PUSH1 0x4 PUSH2 0x50F5 JUMP JUMPDEST PUSH2 0x187B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x54D PUSH2 0x548 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B7D JUMP JUMPDEST PUSH2 0x26E PUSH2 0x56B CALLDATASIZE PUSH1 0x4 PUSH2 0x533D JUMP JUMPDEST PUSH2 0x1A30 JUMP JUMPDEST PUSH2 0x583 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x5601 JUMP JUMPDEST PUSH2 0x1DC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x2349 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x5B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x50F5 JUMP JUMPDEST PUSH2 0x23AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5DB PUSH2 0x5D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x23D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x60E CALLDATASIZE PUSH1 0x4 PUSH2 0x52A4 JUMP JUMPDEST PUSH2 0x2629 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x621 CALLDATASIZE PUSH1 0x4 PUSH2 0x533D JUMP JUMPDEST PUSH2 0x272A JUMP JUMPDEST PUSH2 0x639 PUSH2 0x634 CALLDATASIZE PUSH1 0x4 PUSH2 0x5398 JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x5991 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x661 CALLDATASIZE PUSH1 0x4 PUSH2 0x51FE JUMP JUMPDEST PUSH2 0x2902 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x674 CALLDATASIZE PUSH1 0x4 PUSH2 0x533D JUMP JUMPDEST PUSH2 0x2960 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x300 PUSH2 0x29EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x6A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x2A13 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x6BC CALLDATASIZE PUSH1 0x4 PUSH2 0x52FC JUMP JUMPDEST PUSH2 0x2AAD JUMP JUMPDEST PUSH2 0x26E PUSH2 0x6CF CALLDATASIZE PUSH1 0x4 PUSH2 0x5781 JUMP JUMPDEST PUSH2 0x2B85 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x6EF CALLDATASIZE PUSH1 0x4 PUSH2 0x512D JUMP JUMPDEST PUSH2 0x2CD1 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x702 CALLDATASIZE PUSH1 0x4 PUSH2 0x533D JUMP JUMPDEST PUSH2 0x2CFF JUMP JUMPDEST PUSH2 0x340 PUSH2 0x715 CALLDATASIZE PUSH1 0x4 PUSH2 0x551E JUMP JUMPDEST PUSH2 0x2D71 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x745 PUSH2 0x321F JUMP JUMPDEST PUSH1 0xF 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 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7F3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7C8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7F3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7D6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x808 DUP3 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x82D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5A91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85B DUP3 PUSH2 0x184E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x8AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F41 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8C0 PUSH2 0x32DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x8DC JUMPI POP PUSH2 0x8DC DUP2 PUSH2 0x6EF PUSH2 0x32DA JUMP JUMPDEST PUSH2 0x917 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E4B PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x921 DUP4 DUP4 PUSH2 0x32DE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x934 DUP2 PUSH2 0x3354 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x942 DUP2 PUSH2 0x337D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x954 PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH2 0x9A2 SWAP2 DUP10 ADD SWAP1 DUP10 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x9C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP6 ADD SLOAD SWAP1 DUP2 AND SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH3 0xFFFFFF AND SWAP1 DUP4 ADD MSTORE PUSH2 0xA41 PUSH32 0x0 DUP4 PUSH2 0x33C8 JUMP JUMPDEST SWAP1 POP PUSH2 0xA4D DUP5 DUP3 PUSH2 0x34A7 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA34123A7 SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0xA89 PUSH1 0x40 DUP15 ADD PUSH1 0x20 DUP16 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAA7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAF8 SWAP2 SWAP1 PUSH2 0x57A5 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD DUP9 LT DUP1 ISZERO SWAP1 PUSH2 0xB15 JUMPI POP DUP9 PUSH1 0x60 ADD CALLDATALOAD DUP8 LT ISZERO JUMPDEST PUSH2 0xB31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5AC4 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB5A SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x360C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB8B SWAP2 SWAP1 PUSH2 0x59FC JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBB7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBDB SWAP2 SWAP1 PUSH2 0x565D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0xC00 DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND SWAP3 DUP15 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND ADD DUP2 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0x3 DUP9 ADD SLOAD PUSH2 0xC41 SWAP2 SWAP1 DUP4 SUB SWAP1 DUP9 AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP4 DUP15 ADD PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x2 DUP8 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP8 ADD DUP2 SWAP1 SSTORE PUSH2 0xC87 PUSH1 0x40 DUP14 ADD PUSH1 0x20 DUP15 ADD PUSH2 0x5613 JUMP JUMPDEST DUP7 SUB DUP8 PUSH1 0x1 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x0 ADD CALLDATALOAD PUSH32 0x26F6A048EE9138F2C0CE266F322CB99228E8D619AE2BFF30C67F8DCF9D2377B4 DUP14 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xCEA SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST DUP14 DUP14 PUSH1 0x40 MLOAD PUSH2 0xCFB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0xD19 PUSH2 0x3710 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xD3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1698EE82 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xF26 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1671295 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF637731D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP4 AND SWAP2 PUSH4 0xF637731D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xF8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1005 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF637731D DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1000 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x101D DUP3 DUP5 ADD DUP5 PUSH2 0x5557 JUMP JUMPDEST SWAP1 POP PUSH2 0x104D PUSH32 0x0 DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x3720 JUMP JUMPDEST POP DUP5 ISZERO PUSH2 0x1068 JUMPI DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x1068 SWAP2 SWAP1 CALLER DUP9 PUSH2 0x3743 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x1086 JUMPI PUSH2 0x1086 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x3743 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1099 PUSH1 0x2 PUSH2 0x38D3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x10B1 DUP2 PUSH2 0x337D JUMP JUMPDEST DUP5 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND DUP7 MSTORE PUSH1 0xB DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP5 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP8 MSTORE DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE SWAP3 SWAP1 SWAP5 ADD SLOAD DUP1 DUP4 AND DUP3 DUP10 ADD SWAP1 DUP2 MSTORE PUSH3 0xFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV DUP3 AND DUP4 DUP10 ADD SWAP1 DUP2 MSTORE DUP9 MLOAD PUSH2 0x140 DUP2 ADD DUP11 MSTORE DUP5 MLOAD DUP7 AND DUP2 MSTORE SWAP2 MLOAD SWAP1 SWAP5 AND DUP2 DUP11 ADD MSTORE SWAP3 MLOAD AND DUP3 DUP8 ADD MSTORE ADDRESS DUP3 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP4 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP5 DIV DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0xA0 DUP4 ADD MSTORE SWAP6 DUP13 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE SWAP4 DUP12 ADD CALLDATALOAD PUSH1 0xE0 DUP6 ADD MSTORE SWAP1 DUP11 ADD CALLDATALOAD PUSH2 0x100 DUP5 ADD MSTORE DUP10 ADD CALLDATALOAD PUSH2 0x120 DUP4 ADD MSTORE SWAP3 SWAP1 PUSH2 0x1193 SWAP1 PUSH2 0x38DE JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD SWAP4 SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x11C6 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x360C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11F7 SWAP2 SWAP1 PUSH2 0x59FC JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x120F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1223 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1247 SWAP2 SWAP1 PUSH2 0x565D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x1283 DUP7 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP1 SWAP4 ADD DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x12CA SWAP3 SWAP2 DUP5 SUB SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV AND SWAP1 PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND SWAP1 SWAP5 ADD DUP2 AND SWAP1 SWAP4 MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x12FC DUP7 DUP6 PUSH2 0x34A7 JUMP JUMPDEST PUSH1 0x2 DUP7 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP7 ADD DUP2 SWAP1 SSTORE PUSH1 0x1 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP15 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP12 CALLDATALOAD SWAP1 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F SWAP1 PUSH2 0x1363 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x138A PUSH2 0x1384 PUSH2 0x32DA JUMP JUMPDEST DUP3 PUSH2 0x3B19 JUMP JUMPDEST PUSH2 0x13C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F62 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x921 DUP4 DUP4 DUP4 PUSH2 0x3BB5 JUMP JUMPDEST DUP1 PUSH2 0x13DA DUP2 PUSH2 0x3354 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x13F0 PUSH2 0x3CEF JUMP JUMPDEST PUSH1 0x5 DUP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 PUSH1 0x6 SWAP1 SWAP2 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x1444 SWAP1 DUP4 PUSH2 0x3D0B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH32 0x0 PUSH32 0x0 PUSH2 0x14DE PUSH2 0x3D17 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x921 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2902 JUMP JUMPDEST DUP1 PUSH2 0x1554 DUP2 PUSH2 0x3354 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO DUP1 ISZERO PUSH2 0x158F JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x15AD JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x15BB JUMPI POP PUSH1 0x6 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0x15C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x5 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x6 ADD SSTORE PUSH2 0x921 DUP4 PUSH2 0x3D1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x167F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1693 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x170E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1722 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x1786 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x496E73756666696369656E74205745544839 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x921 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1806 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x921 DUP3 DUP3 PUSH2 0x3DD6 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1846 PUSH1 0x2 DUP5 PUSH2 0x3EC5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1447 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5EAD PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0x3EE3 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x18C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E83 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1447 SWAP1 PUSH2 0x38D3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x1C0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x68 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE SWAP1 DUP4 ADD SLOAD PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0x4 DUP4 ADD SLOAD DUP1 DUP3 AND PUSH2 0x100 DUP8 ADD MSTORE SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND PUSH2 0x160 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 SWAP2 DIV AND PUSH2 0x180 DUP5 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH2 0x1A0 DUP4 ADD MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH2 0x1A08 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5AF2 JUMP JUMPDEST DUP1 PUSH2 0x140 ADD MLOAD DUP2 PUSH2 0x160 ADD MLOAD DUP3 PUSH2 0x180 ADD MLOAD DUP4 PUSH2 0x1A0 ADD MLOAD SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST DUP4 PUSH2 0x1A3A DUP2 PUSH2 0x337D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A44 PUSH2 0x1471 JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP10 DUP10 PUSH2 0x1A70 DUP2 PUSH2 0x3EF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE2 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH2 0x102 DUP1 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 MLOAD DUP1 DUP4 SUB SWAP1 SWAP5 ADD DUP5 MSTORE PUSH2 0x122 SWAP1 SWAP2 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1AF8 DUP9 PUSH2 0x184E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1B61 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732315065726D69743A20617070726F76616C20746F206F776E657200 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B6A DUP2 PUSH2 0x3F25 JUMP JUMPDEST ISZERO PUSH2 0x1CD2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP9 SWAP1 MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0xF8 DUP11 SWAP1 SHL AND PUSH1 0x60 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x41 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x61 DUP4 ADD DUP1 DUP6 MSTORE PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 MSTORE PUSH1 0x65 DUP4 ADD DUP7 DUP2 MSTORE PUSH1 0x85 DUP5 ADD SWAP5 DUP6 MSTORE DUP2 MLOAD PUSH1 0xA5 DUP6 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP6 PUSH4 0x1626BA7E SWAP6 DUP10 SWAP6 SWAP2 SWAP3 PUSH1 0xC5 SWAP1 SWAP2 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C03 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BEB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C30 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C62 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ PUSH2 0x1CCD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x155B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DAB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D2E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1D64 JUMPI POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x1DA9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x496E76616C6964207369676E6174757265 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x1DB5 DUP10 DUP10 PUSH2 0x32DE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x1DD5 DUP2 PUSH2 0x337D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1EA1 SWAP1 DUP1 PUSH2 0x1DF6 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1E17 SWAP2 SWAP1 PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E35 PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x574F JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x1E55 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x542E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E6D PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x542E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xA0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE POP PUSH2 0x38DE JUMP JUMPDEST SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH2 0x1EEE PUSH2 0x1EC0 PUSH2 0x140 DUP10 ADD PUSH2 0x120 DUP11 ADD PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP8 POP DUP8 PUSH2 0x3F2B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F19 ADDRESS PUSH2 0x1F04 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x542E JUMP JUMPDEST PUSH2 0x1F14 PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x542E JUMP JUMPDEST PUSH2 0x360C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F4A SWAP2 SWAP1 PUSH2 0x59FC JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F76 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F9A SWAP2 SWAP1 PUSH2 0x565D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0x2013 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP15 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1FC5 SWAP2 SWAP1 PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP15 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1FE6 SWAP2 SWAP1 PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP15 PUSH1 0x40 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2007 SWAP2 SWAP1 PUSH2 0x574F JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE PUSH2 0x4046 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x1C0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2063 SWAP2 SWAP1 PUSH2 0x542E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x207B PUSH1 0xA0 DUP15 ADD PUSH1 0x80 DUP16 ADD PUSH2 0x542E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP PUSH1 0xC PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0xC 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 PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0xA PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0xD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x1C PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1A0 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP10 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x2334 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7F3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7C8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7F3 JUMP JUMPDEST PUSH2 0x23B2 PUSH2 0x321F JUMP JUMPDEST PUSH1 0xE 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 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x1C0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x68 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE SWAP1 DUP4 ADD SLOAD PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0x4 DUP4 ADD SLOAD DUP1 DUP3 AND PUSH2 0x100 DUP8 ADD MSTORE SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND PUSH2 0x160 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 SWAP2 DIV AND PUSH2 0x180 DUP5 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH2 0x1A0 DUP4 ADD MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH2 0x2509 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5AF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0xC0 ADD MLOAD DUP11 PUSH1 0xE0 ADD MLOAD DUP12 PUSH2 0x100 ADD MLOAD DUP13 PUSH2 0x120 ADD MLOAD SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP POP POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 SWAP12 POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 SWAP12 JUMP JUMPDEST PUSH2 0x2631 PUSH2 0x32DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2693 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x22A9219B99189D1030B8383937BB32903A379031B0B63632B9 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x26A0 PUSH2 0x32DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x26E4 PUSH2 0x32DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x277B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x278F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x27BB JUMPI PUSH2 0x27BB DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1605 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x27DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x280F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x27FA JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x28FB JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x282D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x283F SWAP2 SWAP1 PUSH2 0x5C76 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x284D SWAP3 SWAP2 SWAP1 PUSH2 0x5882 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2888 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x288D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x28D9 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x28A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x28C0 SWAP2 SWAP1 PUSH2 0x54B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP2 SWAP1 PUSH2 0x5A58 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x28E6 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x2815 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2913 PUSH2 0x290D PUSH2 0x32DA JUMP JUMPDEST DUP4 PUSH2 0x3B19 JUMP JUMPDEST PUSH2 0x294E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F62 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x295A DUP5 DUP5 DUP5 DUP5 PUSH2 0x4125 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x27BB JUMPI PUSH2 0x27BB DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2CFF JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2A1E DUP3 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x2A27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xE SLOAD PUSH1 0x40 MLOAD PUSH4 0xE9DC6375 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xE9DC6375 SWAP1 PUSH2 0x2A59 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A05 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1447 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x54B5 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x2B74 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24B739BAB33334B1B4B2B73A103A37B5B2B7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x295A JUMPI PUSH2 0x295A DUP5 DUP4 DUP4 PUSH2 0x4177 JUMP JUMPDEST DUP2 PUSH2 0x2B8F DUP2 PUSH2 0x3354 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2BA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x6 DUP2 ADD SLOAD SWAP1 SWAP2 PUSH2 0x2BBF PUSH2 0x3CEF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 DUP6 ADD DUP2 SWAP1 SSTORE PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL PUSH4 0xFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH1 0xF SLOAD PUSH1 0x1 DUP1 DUP8 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP4 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP1 KECCAK256 DUP5 MLOAD PUSH1 0x60 DUP2 ADD DUP7 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD DUP1 DUP3 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH3 0xFFFFFF AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 SWAP4 POP AND SWAP1 PUSH4 0x32D5EEAF SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH2 0x2C7E SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x33C8 JUMP JUMPDEST PUSH1 0x5 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0xE0 DUP8 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH2 0x2CB7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5952 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x167F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x167F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x2D7F DUP2 PUSH2 0x3354 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D91 PUSH1 0x60 DUP7 ADD PUSH1 0x40 DUP8 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT DUP1 PUSH2 0x2DBE JUMPI POP PUSH1 0x0 PUSH2 0x2DB3 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST PUSH2 0x2DC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DDA PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2DFD JUMPI PUSH2 0x2DF8 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x50F5 JUMP JUMPDEST PUSH2 0x2DFF JUMP JUMPDEST ADDRESS JUMPDEST DUP6 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP6 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP4 MLOAD PUSH1 0x60 DUP2 ADD DUP6 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD SWAP1 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV PUSH3 0xFFFFFF AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP4 POP SWAP1 PUSH2 0x2E92 PUSH32 0x0 DUP4 PUSH2 0x33C8 JUMP JUMPDEST PUSH1 0x4 DUP5 ADD SLOAD PUSH1 0x1 DUP6 ADD SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP3 SWAP1 DIV AND ISZERO PUSH2 0x3088 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xA34123A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xA34123A7 SWAP2 PUSH2 0x2F09 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP3 DIV SWAP1 SIGNEXTEND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F36 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F5A SWAP2 SWAP1 PUSH2 0x57A5 JUMP JUMPDEST POP POP PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x514EA4BF SWAP1 PUSH2 0x2F98 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x360C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FB4 SWAP2 SWAP1 PUSH2 0x59FC JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3004 SWAP2 SWAP1 PUSH2 0x565D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x3040 DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP9 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3661 JUMP JUMPDEST DUP5 ADD SWAP4 POP PUSH2 0x3079 DUP8 PUSH1 0x3 ADD SLOAD DUP3 SUB DUP9 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x2 DUP9 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP8 ADD SSTORE ADD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND PUSH2 0x30A5 PUSH1 0x60 DUP15 ADD PUSH1 0x40 DUP16 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x30C8 JUMPI PUSH2 0x30C3 PUSH1 0x60 DUP14 ADD PUSH1 0x40 DUP15 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH2 0x30CA JUMP JUMPDEST DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP14 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x30E7 SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x310A JUMPI PUSH2 0x3105 PUSH1 0x80 DUP15 ADD PUSH1 0x60 DUP16 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH2 0x310C JUMP JUMPDEST DUP4 JUMPDEST PUSH1 0x1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x9E3D67B PUSH1 0xE3 SHL DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0x4F1EB3D8 SWAP2 PUSH2 0x315F SWAP2 DUP13 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP3 DIV SWAP1 SIGNEXTEND SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x58EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x318C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31B0 SWAP2 SWAP1 PUSH2 0x562F JUMP JUMPDEST PUSH1 0x4 DUP10 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL DUP8 DUP11 SUB DUP5 AND MUL OR AND DUP7 DUP10 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP3 DUP2 AND SWAP14 POP AND SWAP11 POP DUP13 CALLDATALOAD SWAP1 PUSH32 0x40D0EFD1A53D60ECBF40971B9DAF7DC90178C3AADC7AAB1765632738FA8B8F01 SWAP1 PUSH2 0xCFB SWAP1 DUP12 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH2 0x5928 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x328C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32B0 SWAP2 SWAP1 PUSH2 0x5111 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xD19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1447 PUSH1 0x2 DUP4 PUSH2 0x42BE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x331B DUP3 PUSH2 0x184E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x335E CALLER DUP3 PUSH2 0x3B19 JUMP JUMPDEST PUSH2 0x337A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5A6B JUMP JUMPDEST POP JUMP JUMPDEST DUP1 TIMESTAMP GT ISZERO PUSH2 0x337A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x151C985B9CD858DD1A5BDB881D1BDBC81BDB19 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x33F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x51C403F9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xA38807F2 SWAP2 PUSH2 0x34F0 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND SWAP1 PUSH1 0x4 ADD PUSH2 0x5A1E JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x351C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3540 SWAP2 SWAP1 PUSH2 0x544A JUMP JUMPDEST PUSH1 0x5 DUP8 ADD SLOAD SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP7 AND SWAP2 AND LT SWAP3 POP PUSH2 0x3565 SWAP2 POP POP JUMPI POP PUSH2 0x3608 JUMP JUMPDEST PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO PUSH2 0x35BF JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH2 0x35B3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 DUP2 AND DUP5 SUB AND SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x40 SHL PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x6 DUP5 ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x5 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP4 AND OR SWAP1 SSTORE PUSH2 0x35E4 PUSH2 0x3CEF JUMP JUMPDEST DUP4 PUSH1 0x5 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP7 SWAP1 SHL AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP6 DUP2 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP6 ADD MSTORE SWAP1 DUP6 SWAP1 SIGNEXTEND SWAP1 SHL PUSH1 0x37 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x1A DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x3697 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x368C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x365A JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x36A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0xD19 JUMPI PUSH2 0xD19 CALLER SELFBALANCE PUSH2 0x3DD6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x372C DUP4 DUP4 PUSH2 0x33C8 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x1447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x3784 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x38A6 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3888 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x389E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295A SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x38C7 JUMPI PUSH2 0x38C2 DUP5 DUP4 DUP4 PUSH2 0x4177 JUMP JUMPDEST PUSH2 0x295A JUMP JUMPDEST PUSH2 0x295A DUP5 DUP5 DUP5 DUP5 PUSH2 0x42CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1447 DUP3 PUSH2 0x441A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x40 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE POP SWAP1 POP PUSH2 0x3950 PUSH32 0x0 DUP3 PUSH2 0x33C8 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x398D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x39C5 SWAP2 SWAP1 PUSH2 0x56BE JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x39DC DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x441E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39ED DUP10 PUSH1 0xA0 ADD MLOAD PUSH2 0x441E JUMP JUMPDEST SWAP1 POP PUSH2 0x3A04 DUP4 DUP4 DUP4 DUP13 PUSH1 0xC0 ADD MLOAD DUP14 PUSH1 0xE0 ADD MLOAD PUSH2 0x4745 JUMP JUMPDEST SWAP8 POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C8A7D8D DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3A56 SWAP2 SWAP1 PUSH2 0x5B1C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A85 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3AD6 SWAP2 SWAP1 PUSH2 0x57A5 JUMP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP DUP5 LT DUP1 ISZERO SWAP1 PUSH2 0x3AF5 JUMPI POP DUP6 PUSH2 0x120 ADD MLOAD DUP4 LT ISZERO JUMPDEST PUSH2 0x3B11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5AC4 JUMP JUMPDEST POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B24 DUP3 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x3B5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E1F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B6A DUP4 PUSH2 0x184E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x3BA5 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3B9A DUP5 PUSH2 0x7FD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x1007 JUMPI POP PUSH2 0x1007 DUP2 DUP6 PUSH2 0x2CD1 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BC8 DUP3 PUSH2 0x184E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3C0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5EF8 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DD5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3C5D DUP4 DUP4 DUP4 PUSH2 0x921 JUMP JUMPDEST PUSH2 0x3C68 PUSH1 0x0 DUP3 PUSH2 0x32DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3C8A SWAP1 DUP3 PUSH2 0x4809 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3CAD SWAP1 DUP3 PUSH2 0x4815 JUMP JUMPDEST POP PUSH2 0x3CBA PUSH1 0x2 DUP3 DUP5 PUSH2 0x4821 JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F21 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0x3D02 JUMPI TIMESTAMP PUSH2 0x1099 JUMP JUMPDEST POP PUSH4 0xFFFFFFFF SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1444 DUP4 DUP4 PUSH2 0x4837 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D26 DUP3 PUSH2 0x184E JUMP JUMPDEST SWAP1 POP PUSH2 0x3D34 DUP2 PUSH1 0x0 DUP5 PUSH2 0x921 JUMP JUMPDEST PUSH2 0x3D3F PUSH1 0x0 DUP4 PUSH2 0x32DE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP5 AND ISZERO MUL ADD SWAP1 SWAP2 AND DIV ISZERO PUSH2 0x3D7D JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3D7D SWAP2 PUSH2 0x506D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3D9F SWAP1 DUP4 PUSH2 0x4809 JUMP JUMPDEST POP PUSH2 0x3DAB PUSH1 0x2 DUP4 PUSH2 0x489B JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F21 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3E22 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3E03 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3E84 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E89 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x921 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x535445 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x3ED4 DUP7 DUP7 PUSH2 0x48A7 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1007 DUP5 DUP5 DUP5 PUSH2 0x4922 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3F86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3F8F DUP2 PUSH2 0x32CD JUMP JUMPDEST ISZERO PUSH2 0x3FE0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH28 0x115490CDCC8C4E881D1BDAD95B88185B1C9958591E481B5A5B9D1959 PUSH1 0x22 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FEC PUSH1 0x0 DUP4 DUP4 PUSH2 0x921 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x400E SWAP1 DUP3 PUSH2 0x4815 JUMP JUMPDEST POP PUSH2 0x401B PUSH1 0x2 DUP3 DUP5 PUSH2 0x4821 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F21 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP1 PUSH2 0x1447 JUMPI POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB PUSH1 0x1 PUSH1 0xB0 SHL DUP1 DUP5 DIV DUP3 AND DUP4 DUP2 ADD SWAP1 SWAP3 AND MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB NOT AND DUP7 OR SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD SWAP1 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP3 SSTORE SWAP2 DUP8 ADD MLOAD SWAP6 ADD DUP1 SLOAD SWAP3 DUP8 ADD MLOAD PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT SWAP7 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP4 SWAP1 SWAP4 AND OR SWAP1 SWAP2 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4130 DUP5 DUP5 DUP5 PUSH2 0x3BB5 JUMP JUMPDEST PUSH2 0x413C DUP5 DUP5 DUP5 DUP5 PUSH2 0x49EC JUMP JUMPDEST PUSH2 0x295A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DA3 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x41F3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x41D4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4255 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x425A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4288 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4288 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1086 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x14D5 PUSH1 0xF2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1444 DUP4 DUP4 PUSH2 0x4B54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x434E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x432F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x43B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x43E3 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x43E3 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x27BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x29AA23 PUSH1 0xE9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x4435 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x443D JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x447B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x448F JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x44A1 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x44CB JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x44EA JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x4509 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x4528 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x4547 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x4566 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x4585 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x45A5 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x45C5 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x45E5 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x4605 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x4625 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x4645 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x4665 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x4685 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x46A6 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x46C6 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x46E5 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x4702 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x471D JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x4719 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP2 MOD ISZERO PUSH2 0x4730 JUMPI PUSH1 0x1 PUSH2 0x4733 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4765 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4790 JUMPI PUSH2 0x4789 DUP6 DUP6 DUP6 PUSH2 0x4B6C JUMP JUMPDEST SWAP1 POP PUSH2 0x4800 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x47F2 JUMPI PUSH1 0x0 PUSH2 0x47B7 DUP8 DUP7 DUP7 PUSH2 0x4B6C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x47C6 DUP8 DUP10 DUP7 PUSH2 0x4BCF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x47E7 JUMPI DUP1 PUSH2 0x47E9 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x4800 JUMP JUMPDEST PUSH2 0x47FD DUP6 DUP6 DUP5 PUSH2 0x4BCF JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1444 DUP4 DUP4 PUSH2 0x4C0C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1444 DUP4 DUP4 PUSH2 0x4CD2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1007 DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x4D1C JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x4879 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D81 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x4888 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1444 DUP4 DUP4 PUSH2 0x4DB3 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x48EB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5ED6 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x48FC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x49BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4982 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x496A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x49AF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x49D0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A00 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3F25 JUMP JUMPDEST PUSH2 0x4A0C JUMPI POP PUSH1 0x1 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B1A PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x4A21 PUSH2 0x32DA JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A70 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4AB5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND 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 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5DA3 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x4E87 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4B8C JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x4BAF DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3661 JUMP JUMPDEST SWAP1 POP PUSH2 0x4800 PUSH2 0x4BCA DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3661 JUMP JUMPDEST PUSH2 0x4E96 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4BEF JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x1007 PUSH2 0x4BCA DUP4 PUSH1 0x1 PUSH1 0x60 SHL DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CC8 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4C3F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4C5C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x4C8C JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x1447 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1447 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CDE DUP4 DUP4 PUSH2 0x4B54 JUMP JUMPDEST PUSH2 0x4D14 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1447 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1447 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x4D81 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x365A JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x4D94 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0x365A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CC8 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4DE6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4E06 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP5 SLOAD PUSH1 0x2 SWAP1 SWAP4 MUL ADD SWAP2 DUP3 SSTORE PUSH1 0x1 SWAP4 DUP5 ADD SLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE DUP4 SLOAD DUP3 MSTORE DUP10 DUP4 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x4E45 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 PUSH1 0x2 PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 DUP5 MUL ADD DUP3 DUP2 SSTORE PUSH1 0x1 SWAP1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP3 SWAP1 SWAP4 SSTORE DUP9 DUP2 MSTORE DUP10 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP5 POP PUSH2 0x1447 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1007 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x4EAC JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4EED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DF9 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4EF6 DUP6 PUSH2 0x3F25 JUMP JUMPDEST PUSH2 0x4F47 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4F85 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4F66 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4FE7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4FEC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4FFC DUP3 DUP3 DUP7 PUSH2 0x5007 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x5016 JUMPI POP DUP2 PUSH2 0x365A JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x5026 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4982 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x496A JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x5093 JUMPI POP PUSH2 0x337A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x337A SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x50C1 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x50AD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x738 DUP2 PUSH2 0x5D2A JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5106 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x365A DUP2 PUSH2 0x5D2A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5122 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x365A DUP2 PUSH2 0x5D2A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x513F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x514A DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x515A DUP2 PUSH2 0x5D2A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x517A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5185 DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x5195 DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP3 POP PUSH2 0x51A3 PUSH1 0x40 DUP7 ADD PUSH2 0x50E2 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x51B3 DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x51D2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x51DD DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x51ED DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5213 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x521E DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x522E DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x524F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x525F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x5272 PUSH2 0x526D DUP3 PUSH2 0x5CDD JUMP JUMPDEST PUSH2 0x5CBA JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x5286 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52B6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x52C1 DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x515A DUP2 PUSH2 0x5D3F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52E3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x52EE DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5310 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x531B DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x5332 DUP2 PUSH2 0x5D2A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5355 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5360 DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x537E DUP2 PUSH2 0x5D71 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x53AA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x53C0 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x53D3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x53E1 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x53F4 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5417 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x365A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x543F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x365A DUP2 PUSH2 0x5D4D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x545F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x546F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x5480 DUP2 PUSH2 0x5D2A JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5499 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x51B3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54C6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x54DB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x54EB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x54F9 PUSH2 0x526D DUP3 PUSH2 0x5CDD JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x550D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x4800 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5CFE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x552F JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x552F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x552F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x5569 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x5586 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE PUSH1 0x60 DUP5 SLT ISZERO PUSH2 0x5597 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP4 POP DUP2 DUP5 LT DUP2 DUP6 GT OR ISZERO PUSH2 0x55AB JUMPI INVALID JUMPDEST POP DUP3 PUSH1 0x40 MSTORE DUP5 CALLDATALOAD SWAP3 POP PUSH2 0x55BD DUP4 PUSH2 0x5D2A JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 PUSH2 0x55CF DUP4 PUSH2 0x5D2A JUMP JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x55E1 PUSH1 0x40 DUP7 ADD PUSH2 0x50E2 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x55F4 PUSH1 0x60 DUP6 ADD PUSH2 0x50C5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x552F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5624 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x365A DUP2 PUSH2 0x5D5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5641 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x564C DUP2 PUSH2 0x5D5C JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x515A DUP2 PUSH2 0x5D5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5674 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x567F DUP2 PUSH2 0x5D5C JUMP JUMPDEST DUP1 SWAP6 POP POP PUSH1 0x20 DUP7 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP7 ADD MLOAD SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD PUSH2 0x569F DUP2 PUSH2 0x5D5C JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x56B0 DUP2 PUSH2 0x5D5C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x56D8 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x56E3 DUP2 PUSH2 0x5D2A JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH2 0x56F4 DUP2 PUSH2 0x5D4D JUMP JUMPDEST SWAP6 POP PUSH2 0x5702 PUSH1 0x40 DUP10 ADD PUSH2 0x50D0 JUMP JUMPDEST SWAP5 POP PUSH2 0x5710 PUSH1 0x60 DUP10 ADD PUSH2 0x50D0 JUMP JUMPDEST SWAP4 POP PUSH2 0x571E PUSH1 0x80 DUP10 ADD PUSH2 0x50D0 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH2 0x572E DUP2 PUSH2 0x5D71 JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x573F DUP2 PUSH2 0x5D3F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5760 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1444 DUP3 PUSH2 0x50E2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x577A JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5793 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x515A DUP2 PUSH2 0x5D2A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x57B7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x57DD JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x5801 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5814 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5822 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5833 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x585A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5CFE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x2 DUP6 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP5 SWAP1 SIGNEXTEND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x4FFC SWAP1 DUP4 ADD DUP5 PUSH2 0x5842 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x60 DUP5 ADD MSTORE AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x59E4 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x59D2 DUP6 DUP4 MLOAD PUSH2 0x5842 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x59B6 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP3 DUP4 SIGNEXTEND DUP2 MSTORE SWAP2 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND DUP2 MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1444 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5842 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x139BDD08185C1C1C9BDD9959 PUSH1 0xA2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH25 0x22A9219B99189D103737B732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x39 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH20 0x507269636520736C69707061676520636865636B PUSH1 0x60 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH16 0x125B9D985B1A59081D1BDAD95B881251 PUSH1 0x82 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP3 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD PUSH3 0xFFFFFF AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP3 ADD MLOAD SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 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 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP14 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x40 DUP4 ADD MSTORE DUP11 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH3 0xFFFFFF DUP10 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x2 DUP9 SWAP1 SIGNEXTEND PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x180 DUP2 ADD PUSH2 0x5C2E PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x586E JUMP JUMPDEST PUSH2 0x5C3B PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x5875 JUMP JUMPDEST DUP6 PUSH2 0x100 DUP4 ADD MSTORE DUP5 PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x5C57 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x5875 JUMP JUMPDEST PUSH2 0x5C65 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x5875 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5C8C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5CA5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3EDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5CD5 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5CF0 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5D19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5D01 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x295A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x337A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x337A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x337A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x337A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x337A JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F722063616C6C45524337 ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E73666572206F6620746F6B656E2074686174 KECCAK256 PUSH10 0x73206E6F74206F776EDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x582212207B1A07A33E639444DFBA3EC3E54D047C 0xDF 0xC9 SWAP9 0xDD SAR 0xA8 PUSH30 0x8F46BE03E604FA5C5A64736F6C6343000706003300000000000000000000 ","sourceMap":"844:18829:13:-:0;;;2464:27;;;-1:-1:-1;;;;;;2464:27:13;2490:1;2464:27;-1:-1:-1;;;;;2577:30:13;-1:-1:-1;;;2577:30:13;;;2920:338;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3140:8;3150:6;1070:241:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1070:241:14;;;;;;;;;;;;;;;;-1:-1:-1;;;1070:241:14;;;1191:5;1198:7;751:40:42;427:10;770:20;;751:18;;;:40;;:::i;:::-;3636:13:46;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3659:17:46;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3764:40:46;-1:-1:-1;;;3764:18:46;:40::i;:::-;3814:49;-1:-1:-1;;;3814:18:46;:49::i;:::-;3873:51;-1:-1:-1;;;3873:18:46;:51::i;:::-;-1:-1:-1;;1229:23:14;;::::1;::::0;;::::1;::::0;1218:34:::1;::::0;1277:26;;;::::1;::::0;;;;1263:40:::1;::::0;-1:-1:-1;;;;;;;536:18:17;;;;;;;;565:14;;;;;3169:16:13::2;:36:::0;;-1:-1:-1;;;;;3169:36:13;;::::2;-1:-1:-1::0;;;;;;3169:36:13;;::::2;;::::0;;;3216:15:::2;:34:::0;;;;;::::2;::::0;::::2;;::::0;;-1:-1:-1;844:18829:13;;-1:-1:-1;844:18829:13;1490:198:42;-1:-1:-1;;;;;;1573:25:42;;;;;1565:66;;;;;-1:-1:-1;;;1565:66:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1641:33:42;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1641:40:42;1677:4;1641:40;;;1490:198::o;844:18829:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;844:18829:13;;;-1:-1:-1;844:18829:13;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:179:56;95:13;;-1:-1:-1;;;;;137:31:56;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:482::-;;;;;372:3;360:9;351:7;347:23;343:33;340:2;;;394:6;386;379:22;340:2;422:42;454:9;422:42;:::i;:::-;412:52;;483:51;530:2;519:9;515:18;483:51;:::i;:::-;473:61;;553:51;600:2;589:9;585:18;553:51;:::i;:::-;543:61;;623:51;670:2;659:9;655:18;623:51;:::i;:::-;613:61;;330:350;;;;;;;:::o;:::-;844:18829:13;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:26778:56","statements":[{"nodeType":"YulBlock","src":"6:3:56","statements":[]},{"body":{"nodeType":"YulBlock","src":"65:87:56","statements":[{"nodeType":"YulAssignment","src":"75:29:56","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"97:6:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"84:12:56"},"nodeType":"YulFunctionCall","src":"84:20:56"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"75:5:56"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"140:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"113:26:56"},"nodeType":"YulFunctionCall","src":"113:33:56"},"nodeType":"YulExpressionStatement","src":"113:33:56"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"44:6:56","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"55:5:56","type":""}],"src":"14:138:56"},{"body":{"nodeType":"YulBlock","src":"218:104:56","statements":[{"nodeType":"YulAssignment","src":"228:22:56","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"243:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"237:5:56"},"nodeType":"YulFunctionCall","src":"237:13:56"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:56"}]},{"body":{"nodeType":"YulBlock","src":"300:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"309:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"312:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"302:6:56"},"nodeType":"YulFunctionCall","src":"302:12:56"},"nodeType":"YulExpressionStatement","src":"302:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"272:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"283:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"290:6:56","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"279:3:56"},"nodeType":"YulFunctionCall","src":"279:18:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"269:2:56"},"nodeType":"YulFunctionCall","src":"269:29:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"262:6:56"},"nodeType":"YulFunctionCall","src":"262:37:56"},"nodeType":"YulIf","src":"259:2:56"}]},"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"197:6:56","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"208:5:56","type":""}],"src":"157:165:56"},{"body":{"nodeType":"YulBlock","src":"377:113:56","statements":[{"nodeType":"YulAssignment","src":"387:29:56","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"409:6:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"396:12:56"},"nodeType":"YulFunctionCall","src":"396:20:56"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"387:5:56"}]},{"body":{"nodeType":"YulBlock","src":"468:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"477:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"480:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"470:6:56"},"nodeType":"YulFunctionCall","src":"470:12:56"},"nodeType":"YulExpressionStatement","src":"470:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"438:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"449:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"456:8:56","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"445:3:56"},"nodeType":"YulFunctionCall","src":"445:20:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"435:2:56"},"nodeType":"YulFunctionCall","src":"435:31:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"428:6:56"},"nodeType":"YulFunctionCall","src":"428:39:56"},"nodeType":"YulIf","src":"425:2:56"}]},"name":"abi_decode_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"356:6:56","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"367:5:56","type":""}],"src":"327:163:56"},{"body":{"nodeType":"YulBlock","src":"565:189:56","statements":[{"body":{"nodeType":"YulBlock","src":"611:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"620:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"628:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"613:6:56"},"nodeType":"YulFunctionCall","src":"613:22:56"},"nodeType":"YulExpressionStatement","src":"613:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"586:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"595:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"582:3:56"},"nodeType":"YulFunctionCall","src":"582:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"607:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"578:3:56"},"nodeType":"YulFunctionCall","src":"578:32:56"},"nodeType":"YulIf","src":"575:2:56"},{"nodeType":"YulVariableDeclaration","src":"646:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"672:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"659:12:56"},"nodeType":"YulFunctionCall","src":"659:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"650:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"718:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"691:26:56"},"nodeType":"YulFunctionCall","src":"691:33:56"},"nodeType":"YulExpressionStatement","src":"691:33:56"},{"nodeType":"YulAssignment","src":"733:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"743:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"733:6:56"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"531:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"542:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"554:6:56","type":""}],"src":"495:259:56"},{"body":{"nodeType":"YulBlock","src":"840:182:56","statements":[{"body":{"nodeType":"YulBlock","src":"886:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"895:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"903:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"888:6:56"},"nodeType":"YulFunctionCall","src":"888:22:56"},"nodeType":"YulExpressionStatement","src":"888:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"861:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"870:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"857:3:56"},"nodeType":"YulFunctionCall","src":"857:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"882:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"853:3:56"},"nodeType":"YulFunctionCall","src":"853:32:56"},"nodeType":"YulIf","src":"850:2:56"},{"nodeType":"YulVariableDeclaration","src":"921:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"940:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"934:5:56"},"nodeType":"YulFunctionCall","src":"934:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"925:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"986:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"959:26:56"},"nodeType":"YulFunctionCall","src":"959:33:56"},"nodeType":"YulExpressionStatement","src":"959:33:56"},{"nodeType":"YulAssignment","src":"1001:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"1011:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1001:6:56"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"806:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"817:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"829:6:56","type":""}],"src":"759:263:56"},{"body":{"nodeType":"YulBlock","src":"1114:315:56","statements":[{"body":{"nodeType":"YulBlock","src":"1160:26:56","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1169:6:56"},{"name":"value1","nodeType":"YulIdentifier","src":"1177:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1162:6:56"},"nodeType":"YulFunctionCall","src":"1162:22:56"},"nodeType":"YulExpressionStatement","src":"1162:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1135:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"1144:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1131:3:56"},"nodeType":"YulFunctionCall","src":"1131:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"1156:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1127:3:56"},"nodeType":"YulFunctionCall","src":"1127:32:56"},"nodeType":"YulIf","src":"1124:2:56"},{"nodeType":"YulVariableDeclaration","src":"1195:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1221:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1208:12:56"},"nodeType":"YulFunctionCall","src":"1208:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1199:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1267:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1240:26:56"},"nodeType":"YulFunctionCall","src":"1240:33:56"},"nodeType":"YulExpressionStatement","src":"1240:33:56"},{"nodeType":"YulAssignment","src":"1282:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"1292:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1282:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1306:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1338:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1334:3:56"},"nodeType":"YulFunctionCall","src":"1334:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1321:12:56"},"nodeType":"YulFunctionCall","src":"1321:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1310:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1389:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1362:26:56"},"nodeType":"YulFunctionCall","src":"1362:35:56"},"nodeType":"YulExpressionStatement","src":"1362:35:56"},{"nodeType":"YulAssignment","src":"1406:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1416:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1406:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1072:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1083:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1095:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1103:6:56","type":""}],"src":"1027:402:56"},{"body":{"nodeType":"YulBlock","src":"1554:500:56","statements":[{"body":{"nodeType":"YulBlock","src":"1601:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1610:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"1618:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1603:6:56"},"nodeType":"YulFunctionCall","src":"1603:22:56"},"nodeType":"YulExpressionStatement","src":"1603:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1575:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"1584:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1571:3:56"},"nodeType":"YulFunctionCall","src":"1571:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"1596:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1567:3:56"},"nodeType":"YulFunctionCall","src":"1567:33:56"},"nodeType":"YulIf","src":"1564:2:56"},{"nodeType":"YulVariableDeclaration","src":"1636:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1662:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1649:12:56"},"nodeType":"YulFunctionCall","src":"1649:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1640:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1708:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1681:26:56"},"nodeType":"YulFunctionCall","src":"1681:33:56"},"nodeType":"YulExpressionStatement","src":"1681:33:56"},{"nodeType":"YulAssignment","src":"1723:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"1733:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1723:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1747:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1779:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1790:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1775:3:56"},"nodeType":"YulFunctionCall","src":"1775:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1762:12:56"},"nodeType":"YulFunctionCall","src":"1762:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1751:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1830:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1803:26:56"},"nodeType":"YulFunctionCall","src":"1803:35:56"},"nodeType":"YulExpressionStatement","src":"1803:35:56"},{"nodeType":"YulAssignment","src":"1847:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1857:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1847:6:56"}]},{"nodeType":"YulAssignment","src":"1873:49:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1907:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1918:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1903:3:56"},"nodeType":"YulFunctionCall","src":"1903:18:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"1883:19:56"},"nodeType":"YulFunctionCall","src":"1883:39:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1873:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1931:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1963:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1974:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1959:3:56"},"nodeType":"YulFunctionCall","src":"1959:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1946:12:56"},"nodeType":"YulFunctionCall","src":"1946:32:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"1935:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"2014:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1987:26:56"},"nodeType":"YulFunctionCall","src":"1987:35:56"},"nodeType":"YulExpressionStatement","src":"1987:35:56"},{"nodeType":"YulAssignment","src":"2031:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"2041:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2031:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint24t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1496:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1507:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1519:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1527:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1535:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1543:6:56","type":""}],"src":"1434:620:56"},{"body":{"nodeType":"YulBlock","src":"2163:366:56","statements":[{"body":{"nodeType":"YulBlock","src":"2209:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2218:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"2226:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2211:6:56"},"nodeType":"YulFunctionCall","src":"2211:22:56"},"nodeType":"YulExpressionStatement","src":"2211:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2184:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"2193:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2180:3:56"},"nodeType":"YulFunctionCall","src":"2180:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"2205:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2176:3:56"},"nodeType":"YulFunctionCall","src":"2176:32:56"},"nodeType":"YulIf","src":"2173:2:56"},{"nodeType":"YulVariableDeclaration","src":"2244:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2270:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2257:12:56"},"nodeType":"YulFunctionCall","src":"2257:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2248:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2316:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2289:26:56"},"nodeType":"YulFunctionCall","src":"2289:33:56"},"nodeType":"YulExpressionStatement","src":"2289:33:56"},{"nodeType":"YulAssignment","src":"2331:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"2341:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2331:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"2355:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2387:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2398:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:56"},"nodeType":"YulFunctionCall","src":"2383:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2370:12:56"},"nodeType":"YulFunctionCall","src":"2370:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2359:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2438:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2411:26:56"},"nodeType":"YulFunctionCall","src":"2411:35:56"},"nodeType":"YulExpressionStatement","src":"2411:35:56"},{"nodeType":"YulAssignment","src":"2455:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2465:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2455:6:56"}]},{"nodeType":"YulAssignment","src":"2481:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2508:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2519:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2504:3:56"},"nodeType":"YulFunctionCall","src":"2504:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2491:12:56"},"nodeType":"YulFunctionCall","src":"2491:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2481:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2113:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2124:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2136:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2144:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2152:6:56","type":""}],"src":"2059:470:56"},{"body":{"nodeType":"YulBlock","src":"2664:936:56","statements":[{"body":{"nodeType":"YulBlock","src":"2711:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2720:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"2728:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2713:6:56"},"nodeType":"YulFunctionCall","src":"2713:22:56"},"nodeType":"YulExpressionStatement","src":"2713:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2685:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"2694:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2681:3:56"},"nodeType":"YulFunctionCall","src":"2681:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"2706:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2677:3:56"},"nodeType":"YulFunctionCall","src":"2677:33:56"},"nodeType":"YulIf","src":"2674:2:56"},{"nodeType":"YulVariableDeclaration","src":"2746:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2772:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2759:12:56"},"nodeType":"YulFunctionCall","src":"2759:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2750:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2818:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2791:26:56"},"nodeType":"YulFunctionCall","src":"2791:33:56"},"nodeType":"YulExpressionStatement","src":"2791:33:56"},{"nodeType":"YulAssignment","src":"2833:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"2843:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2833:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"2857:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2889:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2900:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2885:3:56"},"nodeType":"YulFunctionCall","src":"2885:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2872:12:56"},"nodeType":"YulFunctionCall","src":"2872:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2861:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2940:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2913:26:56"},"nodeType":"YulFunctionCall","src":"2913:35:56"},"nodeType":"YulExpressionStatement","src":"2913:35:56"},{"nodeType":"YulAssignment","src":"2957:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2967:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2957:6:56"}]},{"nodeType":"YulAssignment","src":"2983:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3010:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"3021:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3006:3:56"},"nodeType":"YulFunctionCall","src":"3006:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2993:12:56"},"nodeType":"YulFunctionCall","src":"2993:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2983:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"3034:46:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3065:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"3076:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3061:3:56"},"nodeType":"YulFunctionCall","src":"3061:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3048:12:56"},"nodeType":"YulFunctionCall","src":"3048:32:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3038:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"3123:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"3132:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3140:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3125:6:56"},"nodeType":"YulFunctionCall","src":"3125:22:56"},"nodeType":"YulExpressionStatement","src":"3125:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3095:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"3103:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3092:2:56"},"nodeType":"YulFunctionCall","src":"3092:30:56"},"nodeType":"YulIf","src":"3089:2:56"},{"nodeType":"YulVariableDeclaration","src":"3158:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3172:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"3183:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3168:3:56"},"nodeType":"YulFunctionCall","src":"3168:22:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3162:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"3238:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"3247:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3255:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3240:6:56"},"nodeType":"YulFunctionCall","src":"3240:22:56"},"nodeType":"YulExpressionStatement","src":"3240:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3217:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"3221:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3213:3:56"},"nodeType":"YulFunctionCall","src":"3213:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3228:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3209:3:56"},"nodeType":"YulFunctionCall","src":"3209:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3202:6:56"},"nodeType":"YulFunctionCall","src":"3202:35:56"},"nodeType":"YulIf","src":"3199:2:56"},{"nodeType":"YulVariableDeclaration","src":"3273:26:56","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3296:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3283:12:56"},"nodeType":"YulFunctionCall","src":"3283:16:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3277:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3308:62:56","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3366:2:56"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"3336:29:56"},"nodeType":"YulFunctionCall","src":"3336:33:56"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"3321:14:56"},"nodeType":"YulFunctionCall","src":"3321:49:56"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"3312:5:56","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3386:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3393:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3379:6:56"},"nodeType":"YulFunctionCall","src":"3379:17:56"},"nodeType":"YulExpressionStatement","src":"3379:17:56"},{"body":{"nodeType":"YulBlock","src":"3442:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"3451:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3459:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3444:6:56"},"nodeType":"YulFunctionCall","src":"3444:22:56"},"nodeType":"YulExpressionStatement","src":"3444:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3419:2:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3423:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3415:3:56"},"nodeType":"YulFunctionCall","src":"3415:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"3428:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3411:3:56"},"nodeType":"YulFunctionCall","src":"3411:20:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3433:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3408:2:56"},"nodeType":"YulFunctionCall","src":"3408:33:56"},"nodeType":"YulIf","src":"3405:2:56"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3494:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"3501:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3490:3:56"},"nodeType":"YulFunctionCall","src":"3490:14:56"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3510:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"3514:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3506:3:56"},"nodeType":"YulFunctionCall","src":"3506:11:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3519:2:56"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3477:12:56"},"nodeType":"YulFunctionCall","src":"3477:45:56"},"nodeType":"YulExpressionStatement","src":"3477:45:56"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3546:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3553:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3542:3:56"},"nodeType":"YulFunctionCall","src":"3542:14:56"},{"kind":"number","nodeType":"YulLiteral","src":"3558:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3538:3:56"},"nodeType":"YulFunctionCall","src":"3538:23:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3563:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3531:6:56"},"nodeType":"YulFunctionCall","src":"3531:39:56"},"nodeType":"YulExpressionStatement","src":"3531:39:56"},{"nodeType":"YulAssignment","src":"3579:15:56","value":{"name":"array","nodeType":"YulIdentifier","src":"3589:5:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3579:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2606:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2617:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2629:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2637:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2645:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2653:6:56","type":""}],"src":"2534:1066:56"},{"body":{"nodeType":"YulBlock","src":"3689:312:56","statements":[{"body":{"nodeType":"YulBlock","src":"3735:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3744:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"3752:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3737:6:56"},"nodeType":"YulFunctionCall","src":"3737:22:56"},"nodeType":"YulExpressionStatement","src":"3737:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3710:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"3719:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3706:3:56"},"nodeType":"YulFunctionCall","src":"3706:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"3731:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3702:3:56"},"nodeType":"YulFunctionCall","src":"3702:32:56"},"nodeType":"YulIf","src":"3699:2:56"},{"nodeType":"YulVariableDeclaration","src":"3770:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3796:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3783:12:56"},"nodeType":"YulFunctionCall","src":"3783:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3774:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3842:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"3815:26:56"},"nodeType":"YulFunctionCall","src":"3815:33:56"},"nodeType":"YulExpressionStatement","src":"3815:33:56"},{"nodeType":"YulAssignment","src":"3857:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"3867:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3857:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"3881:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3913:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"3924:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3909:3:56"},"nodeType":"YulFunctionCall","src":"3909:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3896:12:56"},"nodeType":"YulFunctionCall","src":"3896:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3885:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3961:7:56"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"3937:23:56"},"nodeType":"YulFunctionCall","src":"3937:32:56"},"nodeType":"YulExpressionStatement","src":"3937:32:56"},{"nodeType":"YulAssignment","src":"3978:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3988:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3978:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3647:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3658:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3670:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3678:6:56","type":""}],"src":"3605:396:56"},{"body":{"nodeType":"YulBlock","src":"4093:240:56","statements":[{"body":{"nodeType":"YulBlock","src":"4139:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4148:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"4156:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4141:6:56"},"nodeType":"YulFunctionCall","src":"4141:22:56"},"nodeType":"YulExpressionStatement","src":"4141:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4114:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"4123:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4110:3:56"},"nodeType":"YulFunctionCall","src":"4110:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"4135:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4106:3:56"},"nodeType":"YulFunctionCall","src":"4106:32:56"},"nodeType":"YulIf","src":"4103:2:56"},{"nodeType":"YulVariableDeclaration","src":"4174:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4200:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4187:12:56"},"nodeType":"YulFunctionCall","src":"4187:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4178:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4246:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4219:26:56"},"nodeType":"YulFunctionCall","src":"4219:33:56"},"nodeType":"YulExpressionStatement","src":"4219:33:56"},{"nodeType":"YulAssignment","src":"4261:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"4271:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4261:6:56"}]},{"nodeType":"YulAssignment","src":"4285:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4312:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4323:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4308:3:56"},"nodeType":"YulFunctionCall","src":"4308:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4295:12:56"},"nodeType":"YulFunctionCall","src":"4295:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4285:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4051:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4062:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4074:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4082:6:56","type":""}],"src":"4006:327:56"},{"body":{"nodeType":"YulBlock","src":"4442:366:56","statements":[{"body":{"nodeType":"YulBlock","src":"4488:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4497:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"4505:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4490:6:56"},"nodeType":"YulFunctionCall","src":"4490:22:56"},"nodeType":"YulExpressionStatement","src":"4490:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4463:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"4472:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4459:3:56"},"nodeType":"YulFunctionCall","src":"4459:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"4484:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4455:3:56"},"nodeType":"YulFunctionCall","src":"4455:32:56"},"nodeType":"YulIf","src":"4452:2:56"},{"nodeType":"YulVariableDeclaration","src":"4523:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4549:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4536:12:56"},"nodeType":"YulFunctionCall","src":"4536:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4527:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4595:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4568:26:56"},"nodeType":"YulFunctionCall","src":"4568:33:56"},"nodeType":"YulExpressionStatement","src":"4568:33:56"},{"nodeType":"YulAssignment","src":"4610:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"4620:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4610:6:56"}]},{"nodeType":"YulAssignment","src":"4634:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4661:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4672:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4657:3:56"},"nodeType":"YulFunctionCall","src":"4657:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4644:12:56"},"nodeType":"YulFunctionCall","src":"4644:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4634:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"4685:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4717:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4728:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4713:3:56"},"nodeType":"YulFunctionCall","src":"4713:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4700:12:56"},"nodeType":"YulFunctionCall","src":"4700:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4689:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"4768:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4741:26:56"},"nodeType":"YulFunctionCall","src":"4741:35:56"},"nodeType":"YulExpressionStatement","src":"4741:35:56"},{"nodeType":"YulAssignment","src":"4785:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"4795:7:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4785:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4392:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4403:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4415:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4423:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4431:6:56","type":""}],"src":"4338:470:56"},{"body":{"nodeType":"YulBlock","src":"4966:520:56","statements":[{"body":{"nodeType":"YulBlock","src":"5013:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5022:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"5030:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5015:6:56"},"nodeType":"YulFunctionCall","src":"5015:22:56"},"nodeType":"YulExpressionStatement","src":"5015:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4987:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"4996:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4983:3:56"},"nodeType":"YulFunctionCall","src":"4983:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"5008:3:56","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4979:3:56"},"nodeType":"YulFunctionCall","src":"4979:33:56"},"nodeType":"YulIf","src":"4976:2:56"},{"nodeType":"YulVariableDeclaration","src":"5048:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5074:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5061:12:56"},"nodeType":"YulFunctionCall","src":"5061:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5052:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5120:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5093:26:56"},"nodeType":"YulFunctionCall","src":"5093:33:56"},"nodeType":"YulExpressionStatement","src":"5093:33:56"},{"nodeType":"YulAssignment","src":"5135:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"5145:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5135:6:56"}]},{"nodeType":"YulAssignment","src":"5159:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5186:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5197:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5182:3:56"},"nodeType":"YulFunctionCall","src":"5182:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5169:12:56"},"nodeType":"YulFunctionCall","src":"5169:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5159:6:56"}]},{"nodeType":"YulAssignment","src":"5210:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5237:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5248:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5233:3:56"},"nodeType":"YulFunctionCall","src":"5233:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5220:12:56"},"nodeType":"YulFunctionCall","src":"5220:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5210:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"5261:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5293:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5304:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5289:3:56"},"nodeType":"YulFunctionCall","src":"5289:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5276:12:56"},"nodeType":"YulFunctionCall","src":"5276:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"5265:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5342:7:56"}],"functionName":{"name":"validator_revert_t_uint8","nodeType":"YulIdentifier","src":"5317:24:56"},"nodeType":"YulFunctionCall","src":"5317:33:56"},"nodeType":"YulExpressionStatement","src":"5317:33:56"},{"nodeType":"YulAssignment","src":"5359:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"5369:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5359:6:56"}]},{"nodeType":"YulAssignment","src":"5385:43:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5412:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5423:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5408:3:56"},"nodeType":"YulFunctionCall","src":"5408:19:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5395:12:56"},"nodeType":"YulFunctionCall","src":"5395:33:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5385:6:56"}]},{"nodeType":"YulAssignment","src":"5437:43:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5464:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5475:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5460:3:56"},"nodeType":"YulFunctionCall","src":"5460:19:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5447:12:56"},"nodeType":"YulFunctionCall","src":"5447:33:56"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"5437:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4892:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4903:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4915:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4923:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4931:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4939:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4947:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"4955:6:56","type":""}],"src":"4813:673:56"},{"body":{"nodeType":"YulBlock","src":"5607:561:56","statements":[{"body":{"nodeType":"YulBlock","src":"5653:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5662:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5670:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5655:6:56"},"nodeType":"YulFunctionCall","src":"5655:22:56"},"nodeType":"YulExpressionStatement","src":"5655:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5628:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"5637:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5624:3:56"},"nodeType":"YulFunctionCall","src":"5624:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"5649:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5620:3:56"},"nodeType":"YulFunctionCall","src":"5620:32:56"},"nodeType":"YulIf","src":"5617:2:56"},{"nodeType":"YulVariableDeclaration","src":"5688:37:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5715:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5702:12:56"},"nodeType":"YulFunctionCall","src":"5702:23:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5692:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5734:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"5744:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5738:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5789:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5798:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5806:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5791:6:56"},"nodeType":"YulFunctionCall","src":"5791:22:56"},"nodeType":"YulExpressionStatement","src":"5791:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5777:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"5785:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5774:2:56"},"nodeType":"YulFunctionCall","src":"5774:14:56"},"nodeType":"YulIf","src":"5771:2:56"},{"nodeType":"YulVariableDeclaration","src":"5824:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5838:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"5849:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5834:3:56"},"nodeType":"YulFunctionCall","src":"5834:22:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5828:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5904:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5913:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5921:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5906:6:56"},"nodeType":"YulFunctionCall","src":"5906:22:56"},"nodeType":"YulExpressionStatement","src":"5906:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5883:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"5887:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5879:3:56"},"nodeType":"YulFunctionCall","src":"5879:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5894:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5875:3:56"},"nodeType":"YulFunctionCall","src":"5875:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5868:6:56"},"nodeType":"YulFunctionCall","src":"5868:35:56"},"nodeType":"YulIf","src":"5865:2:56"},{"nodeType":"YulVariableDeclaration","src":"5939:30:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5966:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5953:12:56"},"nodeType":"YulFunctionCall","src":"5953:16:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5943:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5996:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6005:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6013:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5998:6:56"},"nodeType":"YulFunctionCall","src":"5998:22:56"},"nodeType":"YulExpressionStatement","src":"5998:22:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5984:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"5992:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5981:2:56"},"nodeType":"YulFunctionCall","src":"5981:14:56"},"nodeType":"YulIf","src":"5978:2:56"},{"body":{"nodeType":"YulBlock","src":"6081:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6090:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6098:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6083:6:56"},"nodeType":"YulFunctionCall","src":"6083:22:56"},"nodeType":"YulExpressionStatement","src":"6083:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6045:2:56"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6053:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"6061:2:56","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6049:3:56"},"nodeType":"YulFunctionCall","src":"6049:15:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6041:3:56"},"nodeType":"YulFunctionCall","src":"6041:24:56"},{"kind":"number","nodeType":"YulLiteral","src":"6067:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6037:3:56"},"nodeType":"YulFunctionCall","src":"6037:33:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6072:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6034:2:56"},"nodeType":"YulFunctionCall","src":"6034:46:56"},"nodeType":"YulIf","src":"6031:2:56"},{"nodeType":"YulAssignment","src":"6116:21:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6130:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"6134:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6126:3:56"},"nodeType":"YulFunctionCall","src":"6126:11:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6116:6:56"}]},{"nodeType":"YulAssignment","src":"6146:16:56","value":{"name":"length","nodeType":"YulIdentifier","src":"6156:6:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6146:6:56"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5565:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5576:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5588:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5596:6:56","type":""}],"src":"5491:677:56"},{"body":{"nodeType":"YulBlock","src":"6242:237:56","statements":[{"body":{"nodeType":"YulBlock","src":"6288:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6297:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6305:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6290:6:56"},"nodeType":"YulFunctionCall","src":"6290:22:56"},"nodeType":"YulExpressionStatement","src":"6290:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6263:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6272:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6259:3:56"},"nodeType":"YulFunctionCall","src":"6259:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6284:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6255:3:56"},"nodeType":"YulFunctionCall","src":"6255:32:56"},"nodeType":"YulIf","src":"6252:2:56"},{"nodeType":"YulVariableDeclaration","src":"6323:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6349:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6336:12:56"},"nodeType":"YulFunctionCall","src":"6336:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6327:5:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"6423:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6432:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6440:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6425:6:56"},"nodeType":"YulFunctionCall","src":"6425:22:56"},"nodeType":"YulExpressionStatement","src":"6425:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6381:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6392:5:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6403:3:56","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6408:10:56","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6399:3:56"},"nodeType":"YulFunctionCall","src":"6399:20:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6388:3:56"},"nodeType":"YulFunctionCall","src":"6388:32:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6378:2:56"},"nodeType":"YulFunctionCall","src":"6378:43:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6371:6:56"},"nodeType":"YulFunctionCall","src":"6371:51:56"},"nodeType":"YulIf","src":"6368:2:56"},{"nodeType":"YulAssignment","src":"6458:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"6468:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6458:6:56"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6208:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6219:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6231:6:56","type":""}],"src":"6173:306:56"},{"body":{"nodeType":"YulBlock","src":"6552:187:56","statements":[{"body":{"nodeType":"YulBlock","src":"6598:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6607:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6615:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6600:6:56"},"nodeType":"YulFunctionCall","src":"6600:22:56"},"nodeType":"YulExpressionStatement","src":"6600:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6573:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6569:3:56"},"nodeType":"YulFunctionCall","src":"6569:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6594:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6565:3:56"},"nodeType":"YulFunctionCall","src":"6565:32:56"},"nodeType":"YulIf","src":"6562:2:56"},{"nodeType":"YulVariableDeclaration","src":"6633:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6659:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6646:12:56"},"nodeType":"YulFunctionCall","src":"6646:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6637:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6703:5:56"}],"functionName":{"name":"validator_revert_t_int24","nodeType":"YulIdentifier","src":"6678:24:56"},"nodeType":"YulFunctionCall","src":"6678:31:56"},"nodeType":"YulExpressionStatement","src":"6678:31:56"},{"nodeType":"YulAssignment","src":"6718:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"6728:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6718:6:56"}]}]},"name":"abi_decode_tuple_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6518:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6529:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6541:6:56","type":""}],"src":"6484:255:56"},{"body":{"nodeType":"YulBlock","src":"6873:665:56","statements":[{"body":{"nodeType":"YulBlock","src":"6920:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"6929:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"6937:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6922:6:56"},"nodeType":"YulFunctionCall","src":"6922:22:56"},"nodeType":"YulExpressionStatement","src":"6922:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6894:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6903:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6890:3:56"},"nodeType":"YulFunctionCall","src":"6890:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6915:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6886:3:56"},"nodeType":"YulFunctionCall","src":"6886:33:56"},"nodeType":"YulIf","src":"6883:2:56"},{"nodeType":"YulVariableDeclaration","src":"6955:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6974:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6968:5:56"},"nodeType":"YulFunctionCall","src":"6968:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6959:5:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"7036:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"7045:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"7053:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7038:6:56"},"nodeType":"YulFunctionCall","src":"7038:22:56"},"nodeType":"YulExpressionStatement","src":"7038:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7006:5:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7024:1:56","type":"","value":"6"},{"name":"value","nodeType":"YulIdentifier","src":"7027:5:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"7013:10:56"},"nodeType":"YulFunctionCall","src":"7013:20:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7003:2:56"},"nodeType":"YulFunctionCall","src":"7003:31:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6996:6:56"},"nodeType":"YulFunctionCall","src":"6996:39:56"},"nodeType":"YulIf","src":"6993:2:56"},{"nodeType":"YulAssignment","src":"7071:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"7081:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7071:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"7095:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7120:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"7131:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7116:3:56"},"nodeType":"YulFunctionCall","src":"7116:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7110:5:56"},"nodeType":"YulFunctionCall","src":"7110:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"7099:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"7171:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"7144:26:56"},"nodeType":"YulFunctionCall","src":"7144:35:56"},"nodeType":"YulExpressionStatement","src":"7144:35:56"},{"nodeType":"YulAssignment","src":"7188:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"7198:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7188:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"7214:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7239:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"7250:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7235:3:56"},"nodeType":"YulFunctionCall","src":"7235:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7229:5:56"},"nodeType":"YulFunctionCall","src":"7229:25:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"7218:7:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"7312:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"7321:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"7329:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7314:6:56"},"nodeType":"YulFunctionCall","src":"7314:22:56"},"nodeType":"YulExpressionStatement","src":"7314:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"7276:7:56"},{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"7289:7:56"},{"kind":"number","nodeType":"YulLiteral","src":"7298:10:56","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7285:3:56"},"nodeType":"YulFunctionCall","src":"7285:24:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7273:2:56"},"nodeType":"YulFunctionCall","src":"7273:37:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7266:6:56"},"nodeType":"YulFunctionCall","src":"7266:45:56"},"nodeType":"YulIf","src":"7263:2:56"},{"nodeType":"YulAssignment","src":"7347:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"7357:7:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7347:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"7373:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7398:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"7409:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7394:3:56"},"nodeType":"YulFunctionCall","src":"7394:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7388:5:56"},"nodeType":"YulFunctionCall","src":"7388:25:56"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"7377:7:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"7480:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"7489:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"7497:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7482:6:56"},"nodeType":"YulFunctionCall","src":"7482:22:56"},"nodeType":"YulExpressionStatement","src":"7482:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"7435:7:56"},{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"7448:7:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7465:3:56","type":"","value":"192"},{"kind":"number","nodeType":"YulLiteral","src":"7470:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7461:3:56"},"nodeType":"YulFunctionCall","src":"7461:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"7474:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7457:3:56"},"nodeType":"YulFunctionCall","src":"7457:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7444:3:56"},"nodeType":"YulFunctionCall","src":"7444:33:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7432:2:56"},"nodeType":"YulFunctionCall","src":"7432:46:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7425:6:56"},"nodeType":"YulFunctionCall","src":"7425:54:56"},"nodeType":"YulIf","src":"7422:2:56"},{"nodeType":"YulAssignment","src":"7515:17:56","value":{"name":"value_3","nodeType":"YulIdentifier","src":"7525:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7515:6:56"}]}]},"name":"abi_decode_tuple_t_int56t_uint160t_uint32t_uint192_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6815:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6826:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6838:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6846:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6854:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6862:6:56","type":""}],"src":"6744:794:56"},{"body":{"nodeType":"YulBlock","src":"7634:585:56","statements":[{"body":{"nodeType":"YulBlock","src":"7680:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7689:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7697:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7682:6:56"},"nodeType":"YulFunctionCall","src":"7682:22:56"},"nodeType":"YulExpressionStatement","src":"7682:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7655:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"7664:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7651:3:56"},"nodeType":"YulFunctionCall","src":"7651:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"7676:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7647:3:56"},"nodeType":"YulFunctionCall","src":"7647:32:56"},"nodeType":"YulIf","src":"7644:2:56"},{"nodeType":"YulVariableDeclaration","src":"7715:30:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7735:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7729:5:56"},"nodeType":"YulFunctionCall","src":"7729:16:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7719:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"7788:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7797:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7805:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7790:6:56"},"nodeType":"YulFunctionCall","src":"7790:22:56"},"nodeType":"YulExpressionStatement","src":"7790:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7760:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"7768:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7757:2:56"},"nodeType":"YulFunctionCall","src":"7757:30:56"},"nodeType":"YulIf","src":"7754:2:56"},{"nodeType":"YulVariableDeclaration","src":"7823:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7837:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"7848:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7833:3:56"},"nodeType":"YulFunctionCall","src":"7833:22:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7827:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"7903:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7912:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7920:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7905:6:56"},"nodeType":"YulFunctionCall","src":"7905:22:56"},"nodeType":"YulExpressionStatement","src":"7905:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7882:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"7886:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7878:3:56"},"nodeType":"YulFunctionCall","src":"7878:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7893:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7874:3:56"},"nodeType":"YulFunctionCall","src":"7874:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7867:6:56"},"nodeType":"YulFunctionCall","src":"7867:35:56"},"nodeType":"YulIf","src":"7864:2:56"},{"nodeType":"YulVariableDeclaration","src":"7938:19:56","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7954:2:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7948:5:56"},"nodeType":"YulFunctionCall","src":"7948:9:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7942:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7966:62:56","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8024:2:56"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"7994:29:56"},"nodeType":"YulFunctionCall","src":"7994:33:56"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"7979:14:56"},"nodeType":"YulFunctionCall","src":"7979:49:56"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"7970:5:56","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8044:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"8051:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8037:6:56"},"nodeType":"YulFunctionCall","src":"8037:17:56"},"nodeType":"YulExpressionStatement","src":"8037:17:56"},{"body":{"nodeType":"YulBlock","src":"8100:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8109:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8117:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8102:6:56"},"nodeType":"YulFunctionCall","src":"8102:22:56"},"nodeType":"YulExpressionStatement","src":"8102:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"8077:2:56"},{"name":"_2","nodeType":"YulIdentifier","src":"8081:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8073:3:56"},"nodeType":"YulFunctionCall","src":"8073:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"8086:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8069:3:56"},"nodeType":"YulFunctionCall","src":"8069:20:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8091:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8066:2:56"},"nodeType":"YulFunctionCall","src":"8066:33:56"},"nodeType":"YulIf","src":"8063:2:56"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"8161:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"8165:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8157:3:56"},"nodeType":"YulFunctionCall","src":"8157:11:56"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8174:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"8181:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8170:3:56"},"nodeType":"YulFunctionCall","src":"8170:14:56"},{"name":"_2","nodeType":"YulIdentifier","src":"8186:2:56"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"8135:21:56"},"nodeType":"YulFunctionCall","src":"8135:54:56"},"nodeType":"YulExpressionStatement","src":"8135:54:56"},{"nodeType":"YulAssignment","src":"8198:15:56","value":{"name":"array","nodeType":"YulIdentifier","src":"8208:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8198:6:56"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7600:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7611:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7623:6:56","type":""}],"src":"7543:676:56"},{"body":{"nodeType":"YulBlock","src":"8327:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"8374:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8383:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8391:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8376:6:56"},"nodeType":"YulFunctionCall","src":"8376:22:56"},"nodeType":"YulExpressionStatement","src":"8376:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8348:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"8357:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8344:3:56"},"nodeType":"YulFunctionCall","src":"8344:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"8369:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8340:3:56"},"nodeType":"YulFunctionCall","src":"8340:33:56"},"nodeType":"YulIf","src":"8337:2:56"},{"nodeType":"YulAssignment","src":"8409:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"8419:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8409:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_CollectParams_$4005_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8293:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8304:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8316:6:56","type":""}],"src":"8224:210:56"},{"body":{"nodeType":"YulBlock","src":"8552:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"8599:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8608:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8616:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8601:6:56"},"nodeType":"YulFunctionCall","src":"8601:22:56"},"nodeType":"YulExpressionStatement","src":"8601:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8573:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"8582:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8569:3:56"},"nodeType":"YulFunctionCall","src":"8569:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"8594:3:56","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8565:3:56"},"nodeType":"YulFunctionCall","src":"8565:33:56"},"nodeType":"YulIf","src":"8562:2:56"},{"nodeType":"YulAssignment","src":"8634:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"8644:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8634:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8518:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8529:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8541:6:56","type":""}],"src":"8439:220:56"},{"body":{"nodeType":"YulBlock","src":"8777:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"8824:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8833:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8841:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8826:6:56"},"nodeType":"YulFunctionCall","src":"8826:22:56"},"nodeType":"YulExpressionStatement","src":"8826:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8798:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"8807:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8794:3:56"},"nodeType":"YulFunctionCall","src":"8794:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"8819:3:56","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8790:3:56"},"nodeType":"YulFunctionCall","src":"8790:33:56"},"nodeType":"YulIf","src":"8787:2:56"},{"nodeType":"YulAssignment","src":"8859:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"8869:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8859:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8743:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8754:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8766:6:56","type":""}],"src":"8664:220:56"},{"body":{"nodeType":"YulBlock","src":"8993:1008:56","statements":[{"nodeType":"YulVariableDeclaration","src":"9003:33:56","value":{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9017:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"9026:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9013:3:56"},"nodeType":"YulFunctionCall","src":"9013:23:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9007:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"9061:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9070:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"9078:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9063:6:56"},"nodeType":"YulFunctionCall","src":"9063:22:56"},"nodeType":"YulExpressionStatement","src":"9063:22:56"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"9052:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"9056:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9048:3:56"},"nodeType":"YulFunctionCall","src":"9048:12:56"},"nodeType":"YulIf","src":"9045:2:56"},{"nodeType":"YulVariableDeclaration","src":"9096:25:56","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9116:4:56","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9110:5:56"},"nodeType":"YulFunctionCall","src":"9110:11:56"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"9100:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9130:35:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9152:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"9160:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9148:3:56"},"nodeType":"YulFunctionCall","src":"9148:17:56"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"9134:10:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9174:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"9184:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"9178:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"9261:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"9263:7:56"},"nodeType":"YulFunctionCall","src":"9263:9:56"},"nodeType":"YulExpressionStatement","src":"9263:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9220:10:56"},{"name":"_2","nodeType":"YulIdentifier","src":"9232:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9217:2:56"},"nodeType":"YulFunctionCall","src":"9217:18:56"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9240:10:56"},{"name":"memPtr","nodeType":"YulIdentifier","src":"9252:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9237:2:56"},"nodeType":"YulFunctionCall","src":"9237:22:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"9214:2:56"},"nodeType":"YulFunctionCall","src":"9214:46:56"},"nodeType":"YulIf","src":"9211:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9290:4:56","type":"","value":"0x40"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9296:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9283:6:56"},"nodeType":"YulFunctionCall","src":"9283:24:56"},"nodeType":"YulExpressionStatement","src":"9283:24:56"},{"body":{"nodeType":"YulBlock","src":"9333:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9342:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"9350:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9335:6:56"},"nodeType":"YulFunctionCall","src":"9335:22:56"},"nodeType":"YulExpressionStatement","src":"9335:22:56"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"9323:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"9327:4:56","type":"","value":"0x60"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9319:3:56"},"nodeType":"YulFunctionCall","src":"9319:13:56"},"nodeType":"YulIf","src":"9316:2:56"},{"nodeType":"YulVariableDeclaration","src":"9368:36:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9392:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"9400:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9388:3:56"},"nodeType":"YulFunctionCall","src":"9388:16:56"},"variables":[{"name":"newFreePtr_1","nodeType":"YulTypedName","src":"9372:12:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"9471:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"9473:7:56"},"nodeType":"YulFunctionCall","src":"9473:9:56"},"nodeType":"YulExpressionStatement","src":"9473:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"9422:12:56"},{"name":"_2","nodeType":"YulIdentifier","src":"9436:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9419:2:56"},"nodeType":"YulFunctionCall","src":"9419:20:56"},{"arguments":[{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"9444:12:56"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9458:10:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9441:2:56"},"nodeType":"YulFunctionCall","src":"9441:28:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"9416:2:56"},"nodeType":"YulFunctionCall","src":"9416:54:56"},"nodeType":"YulIf","src":"9413:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9500:4:56","type":"","value":"0x40"},{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"9506:12:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9493:6:56"},"nodeType":"YulFunctionCall","src":"9493:26:56"},"nodeType":"YulExpressionStatement","src":"9493:26:56"},{"nodeType":"YulVariableDeclaration","src":"9528:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9554:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9541:12:56"},"nodeType":"YulFunctionCall","src":"9541:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9532:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9600:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9573:26:56"},"nodeType":"YulFunctionCall","src":"9573:33:56"},"nodeType":"YulExpressionStatement","src":"9573:33:56"},{"expression":{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9622:10:56"},{"name":"value","nodeType":"YulIdentifier","src":"9634:5:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9615:6:56"},"nodeType":"YulFunctionCall","src":"9615:25:56"},"nodeType":"YulExpressionStatement","src":"9615:25:56"},{"nodeType":"YulVariableDeclaration","src":"9649:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9681:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"9692:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9677:3:56"},"nodeType":"YulFunctionCall","src":"9677:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9664:12:56"},"nodeType":"YulFunctionCall","src":"9664:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9653:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9732:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9705:26:56"},"nodeType":"YulFunctionCall","src":"9705:35:56"},"nodeType":"YulExpressionStatement","src":"9705:35:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9760:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"9768:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9756:3:56"},"nodeType":"YulFunctionCall","src":"9756:17:56"},{"name":"value_1","nodeType":"YulIdentifier","src":"9775:7:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9749:6:56"},"nodeType":"YulFunctionCall","src":"9749:34:56"},"nodeType":"YulExpressionStatement","src":"9749:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9803:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"9811:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9799:3:56"},"nodeType":"YulFunctionCall","src":"9799:16:56"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9841:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"9852:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9837:3:56"},"nodeType":"YulFunctionCall","src":"9837:20:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"9817:19:56"},"nodeType":"YulFunctionCall","src":"9817:41:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9792:6:56"},"nodeType":"YulFunctionCall","src":"9792:67:56"},"nodeType":"YulExpressionStatement","src":"9792:67:56"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9875:6:56"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9883:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9868:6:56"},"nodeType":"YulFunctionCall","src":"9868:26:56"},"nodeType":"YulExpressionStatement","src":"9868:26:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9914:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"9922:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9910:3:56"},"nodeType":"YulFunctionCall","src":"9910:15:56"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9952:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"9963:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9948:3:56"},"nodeType":"YulFunctionCall","src":"9948:20:56"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9927:20:56"},"nodeType":"YulFunctionCall","src":"9927:42:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9903:6:56"},"nodeType":"YulFunctionCall","src":"9903:67:56"},"nodeType":"YulExpressionStatement","src":"9903:67:56"},{"nodeType":"YulAssignment","src":"9979:16:56","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"9989:6:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9979:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_MintCallbackData_$2945_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8959:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8970:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8982:6:56","type":""}],"src":"8889:1112:56"},{"body":{"nodeType":"YulBlock","src":"10106:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"10153:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10162:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"10170:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10155:6:56"},"nodeType":"YulFunctionCall","src":"10155:22:56"},"nodeType":"YulExpressionStatement","src":"10155:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10127:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"10136:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10123:3:56"},"nodeType":"YulFunctionCall","src":"10123:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"10148:3:56","type":"","value":"352"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10119:3:56"},"nodeType":"YulFunctionCall","src":"10119:33:56"},"nodeType":"YulIf","src":"10116:2:56"},{"nodeType":"YulAssignment","src":"10188:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"10198:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10188:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_MintParams_$3936_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10072:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10083:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10095:6:56","type":""}],"src":"10006:207:56"},{"body":{"nodeType":"YulBlock","src":"10288:189:56","statements":[{"body":{"nodeType":"YulBlock","src":"10334:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10343:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"10351:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10336:6:56"},"nodeType":"YulFunctionCall","src":"10336:22:56"},"nodeType":"YulExpressionStatement","src":"10336:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10309:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"10318:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10305:3:56"},"nodeType":"YulFunctionCall","src":"10305:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"10330:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10301:3:56"},"nodeType":"YulFunctionCall","src":"10301:32:56"},"nodeType":"YulIf","src":"10298:2:56"},{"nodeType":"YulVariableDeclaration","src":"10369:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10395:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10382:12:56"},"nodeType":"YulFunctionCall","src":"10382:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10373:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10441:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10414:26:56"},"nodeType":"YulFunctionCall","src":"10414:33:56"},"nodeType":"YulExpressionStatement","src":"10414:33:56"},{"nodeType":"YulAssignment","src":"10456:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"10466:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10456:6:56"}]}]},"name":"abi_decode_tuple_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10254:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10265:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10277:6:56","type":""}],"src":"10218:259:56"},{"body":{"nodeType":"YulBlock","src":"10580:301:56","statements":[{"body":{"nodeType":"YulBlock","src":"10626:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10635:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"10643:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10628:6:56"},"nodeType":"YulFunctionCall","src":"10628:22:56"},"nodeType":"YulExpressionStatement","src":"10628:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10601:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"10610:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10597:3:56"},"nodeType":"YulFunctionCall","src":"10597:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"10622:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10593:3:56"},"nodeType":"YulFunctionCall","src":"10593:32:56"},"nodeType":"YulIf","src":"10590:2:56"},{"nodeType":"YulVariableDeclaration","src":"10661:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10680:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10674:5:56"},"nodeType":"YulFunctionCall","src":"10674:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10665:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10726:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10699:26:56"},"nodeType":"YulFunctionCall","src":"10699:33:56"},"nodeType":"YulExpressionStatement","src":"10699:33:56"},{"nodeType":"YulAssignment","src":"10741:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"10751:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10741:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"10765:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10790:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10801:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10786:3:56"},"nodeType":"YulFunctionCall","src":"10786:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10780:5:56"},"nodeType":"YulFunctionCall","src":"10780:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"10769:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"10841:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10814:26:56"},"nodeType":"YulFunctionCall","src":"10814:35:56"},"nodeType":"YulExpressionStatement","src":"10814:35:56"},{"nodeType":"YulAssignment","src":"10858:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"10868:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10858:6:56"}]}]},"name":"abi_decode_tuple_t_uint128t_uint128_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10538:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10549:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10561:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10569:6:56","type":""}],"src":"10482:399:56"},{"body":{"nodeType":"YulBlock","src":"11035:510:56","statements":[{"body":{"nodeType":"YulBlock","src":"11082:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11091:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"11099:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11084:6:56"},"nodeType":"YulFunctionCall","src":"11084:22:56"},"nodeType":"YulExpressionStatement","src":"11084:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11056:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"11065:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11052:3:56"},"nodeType":"YulFunctionCall","src":"11052:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"11077:3:56","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11048:3:56"},"nodeType":"YulFunctionCall","src":"11048:33:56"},"nodeType":"YulIf","src":"11045:2:56"},{"nodeType":"YulVariableDeclaration","src":"11117:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11136:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11130:5:56"},"nodeType":"YulFunctionCall","src":"11130:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11121:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11182:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"11155:26:56"},"nodeType":"YulFunctionCall","src":"11155:33:56"},"nodeType":"YulExpressionStatement","src":"11155:33:56"},{"nodeType":"YulAssignment","src":"11197:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"11207:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11197:6:56"}]},{"nodeType":"YulAssignment","src":"11221:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11241:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11252:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11237:3:56"},"nodeType":"YulFunctionCall","src":"11237:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11231:5:56"},"nodeType":"YulFunctionCall","src":"11231:25:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"11221:6:56"}]},{"nodeType":"YulAssignment","src":"11265:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11285:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11296:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11281:3:56"},"nodeType":"YulFunctionCall","src":"11281:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11275:5:56"},"nodeType":"YulFunctionCall","src":"11275:25:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"11265:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"11309:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11334:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11345:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11330:3:56"},"nodeType":"YulFunctionCall","src":"11330:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11324:5:56"},"nodeType":"YulFunctionCall","src":"11324:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"11313:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"11385:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"11358:26:56"},"nodeType":"YulFunctionCall","src":"11358:35:56"},"nodeType":"YulExpressionStatement","src":"11358:35:56"},{"nodeType":"YulAssignment","src":"11402:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"11412:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"11402:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"11428:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11453:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11464:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11449:3:56"},"nodeType":"YulFunctionCall","src":"11449:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11443:5:56"},"nodeType":"YulFunctionCall","src":"11443:26:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"11432:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"11505:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"11478:26:56"},"nodeType":"YulFunctionCall","src":"11478:35:56"},"nodeType":"YulExpressionStatement","src":"11478:35:56"},{"nodeType":"YulAssignment","src":"11522:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"11532:7:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"11522:6:56"}]}]},"name":"abi_decode_tuple_t_uint128t_uint256t_uint256t_uint128t_uint128_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10969:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10980:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10992:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11000:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11008:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"11016:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"11024:6:56","type":""}],"src":"10886:659:56"},{"body":{"nodeType":"YulBlock","src":"11723:743:56","statements":[{"body":{"nodeType":"YulBlock","src":"11770:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11779:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"11787:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11772:6:56"},"nodeType":"YulFunctionCall","src":"11772:22:56"},"nodeType":"YulExpressionStatement","src":"11772:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11744:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"11753:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11740:3:56"},"nodeType":"YulFunctionCall","src":"11740:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"11765:3:56","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11736:3:56"},"nodeType":"YulFunctionCall","src":"11736:33:56"},"nodeType":"YulIf","src":"11733:2:56"},{"nodeType":"YulVariableDeclaration","src":"11805:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11824:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11818:5:56"},"nodeType":"YulFunctionCall","src":"11818:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11809:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11870:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"11843:26:56"},"nodeType":"YulFunctionCall","src":"11843:33:56"},"nodeType":"YulExpressionStatement","src":"11843:33:56"},{"nodeType":"YulAssignment","src":"11885:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"11895:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11885:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"11909:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11934:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11945:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11930:3:56"},"nodeType":"YulFunctionCall","src":"11930:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11924:5:56"},"nodeType":"YulFunctionCall","src":"11924:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"11913:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"11983:7:56"}],"functionName":{"name":"validator_revert_t_int24","nodeType":"YulIdentifier","src":"11958:24:56"},"nodeType":"YulFunctionCall","src":"11958:33:56"},"nodeType":"YulExpressionStatement","src":"11958:33:56"},{"nodeType":"YulAssignment","src":"12000:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"12010:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12000:6:56"}]},{"nodeType":"YulAssignment","src":"12026:60:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12071:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12082:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12067:3:56"},"nodeType":"YulFunctionCall","src":"12067:18:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"12036:30:56"},"nodeType":"YulFunctionCall","src":"12036:50:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"12026:6:56"}]},{"nodeType":"YulAssignment","src":"12095:60:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12140:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12151:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12136:3:56"},"nodeType":"YulFunctionCall","src":"12136:18:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"12105:30:56"},"nodeType":"YulFunctionCall","src":"12105:50:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"12095:6:56"}]},{"nodeType":"YulAssignment","src":"12164:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12209:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12220:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12205:3:56"},"nodeType":"YulFunctionCall","src":"12205:19:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"12174:30:56"},"nodeType":"YulFunctionCall","src":"12174:51:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"12164:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"12234:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12259:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12270:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12255:3:56"},"nodeType":"YulFunctionCall","src":"12255:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12249:5:56"},"nodeType":"YulFunctionCall","src":"12249:26:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"12238:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"12309:7:56"}],"functionName":{"name":"validator_revert_t_uint8","nodeType":"YulIdentifier","src":"12284:24:56"},"nodeType":"YulFunctionCall","src":"12284:33:56"},"nodeType":"YulExpressionStatement","src":"12284:33:56"},{"nodeType":"YulAssignment","src":"12326:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"12336:7:56"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"12326:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"12352:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12377:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12388:3:56","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12373:3:56"},"nodeType":"YulFunctionCall","src":"12373:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12367:5:56"},"nodeType":"YulFunctionCall","src":"12367:26:56"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"12356:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"12426:7:56"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"12402:23:56"},"nodeType":"YulFunctionCall","src":"12402:32:56"},"nodeType":"YulExpressionStatement","src":"12402:32:56"},{"nodeType":"YulAssignment","src":"12443:17:56","value":{"name":"value_3","nodeType":"YulIdentifier","src":"12453:7:56"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"12443:6:56"}]}]},"name":"abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11641:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11652:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11664:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11672:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11680:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"11688:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"11696:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"11704:6:56","type":""},{"name":"value6","nodeType":"YulTypedName","src":"11712:6:56","type":""}],"src":"11550:916:56"},{"body":{"nodeType":"YulBlock","src":"12540:127:56","statements":[{"body":{"nodeType":"YulBlock","src":"12586:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12595:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"12603:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12588:6:56"},"nodeType":"YulFunctionCall","src":"12588:22:56"},"nodeType":"YulExpressionStatement","src":"12588:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12561:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"12570:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12557:3:56"},"nodeType":"YulFunctionCall","src":"12557:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"12582:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12553:3:56"},"nodeType":"YulFunctionCall","src":"12553:32:56"},"nodeType":"YulIf","src":"12550:2:56"},{"nodeType":"YulAssignment","src":"12621:40:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12651:9:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"12631:19:56"},"nodeType":"YulFunctionCall","src":"12631:30:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12621:6:56"}]}]},"name":"abi_decode_tuple_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12506:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12517:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12529:6:56","type":""}],"src":"12471:196:56"},{"body":{"nodeType":"YulBlock","src":"12742:120:56","statements":[{"body":{"nodeType":"YulBlock","src":"12788:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12797:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"12805:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12790:6:56"},"nodeType":"YulFunctionCall","src":"12790:22:56"},"nodeType":"YulExpressionStatement","src":"12790:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12763:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"12772:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12759:3:56"},"nodeType":"YulFunctionCall","src":"12759:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"12784:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12755:3:56"},"nodeType":"YulFunctionCall","src":"12755:32:56"},"nodeType":"YulIf","src":"12752:2:56"},{"nodeType":"YulAssignment","src":"12823:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12846:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12833:12:56"},"nodeType":"YulFunctionCall","src":"12833:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12823:6:56"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12708:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12719:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12731:6:56","type":""}],"src":"12672:190:56"},{"body":{"nodeType":"YulBlock","src":"12954:240:56","statements":[{"body":{"nodeType":"YulBlock","src":"13000:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13009:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"13017:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13002:6:56"},"nodeType":"YulFunctionCall","src":"13002:22:56"},"nodeType":"YulExpressionStatement","src":"13002:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12975:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"12984:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12971:3:56"},"nodeType":"YulFunctionCall","src":"12971:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"12996:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12967:3:56"},"nodeType":"YulFunctionCall","src":"12967:32:56"},"nodeType":"YulIf","src":"12964:2:56"},{"nodeType":"YulAssignment","src":"13035:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13058:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13045:12:56"},"nodeType":"YulFunctionCall","src":"13045:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13035:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"13077:45:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13107:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"13118:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13103:3:56"},"nodeType":"YulFunctionCall","src":"13103:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13090:12:56"},"nodeType":"YulFunctionCall","src":"13090:32:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"13081:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13158:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"13131:26:56"},"nodeType":"YulFunctionCall","src":"13131:33:56"},"nodeType":"YulExpressionStatement","src":"13131:33:56"},{"nodeType":"YulAssignment","src":"13173:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"13183:5:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13173:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12912:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12923:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12935:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12943:6:56","type":""}],"src":"12867:327:56"},{"body":{"nodeType":"YulBlock","src":"13297:157:56","statements":[{"body":{"nodeType":"YulBlock","src":"13343:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13352:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"13360:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13345:6:56"},"nodeType":"YulFunctionCall","src":"13345:22:56"},"nodeType":"YulExpressionStatement","src":"13345:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13318:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"13327:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13314:3:56"},"nodeType":"YulFunctionCall","src":"13314:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"13339:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13310:3:56"},"nodeType":"YulFunctionCall","src":"13310:32:56"},"nodeType":"YulIf","src":"13307:2:56"},{"nodeType":"YulAssignment","src":"13378:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13394:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13388:5:56"},"nodeType":"YulFunctionCall","src":"13388:16:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13378:6:56"}]},{"nodeType":"YulAssignment","src":"13413:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13433:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"13444:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13429:3:56"},"nodeType":"YulFunctionCall","src":"13429:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13423:5:56"},"nodeType":"YulFunctionCall","src":"13423:25:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13413:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13255:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13266:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13278:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13286:6:56","type":""}],"src":"13199:255:56"},{"body":{"nodeType":"YulBlock","src":"13582:654:56","statements":[{"body":{"nodeType":"YulBlock","src":"13628:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13637:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"13645:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13630:6:56"},"nodeType":"YulFunctionCall","src":"13630:22:56"},"nodeType":"YulExpressionStatement","src":"13630:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13603:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"13612:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13599:3:56"},"nodeType":"YulFunctionCall","src":"13599:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"13624:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13595:3:56"},"nodeType":"YulFunctionCall","src":"13595:32:56"},"nodeType":"YulIf","src":"13592:2:56"},{"nodeType":"YulAssignment","src":"13663:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13686:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13673:12:56"},"nodeType":"YulFunctionCall","src":"13673:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13663:6:56"}]},{"nodeType":"YulAssignment","src":"13705:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13732:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"13743:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13728:3:56"},"nodeType":"YulFunctionCall","src":"13728:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13715:12:56"},"nodeType":"YulFunctionCall","src":"13715:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13705:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"13756:46:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13787:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"13798:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13783:3:56"},"nodeType":"YulFunctionCall","src":"13783:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13770:12:56"},"nodeType":"YulFunctionCall","src":"13770:32:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13760:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13811:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"13821:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13815:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"13866:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13875:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"13883:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13868:6:56"},"nodeType":"YulFunctionCall","src":"13868:22:56"},"nodeType":"YulExpressionStatement","src":"13868:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13854:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"13862:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13851:2:56"},"nodeType":"YulFunctionCall","src":"13851:14:56"},"nodeType":"YulIf","src":"13848:2:56"},{"nodeType":"YulVariableDeclaration","src":"13901:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13915:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"13926:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13911:3:56"},"nodeType":"YulFunctionCall","src":"13911:22:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"13905:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"13981:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13990:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"13998:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13983:6:56"},"nodeType":"YulFunctionCall","src":"13983:22:56"},"nodeType":"YulExpressionStatement","src":"13983:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"13960:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"13964:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13956:3:56"},"nodeType":"YulFunctionCall","src":"13956:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13971:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13952:3:56"},"nodeType":"YulFunctionCall","src":"13952:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13945:6:56"},"nodeType":"YulFunctionCall","src":"13945:35:56"},"nodeType":"YulIf","src":"13942:2:56"},{"nodeType":"YulVariableDeclaration","src":"14016:30:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"14043:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14030:12:56"},"nodeType":"YulFunctionCall","src":"14030:16:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14020:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"14073:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"14082:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"14090:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14075:6:56"},"nodeType":"YulFunctionCall","src":"14075:22:56"},"nodeType":"YulExpressionStatement","src":"14075:22:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14061:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"14069:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14058:2:56"},"nodeType":"YulFunctionCall","src":"14058:14:56"},"nodeType":"YulIf","src":"14055:2:56"},{"body":{"nodeType":"YulBlock","src":"14149:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"14158:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"14166:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14151:6:56"},"nodeType":"YulFunctionCall","src":"14151:22:56"},"nodeType":"YulExpressionStatement","src":"14151:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"14122:2:56"},{"name":"length","nodeType":"YulIdentifier","src":"14126:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14118:3:56"},"nodeType":"YulFunctionCall","src":"14118:15:56"},{"kind":"number","nodeType":"YulLiteral","src":"14135:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14114:3:56"},"nodeType":"YulFunctionCall","src":"14114:24:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14140:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14111:2:56"},"nodeType":"YulFunctionCall","src":"14111:37:56"},"nodeType":"YulIf","src":"14108:2:56"},{"nodeType":"YulAssignment","src":"14184:21:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"14198:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"14202:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14194:3:56"},"nodeType":"YulFunctionCall","src":"14194:11:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"14184:6:56"}]},{"nodeType":"YulAssignment","src":"14214:16:56","value":{"name":"length","nodeType":"YulIdentifier","src":"14224:6:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"14214:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13524:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13535:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13547:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13555:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"13563:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"13571:6:56","type":""}],"src":"13459:777:56"},{"body":{"nodeType":"YulBlock","src":"14292:208:56","statements":[{"nodeType":"YulVariableDeclaration","src":"14302:26:56","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14322:5:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14316:5:56"},"nodeType":"YulFunctionCall","src":"14316:12:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14306:6:56","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14344:3:56"},{"name":"length","nodeType":"YulIdentifier","src":"14349:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14337:6:56"},"nodeType":"YulFunctionCall","src":"14337:19:56"},"nodeType":"YulExpressionStatement","src":"14337:19:56"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14391:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"14398:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14387:3:56"},"nodeType":"YulFunctionCall","src":"14387:16:56"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14409:3:56"},{"kind":"number","nodeType":"YulLiteral","src":"14414:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14405:3:56"},"nodeType":"YulFunctionCall","src":"14405:14:56"},{"name":"length","nodeType":"YulIdentifier","src":"14421:6:56"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"14365:21:56"},"nodeType":"YulFunctionCall","src":"14365:63:56"},"nodeType":"YulExpressionStatement","src":"14365:63:56"},{"nodeType":"YulAssignment","src":"14437:57:56","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14452:3:56"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14465:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"14473:2:56","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14461:3:56"},"nodeType":"YulFunctionCall","src":"14461:15:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14482:2:56","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"14478:3:56"},"nodeType":"YulFunctionCall","src":"14478:7:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14457:3:56"},"nodeType":"YulFunctionCall","src":"14457:29:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14448:3:56"},"nodeType":"YulFunctionCall","src":"14448:39:56"},{"kind":"number","nodeType":"YulLiteral","src":"14489:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14444:3:56"},"nodeType":"YulFunctionCall","src":"14444:50:56"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14437:3:56"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14269:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14276:3:56","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14284:3:56","type":""}],"src":"14241:259:56"},{"body":{"nodeType":"YulBlock","src":"14549:49:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14566:3:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14582:1:56","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"14585:5:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"14571:10:56"},"nodeType":"YulFunctionCall","src":"14571:20:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14559:6:56"},"nodeType":"YulFunctionCall","src":"14559:33:56"},"nodeType":"YulExpressionStatement","src":"14559:33:56"}]},"name":"abi_encode_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14533:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14540:3:56","type":""}],"src":"14505:93:56"},{"body":{"nodeType":"YulBlock","src":"14649:60:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14666:3:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14675:5:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14690:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"14695:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14686:3:56"},"nodeType":"YulFunctionCall","src":"14686:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"14699:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14682:3:56"},"nodeType":"YulFunctionCall","src":"14682:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14671:3:56"},"nodeType":"YulFunctionCall","src":"14671:31:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14659:6:56"},"nodeType":"YulFunctionCall","src":"14659:44:56"},"nodeType":"YulExpressionStatement","src":"14659:44:56"}]},"name":"abi_encode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14633:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14640:3:56","type":""}],"src":"14603:106:56"},{"body":{"nodeType":"YulBlock","src":"14861:126:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14884:3:56"},{"name":"value0","nodeType":"YulIdentifier","src":"14889:6:56"},{"name":"value1","nodeType":"YulIdentifier","src":"14897:6:56"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"14871:12:56"},"nodeType":"YulFunctionCall","src":"14871:33:56"},"nodeType":"YulExpressionStatement","src":"14871:33:56"},{"nodeType":"YulVariableDeclaration","src":"14913:26:56","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14927:3:56"},{"name":"value1","nodeType":"YulIdentifier","src":"14932:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14923:3:56"},"nodeType":"YulFunctionCall","src":"14923:16:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"14917:2:56","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"14955:2:56"},{"name":"end","nodeType":"YulIdentifier","src":"14959:3:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14948:6:56"},"nodeType":"YulFunctionCall","src":"14948:15:56"},"nodeType":"YulExpressionStatement","src":"14948:15:56"},{"nodeType":"YulAssignment","src":"14972:9:56","value":{"name":"_1","nodeType":"YulIdentifier","src":"14979:2:56"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14972:3:56"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14829:3:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14834:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14842:6:56","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14853:3:56","type":""}],"src":"14714:273:56"},{"body":{"nodeType":"YulBlock","src":"15093:102:56","statements":[{"nodeType":"YulAssignment","src":"15103:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15115:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15126:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15111:3:56"},"nodeType":"YulFunctionCall","src":"15111:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15103:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15145:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15160:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15176:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"15181:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15172:3:56"},"nodeType":"YulFunctionCall","src":"15172:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"15185:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15168:3:56"},"nodeType":"YulFunctionCall","src":"15168:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15156:3:56"},"nodeType":"YulFunctionCall","src":"15156:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15138:6:56"},"nodeType":"YulFunctionCall","src":"15138:51:56"},"nodeType":"YulExpressionStatement","src":"15138:51:56"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15062:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15073:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15084:4:56","type":""}],"src":"14992:203:56"},{"body":{"nodeType":"YulBlock","src":"15423:357:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15440:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15455:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15471:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"15476:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15467:3:56"},"nodeType":"YulFunctionCall","src":"15467:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"15480:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15463:3:56"},"nodeType":"YulFunctionCall","src":"15463:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15451:3:56"},"nodeType":"YulFunctionCall","src":"15451:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15433:6:56"},"nodeType":"YulFunctionCall","src":"15433:51:56"},"nodeType":"YulExpressionStatement","src":"15433:51:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15504:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15515:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15500:3:56"},"nodeType":"YulFunctionCall","src":"15500:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15531:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"15534:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"15520:10:56"},"nodeType":"YulFunctionCall","src":"15520:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15493:6:56"},"nodeType":"YulFunctionCall","src":"15493:49:56"},"nodeType":"YulExpressionStatement","src":"15493:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15562:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15573:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15558:3:56"},"nodeType":"YulFunctionCall","src":"15558:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15589:1:56","type":"","value":"2"},{"name":"value2","nodeType":"YulIdentifier","src":"15592:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"15578:10:56"},"nodeType":"YulFunctionCall","src":"15578:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15551:6:56"},"nodeType":"YulFunctionCall","src":"15551:49:56"},"nodeType":"YulExpressionStatement","src":"15551:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15620:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15631:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15616:3:56"},"nodeType":"YulFunctionCall","src":"15616:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"15640:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15656:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"15661:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15652:3:56"},"nodeType":"YulFunctionCall","src":"15652:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"15665:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15648:3:56"},"nodeType":"YulFunctionCall","src":"15648:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15636:3:56"},"nodeType":"YulFunctionCall","src":"15636:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15609:6:56"},"nodeType":"YulFunctionCall","src":"15609:60:56"},"nodeType":"YulExpressionStatement","src":"15609:60:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15689:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15700:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15685:3:56"},"nodeType":"YulFunctionCall","src":"15685:19:56"},{"kind":"number","nodeType":"YulLiteral","src":"15706:3:56","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15678:6:56"},"nodeType":"YulFunctionCall","src":"15678:32:56"},"nodeType":"YulExpressionStatement","src":"15678:32:56"},{"nodeType":"YulAssignment","src":"15719:55:56","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"15746:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15758:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15769:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15754:3:56"},"nodeType":"YulFunctionCall","src":"15754:19:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"15727:18:56"},"nodeType":"YulFunctionCall","src":"15727:47:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15719:4:56"}]}]},"name":"abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_bytes_memory_ptr__to_t_address_t_int24_t_int24_t_uint128_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15360:9:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"15371:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"15379:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15387:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15395:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15403:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15414:4:56","type":""}],"src":"15200:580:56"},{"body":{"nodeType":"YulBlock","src":"15990:362:56","statements":[{"nodeType":"YulAssignment","src":"16000:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16012:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16023:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16008:3:56"},"nodeType":"YulFunctionCall","src":"16008:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16000:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16043:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16058:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16074:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"16079:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16070:3:56"},"nodeType":"YulFunctionCall","src":"16070:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"16083:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16066:3:56"},"nodeType":"YulFunctionCall","src":"16066:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16054:3:56"},"nodeType":"YulFunctionCall","src":"16054:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16036:6:56"},"nodeType":"YulFunctionCall","src":"16036:51:56"},"nodeType":"YulExpressionStatement","src":"16036:51:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16107:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16118:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16103:3:56"},"nodeType":"YulFunctionCall","src":"16103:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16134:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"16137:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"16123:10:56"},"nodeType":"YulFunctionCall","src":"16123:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16096:6:56"},"nodeType":"YulFunctionCall","src":"16096:49:56"},"nodeType":"YulExpressionStatement","src":"16096:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16165:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16176:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16161:3:56"},"nodeType":"YulFunctionCall","src":"16161:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16192:1:56","type":"","value":"2"},{"name":"value2","nodeType":"YulIdentifier","src":"16195:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"16181:10:56"},"nodeType":"YulFunctionCall","src":"16181:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16154:6:56"},"nodeType":"YulFunctionCall","src":"16154:49:56"},"nodeType":"YulExpressionStatement","src":"16154:49:56"},{"nodeType":"YulVariableDeclaration","src":"16212:29:56","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16230:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"16235:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16226:3:56"},"nodeType":"YulFunctionCall","src":"16226:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"16239:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16222:3:56"},"nodeType":"YulFunctionCall","src":"16222:19:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16216:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16261:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16272:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16257:3:56"},"nodeType":"YulFunctionCall","src":"16257:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"16281:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16289:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16277:3:56"},"nodeType":"YulFunctionCall","src":"16277:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16250:6:56"},"nodeType":"YulFunctionCall","src":"16250:43:56"},"nodeType":"YulExpressionStatement","src":"16250:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16313:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16324:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16309:3:56"},"nodeType":"YulFunctionCall","src":"16309:19:56"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"16334:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16342:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16330:3:56"},"nodeType":"YulFunctionCall","src":"16330:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16302:6:56"},"nodeType":"YulFunctionCall","src":"16302:44:56"},"nodeType":"YulExpressionStatement","src":"16302:44:56"}]},"name":"abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_uint128__to_t_address_t_int24_t_int24_t_uint128_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15927:9:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"15938:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"15946:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15954:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15962:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15970:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15981:4:56","type":""}],"src":"15785:567:56"},{"body":{"nodeType":"YulBlock","src":"16514:244:56","statements":[{"nodeType":"YulAssignment","src":"16524:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16536:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16547:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16532:3:56"},"nodeType":"YulFunctionCall","src":"16532:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16524:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16566:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16581:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16597:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"16602:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16593:3:56"},"nodeType":"YulFunctionCall","src":"16593:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"16606:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16589:3:56"},"nodeType":"YulFunctionCall","src":"16589:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16577:3:56"},"nodeType":"YulFunctionCall","src":"16577:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16559:6:56"},"nodeType":"YulFunctionCall","src":"16559:51:56"},"nodeType":"YulExpressionStatement","src":"16559:51:56"},{"nodeType":"YulVariableDeclaration","src":"16619:29:56","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16637:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"16642:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16633:3:56"},"nodeType":"YulFunctionCall","src":"16633:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"16646:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16629:3:56"},"nodeType":"YulFunctionCall","src":"16629:19:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16623:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16668:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16679:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16664:3:56"},"nodeType":"YulFunctionCall","src":"16664:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"16688:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16696:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16684:3:56"},"nodeType":"YulFunctionCall","src":"16684:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16657:6:56"},"nodeType":"YulFunctionCall","src":"16657:43:56"},"nodeType":"YulExpressionStatement","src":"16657:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16720:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16731:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16716:3:56"},"nodeType":"YulFunctionCall","src":"16716:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"16740:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16748:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16736:3:56"},"nodeType":"YulFunctionCall","src":"16736:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16709:6:56"},"nodeType":"YulFunctionCall","src":"16709:43:56"},"nodeType":"YulExpressionStatement","src":"16709:43:56"}]},"name":"abi_encode_tuple_t_address_t_uint128_t_uint128__to_t_address_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16467:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16478:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16486:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16494:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16505:4:56","type":""}],"src":"16357:401:56"},{"body":{"nodeType":"YulBlock","src":"17000:397:56","statements":[{"nodeType":"YulAssignment","src":"17010:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17022:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17033:3:56","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17018:3:56"},"nodeType":"YulFunctionCall","src":"17018:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17010:4:56"}]},{"nodeType":"YulVariableDeclaration","src":"17046:29:56","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17064:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"17069:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"17060:3:56"},"nodeType":"YulFunctionCall","src":"17060:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"17073:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17056:3:56"},"nodeType":"YulFunctionCall","src":"17056:19:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"17050:2:56","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17091:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17106:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17114:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17102:3:56"},"nodeType":"YulFunctionCall","src":"17102:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17084:6:56"},"nodeType":"YulFunctionCall","src":"17084:34:56"},"nodeType":"YulExpressionStatement","src":"17084:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17138:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17149:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17134:3:56"},"nodeType":"YulFunctionCall","src":"17134:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"17154:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17127:6:56"},"nodeType":"YulFunctionCall","src":"17127:34:56"},"nodeType":"YulExpressionStatement","src":"17127:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17181:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17192:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17177:3:56"},"nodeType":"YulFunctionCall","src":"17177:18:56"},{"name":"value2","nodeType":"YulIdentifier","src":"17197:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17170:6:56"},"nodeType":"YulFunctionCall","src":"17170:34:56"},"nodeType":"YulExpressionStatement","src":"17170:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17224:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17235:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17220:3:56"},"nodeType":"YulFunctionCall","src":"17220:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"17244:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17252:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17240:3:56"},"nodeType":"YulFunctionCall","src":"17240:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17213:6:56"},"nodeType":"YulFunctionCall","src":"17213:43:56"},"nodeType":"YulExpressionStatement","src":"17213:43:56"},{"nodeType":"YulVariableDeclaration","src":"17265:20:56","value":{"kind":"number","nodeType":"YulLiteral","src":"17275:10:56","type":"","value":"0xffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"17269:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17305:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17316:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17301:3:56"},"nodeType":"YulFunctionCall","src":"17301:19:56"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"17326:6:56"},{"name":"_2","nodeType":"YulIdentifier","src":"17334:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17322:3:56"},"nodeType":"YulFunctionCall","src":"17322:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17294:6:56"},"nodeType":"YulFunctionCall","src":"17294:44:56"},"nodeType":"YulExpressionStatement","src":"17294:44:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17358:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17369:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17354:3:56"},"nodeType":"YulFunctionCall","src":"17354:19:56"},{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"17379:6:56"},{"name":"_2","nodeType":"YulIdentifier","src":"17387:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17375:3:56"},"nodeType":"YulFunctionCall","src":"17375:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17347:6:56"},"nodeType":"YulFunctionCall","src":"17347:44:56"},"nodeType":"YulExpressionStatement","src":"17347:44:56"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256_t_address_t_uint32_t_uint32__to_t_address_t_uint256_t_uint256_t_address_t_uint32_t_uint32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16929:9:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"16940:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"16948:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"16956:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16964:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16972:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16980:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16991:4:56","type":""}],"src":"16763:634:56"},{"body":{"nodeType":"YulBlock","src":"17571:637:56","statements":[{"nodeType":"YulVariableDeclaration","src":"17581:12:56","value":{"kind":"number","nodeType":"YulLiteral","src":"17591:2:56","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"17585:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17602:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17620:9:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17631:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17616:3:56"},"nodeType":"YulFunctionCall","src":"17616:18:56"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"17606:6:56","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17650:9:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17661:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17643:6:56"},"nodeType":"YulFunctionCall","src":"17643:21:56"},"nodeType":"YulExpressionStatement","src":"17643:21:56"},{"nodeType":"YulVariableDeclaration","src":"17673:17:56","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"17684:6:56"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"17677:3:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17699:27:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17719:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17713:5:56"},"nodeType":"YulFunctionCall","src":"17713:13:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"17703:6:56","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"17742:6:56"},{"name":"length","nodeType":"YulIdentifier","src":"17750:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17735:6:56"},"nodeType":"YulFunctionCall","src":"17735:22:56"},"nodeType":"YulExpressionStatement","src":"17735:22:56"},{"nodeType":"YulAssignment","src":"17766:25:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17777:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17788:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17773:3:56"},"nodeType":"YulFunctionCall","src":"17773:18:56"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17766:3:56"}]},{"nodeType":"YulVariableDeclaration","src":"17800:54:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17822:9:56"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"17837:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17845:2:56"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"17833:3:56"},"nodeType":"YulFunctionCall","src":"17833:15:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17818:3:56"},"nodeType":"YulFunctionCall","src":"17818:31:56"},{"kind":"number","nodeType":"YulLiteral","src":"17851:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17814:3:56"},"nodeType":"YulFunctionCall","src":"17814:40:56"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"17804:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17863:29:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17881:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17889:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17877:3:56"},"nodeType":"YulFunctionCall","src":"17877:15:56"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"17867:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17901:13:56","value":{"name":"tail","nodeType":"YulIdentifier","src":"17910:4:56"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"17905:1:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"17972:207:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17993:3:56"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"18006:6:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"18014:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18002:3:56"},"nodeType":"YulFunctionCall","src":"18002:22:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18030:2:56","type":"","value":"63"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"18026:3:56"},"nodeType":"YulFunctionCall","src":"18026:7:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17998:3:56"},"nodeType":"YulFunctionCall","src":"17998:36:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17986:6:56"},"nodeType":"YulFunctionCall","src":"17986:49:56"},"nodeType":"YulExpressionStatement","src":"17986:49:56"},{"nodeType":"YulAssignment","src":"18048:51:56","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"18083:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18077:5:56"},"nodeType":"YulFunctionCall","src":"18077:13:56"},{"name":"tail_2","nodeType":"YulIdentifier","src":"18092:6:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"18058:18:56"},"nodeType":"YulFunctionCall","src":"18058:41:56"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"18048:6:56"}]},{"nodeType":"YulAssignment","src":"18112:25:56","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"18126:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"18134:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18122:3:56"},"nodeType":"YulFunctionCall","src":"18122:15:56"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"18112:6:56"}]},{"nodeType":"YulAssignment","src":"18150:19:56","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18161:3:56"},{"name":"_1","nodeType":"YulIdentifier","src":"18166:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18157:3:56"},"nodeType":"YulFunctionCall","src":"18157:12:56"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18150:3:56"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17934:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"17937:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"17931:2:56"},"nodeType":"YulFunctionCall","src":"17931:13:56"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"17945:18:56","statements":[{"nodeType":"YulAssignment","src":"17947:14:56","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17956:1:56"},{"kind":"number","nodeType":"YulLiteral","src":"17959:1:56","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17952:3:56"},"nodeType":"YulFunctionCall","src":"17952:9:56"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"17947:1:56"}]}]},"pre":{"nodeType":"YulBlock","src":"17927:3:56","statements":[]},"src":"17923:256:56"},{"nodeType":"YulAssignment","src":"18188:14:56","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"18196:6:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18188:4:56"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17540:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17551:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17562:4:56","type":""}],"src":"17402:806:56"},{"body":{"nodeType":"YulBlock","src":"18308:92:56","statements":[{"nodeType":"YulAssignment","src":"18318:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18330:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18341:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18326:3:56"},"nodeType":"YulFunctionCall","src":"18326:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18318:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18360:9:56"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18385:6:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18378:6:56"},"nodeType":"YulFunctionCall","src":"18378:14:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18371:6:56"},"nodeType":"YulFunctionCall","src":"18371:22:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18353:6:56"},"nodeType":"YulFunctionCall","src":"18353:41:56"},"nodeType":"YulExpressionStatement","src":"18353:41:56"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18277:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18288:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18299:4:56","type":""}],"src":"18213:187:56"},{"body":{"nodeType":"YulBlock","src":"18506:76:56","statements":[{"nodeType":"YulAssignment","src":"18516:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18528:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18539:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18524:3:56"},"nodeType":"YulFunctionCall","src":"18524:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18516:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18558:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"18569:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18551:6:56"},"nodeType":"YulFunctionCall","src":"18551:25:56"},"nodeType":"YulExpressionStatement","src":"18551:25:56"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18475:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18486:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18497:4:56","type":""}],"src":"18405:177:56"},{"body":{"nodeType":"YulBlock","src":"18751:145:56","statements":[{"nodeType":"YulAssignment","src":"18761:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18773:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18784:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18769:3:56"},"nodeType":"YulFunctionCall","src":"18769:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18761:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18803:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18818:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18834:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"18839:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"18830:3:56"},"nodeType":"YulFunctionCall","src":"18830:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"18843:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18826:3:56"},"nodeType":"YulFunctionCall","src":"18826:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18814:3:56"},"nodeType":"YulFunctionCall","src":"18814:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18796:6:56"},"nodeType":"YulFunctionCall","src":"18796:51:56"},"nodeType":"YulExpressionStatement","src":"18796:51:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18867:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18878:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18863:3:56"},"nodeType":"YulFunctionCall","src":"18863:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"18883:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18856:6:56"},"nodeType":"YulFunctionCall","src":"18856:34:56"},"nodeType":"YulExpressionStatement","src":"18856:34:56"}]},"name":"abi_encode_tuple_t_contract$_NonfungiblePositionManager_$2720_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18712:9:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18723:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18731:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18742:4:56","type":""}],"src":"18587:309:56"},{"body":{"nodeType":"YulBlock","src":"19022:149:56","statements":[{"nodeType":"YulAssignment","src":"19032:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19044:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19055:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19040:3:56"},"nodeType":"YulFunctionCall","src":"19040:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19032:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19074:9:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19096:1:56","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"19099:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19085:10:56"},"nodeType":"YulFunctionCall","src":"19085:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19067:6:56"},"nodeType":"YulFunctionCall","src":"19067:40:56"},"nodeType":"YulExpressionStatement","src":"19067:40:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19127:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19138:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19123:3:56"},"nodeType":"YulFunctionCall","src":"19123:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19154:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"19157:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19143:10:56"},"nodeType":"YulFunctionCall","src":"19143:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19116:6:56"},"nodeType":"YulFunctionCall","src":"19116:49:56"},"nodeType":"YulExpressionStatement","src":"19116:49:56"}]},"name":"abi_encode_tuple_t_int24_t_int24__to_t_int24_t_int24__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18983:9:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18994:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19002:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19013:4:56","type":""}],"src":"18901:270:56"},{"body":{"nodeType":"YulBlock","src":"19333:218:56","statements":[{"nodeType":"YulAssignment","src":"19343:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19355:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19366:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19351:3:56"},"nodeType":"YulFunctionCall","src":"19351:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19343:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19385:9:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19407:1:56","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"19410:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19396:10:56"},"nodeType":"YulFunctionCall","src":"19396:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19378:6:56"},"nodeType":"YulFunctionCall","src":"19378:40:56"},"nodeType":"YulExpressionStatement","src":"19378:40:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19438:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19449:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19434:3:56"},"nodeType":"YulFunctionCall","src":"19434:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19465:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"19468:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19454:10:56"},"nodeType":"YulFunctionCall","src":"19454:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19427:6:56"},"nodeType":"YulFunctionCall","src":"19427:49:56"},"nodeType":"YulExpressionStatement","src":"19427:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19496:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19507:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19492:3:56"},"nodeType":"YulFunctionCall","src":"19492:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"19516:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19532:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"19537:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"19528:3:56"},"nodeType":"YulFunctionCall","src":"19528:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"19541:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19524:3:56"},"nodeType":"YulFunctionCall","src":"19524:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"19512:3:56"},"nodeType":"YulFunctionCall","src":"19512:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19485:6:56"},"nodeType":"YulFunctionCall","src":"19485:60:56"},"nodeType":"YulExpressionStatement","src":"19485:60:56"}]},"name":"abi_encode_tuple_t_int24_t_int24_t_rational_0_by_1__to_t_int24_t_int24_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19286:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"19297:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19305:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19313:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19324:4:56","type":""}],"src":"19176:375:56"},{"body":{"nodeType":"YulBlock","src":"19705:218:56","statements":[{"nodeType":"YulAssignment","src":"19715:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19727:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19738:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19723:3:56"},"nodeType":"YulFunctionCall","src":"19723:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19715:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19757:9:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19779:1:56","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"19782:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19768:10:56"},"nodeType":"YulFunctionCall","src":"19768:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19750:6:56"},"nodeType":"YulFunctionCall","src":"19750:40:56"},"nodeType":"YulExpressionStatement","src":"19750:40:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19810:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19821:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19806:3:56"},"nodeType":"YulFunctionCall","src":"19806:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19837:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"19840:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19826:10:56"},"nodeType":"YulFunctionCall","src":"19826:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19799:6:56"},"nodeType":"YulFunctionCall","src":"19799:49:56"},"nodeType":"YulExpressionStatement","src":"19799:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19868:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19879:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19864:3:56"},"nodeType":"YulFunctionCall","src":"19864:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"19888:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19904:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"19909:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"19900:3:56"},"nodeType":"YulFunctionCall","src":"19900:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"19913:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19896:3:56"},"nodeType":"YulFunctionCall","src":"19896:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"19884:3:56"},"nodeType":"YulFunctionCall","src":"19884:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19857:6:56"},"nodeType":"YulFunctionCall","src":"19857:60:56"},"nodeType":"YulExpressionStatement","src":"19857:60:56"}]},"name":"abi_encode_tuple_t_int24_t_int24_t_uint128__to_t_int24_t_int24_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19658:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"19669:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19677:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19685:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19696:4:56","type":""}],"src":"19556:367:56"},{"body":{"nodeType":"YulBlock","src":"20049:100:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20066:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20077:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20059:6:56"},"nodeType":"YulFunctionCall","src":"20059:21:56"},"nodeType":"YulExpressionStatement","src":"20059:21:56"},{"nodeType":"YulAssignment","src":"20089:54:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20116:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20128:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20139:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20124:3:56"},"nodeType":"YulFunctionCall","src":"20124:18:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"20097:18:56"},"nodeType":"YulFunctionCall","src":"20097:46:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20089:4:56"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20018:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20029:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20040:4:56","type":""}],"src":"19928:221:56"},{"body":{"nodeType":"YulBlock","src":"20328:162:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20345:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20356:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20338:6:56"},"nodeType":"YulFunctionCall","src":"20338:21:56"},"nodeType":"YulExpressionStatement","src":"20338:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20379:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20390:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20375:3:56"},"nodeType":"YulFunctionCall","src":"20375:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"20395:2:56","type":"","value":"12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20368:6:56"},"nodeType":"YulFunctionCall","src":"20368:30:56"},"nodeType":"YulExpressionStatement","src":"20368:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20418:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20429:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20414:3:56"},"nodeType":"YulFunctionCall","src":"20414:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"20434:14:56","type":"","value":"Not approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20407:6:56"},"nodeType":"YulFunctionCall","src":"20407:42:56"},"nodeType":"YulExpressionStatement","src":"20407:42:56"},{"nodeType":"YulAssignment","src":"20458:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20470:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20481:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20466:3:56"},"nodeType":"YulFunctionCall","src":"20466:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20458:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_70356c467a9713064077b7fa0ff1a074c93b1f7c48415be181b9cd799b628361__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20305:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20319:4:56","type":""}],"src":"20154:336:56"},{"body":{"nodeType":"YulBlock","src":"20669:175:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20686:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20697:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20679:6:56"},"nodeType":"YulFunctionCall","src":"20679:21:56"},"nodeType":"YulExpressionStatement","src":"20679:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20720:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20731:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20716:3:56"},"nodeType":"YulFunctionCall","src":"20716:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"20736:2:56","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20709:6:56"},"nodeType":"YulFunctionCall","src":"20709:30:56"},"nodeType":"YulExpressionStatement","src":"20709:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20759:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20770:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20755:3:56"},"nodeType":"YulFunctionCall","src":"20755:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"20775:27:56","type":"","value":"ERC721: nonexistent token"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20748:6:56"},"nodeType":"YulFunctionCall","src":"20748:55:56"},"nodeType":"YulExpressionStatement","src":"20748:55:56"},{"nodeType":"YulAssignment","src":"20812:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20824:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20835:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20820:3:56"},"nodeType":"YulFunctionCall","src":"20820:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20812:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_a34d5d5fb66a7aa1196581d4b63842b184b648ae201438341d04b3396c6896a9__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20646:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20660:4:56","type":""}],"src":"20495:349:56"},{"body":{"nodeType":"YulBlock","src":"21023:170:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21040:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21051:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21033:6:56"},"nodeType":"YulFunctionCall","src":"21033:21:56"},"nodeType":"YulExpressionStatement","src":"21033:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21074:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21085:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21070:3:56"},"nodeType":"YulFunctionCall","src":"21070:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"21090:2:56","type":"","value":"20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21063:6:56"},"nodeType":"YulFunctionCall","src":"21063:30:56"},"nodeType":"YulExpressionStatement","src":"21063:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21113:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21124:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21109:3:56"},"nodeType":"YulFunctionCall","src":"21109:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"21129:22:56","type":"","value":"Price slippage check"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21102:6:56"},"nodeType":"YulFunctionCall","src":"21102:50:56"},"nodeType":"YulExpressionStatement","src":"21102:50:56"},{"nodeType":"YulAssignment","src":"21161:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21173:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21184:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21169:3:56"},"nodeType":"YulFunctionCall","src":"21169:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21161:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21000:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21014:4:56","type":""}],"src":"20849:344:56"},{"body":{"nodeType":"YulBlock","src":"21372:166:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21389:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21400:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21382:6:56"},"nodeType":"YulFunctionCall","src":"21382:21:56"},"nodeType":"YulExpressionStatement","src":"21382:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21423:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21434:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21419:3:56"},"nodeType":"YulFunctionCall","src":"21419:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"21439:2:56","type":"","value":"16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21412:6:56"},"nodeType":"YulFunctionCall","src":"21412:30:56"},"nodeType":"YulExpressionStatement","src":"21412:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21462:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21473:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21458:3:56"},"nodeType":"YulFunctionCall","src":"21458:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"21478:18:56","type":"","value":"Invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21451:6:56"},"nodeType":"YulFunctionCall","src":"21451:46:56"},"nodeType":"YulExpressionStatement","src":"21451:46:56"},{"nodeType":"YulAssignment","src":"21506:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21518:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21529:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21514:3:56"},"nodeType":"YulFunctionCall","src":"21514:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21506:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_b44e5a2e76d616f71f124d91f8560c46215c55a45ba6a1b6e492edf2295dcc48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21349:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21363:4:56","type":""}],"src":"21198:340:56"},{"body":{"nodeType":"YulBlock","src":"21712:373:56","statements":[{"nodeType":"YulAssignment","src":"21722:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21734:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21745:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21730:3:56"},"nodeType":"YulFunctionCall","src":"21730:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21722:4:56"}]},{"nodeType":"YulVariableDeclaration","src":"21758:23:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21774:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21768:5:56"},"nodeType":"YulFunctionCall","src":"21768:13:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"21762:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"21790:29:56","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21808:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"21813:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"21804:3:56"},"nodeType":"YulFunctionCall","src":"21804:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"21817:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21800:3:56"},"nodeType":"YulFunctionCall","src":"21800:19:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"21794:2:56","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21835:9:56"},{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"21856:2:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21850:5:56"},"nodeType":"YulFunctionCall","src":"21850:9:56"},{"name":"_2","nodeType":"YulIdentifier","src":"21861:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21846:3:56"},"nodeType":"YulFunctionCall","src":"21846:18:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21828:6:56"},"nodeType":"YulFunctionCall","src":"21828:37:56"},"nodeType":"YulExpressionStatement","src":"21828:37:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21885:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21896:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21881:3:56"},"nodeType":"YulFunctionCall","src":"21881:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"21917:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"21921:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21913:3:56"},"nodeType":"YulFunctionCall","src":"21913:13:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21907:5:56"},"nodeType":"YulFunctionCall","src":"21907:20:56"},{"name":"_2","nodeType":"YulIdentifier","src":"21929:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21903:3:56"},"nodeType":"YulFunctionCall","src":"21903:29:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21874:6:56"},"nodeType":"YulFunctionCall","src":"21874:59:56"},"nodeType":"YulExpressionStatement","src":"21874:59:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21953:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21964:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21949:3:56"},"nodeType":"YulFunctionCall","src":"21949:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"21985:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"21989:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21981:3:56"},"nodeType":"YulFunctionCall","src":"21981:13:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21975:5:56"},"nodeType":"YulFunctionCall","src":"21975:20:56"},{"kind":"number","nodeType":"YulLiteral","src":"21997:8:56","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21971:3:56"},"nodeType":"YulFunctionCall","src":"21971:35:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21942:6:56"},"nodeType":"YulFunctionCall","src":"21942:65:56"},"nodeType":"YulExpressionStatement","src":"21942:65:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22027:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22038:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22023:3:56"},"nodeType":"YulFunctionCall","src":"22023:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22059:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"22067:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22055:3:56"},"nodeType":"YulFunctionCall","src":"22055:17:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22049:5:56"},"nodeType":"YulFunctionCall","src":"22049:24:56"},{"name":"_2","nodeType":"YulIdentifier","src":"22075:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22045:3:56"},"nodeType":"YulFunctionCall","src":"22045:33:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22016:6:56"},"nodeType":"YulFunctionCall","src":"22016:63:56"},"nodeType":"YulExpressionStatement","src":"22016:63:56"}]},"name":"abi_encode_tuple_t_struct$_MintCallbackData_$2945_memory_ptr__to_t_struct$_MintCallbackData_$2945_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21681:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21692:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21703:4:56","type":""}],"src":"21543:542:56"},{"body":{"nodeType":"YulBlock","src":"22247:188:56","statements":[{"nodeType":"YulAssignment","src":"22257:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22269:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22280:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22265:3:56"},"nodeType":"YulFunctionCall","src":"22265:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22257:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22299:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22314:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22330:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"22335:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"22326:3:56"},"nodeType":"YulFunctionCall","src":"22326:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"22339:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22322:3:56"},"nodeType":"YulFunctionCall","src":"22322:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22310:3:56"},"nodeType":"YulFunctionCall","src":"22310:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22292:6:56"},"nodeType":"YulFunctionCall","src":"22292:51:56"},"nodeType":"YulExpressionStatement","src":"22292:51:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22363:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22374:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22359:3:56"},"nodeType":"YulFunctionCall","src":"22359:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"22379:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22352:6:56"},"nodeType":"YulFunctionCall","src":"22352:34:56"},"nodeType":"YulExpressionStatement","src":"22352:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22406:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22417:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22402:3:56"},"nodeType":"YulFunctionCall","src":"22402:18:56"},{"name":"value2","nodeType":"YulIdentifier","src":"22422:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22395:6:56"},"nodeType":"YulFunctionCall","src":"22395:34:56"},"nodeType":"YulExpressionStatement","src":"22395:34:56"}]},"name":"abi_encode_tuple_t_uint128_t_uint256_t_uint256__to_t_uint128_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22200:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22211:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22219:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22227:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22238:4:56","type":""}],"src":"22090:345:56"},{"body":{"nodeType":"YulBlock","src":"22621:279:56","statements":[{"nodeType":"YulAssignment","src":"22631:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22643:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22654:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22639:3:56"},"nodeType":"YulFunctionCall","src":"22639:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22631:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22674:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22689:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22705:3:56","type":"","value":"192"},{"kind":"number","nodeType":"YulLiteral","src":"22710:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"22701:3:56"},"nodeType":"YulFunctionCall","src":"22701:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"22714:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22697:3:56"},"nodeType":"YulFunctionCall","src":"22697:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22685:3:56"},"nodeType":"YulFunctionCall","src":"22685:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22667:6:56"},"nodeType":"YulFunctionCall","src":"22667:51:56"},"nodeType":"YulExpressionStatement","src":"22667:51:56"},{"nodeType":"YulVariableDeclaration","src":"22727:20:56","value":{"kind":"number","nodeType":"YulLiteral","src":"22737:10:56","type":"","value":"0xffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"22731:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22767:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22778:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22763:3:56"},"nodeType":"YulFunctionCall","src":"22763:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"22787:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"22795:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22783:3:56"},"nodeType":"YulFunctionCall","src":"22783:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22756:6:56"},"nodeType":"YulFunctionCall","src":"22756:43:56"},"nodeType":"YulExpressionStatement","src":"22756:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22819:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22830:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22815:3:56"},"nodeType":"YulFunctionCall","src":"22815:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"22839:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"22847:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22835:3:56"},"nodeType":"YulFunctionCall","src":"22835:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22808:6:56"},"nodeType":"YulFunctionCall","src":"22808:43:56"},"nodeType":"YulExpressionStatement","src":"22808:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22871:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22882:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22867:3:56"},"nodeType":"YulFunctionCall","src":"22867:18:56"},{"name":"value3","nodeType":"YulIdentifier","src":"22887:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22860:6:56"},"nodeType":"YulFunctionCall","src":"22860:34:56"},"nodeType":"YulExpressionStatement","src":"22860:34:56"}]},"name":"abi_encode_tuple_t_uint192_t_uint32_t_uint32_t_uint256__to_t_uint192_t_uint32_t_uint32_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22566:9:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"22577:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22585:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22593:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22601:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22612:4:56","type":""}],"src":"22440:460:56"},{"body":{"nodeType":"YulBlock","src":"23006:76:56","statements":[{"nodeType":"YulAssignment","src":"23016:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23028:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23039:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23024:3:56"},"nodeType":"YulFunctionCall","src":"23024:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23016:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23058:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"23069:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23051:6:56"},"nodeType":"YulFunctionCall","src":"23051:25:56"},"nodeType":"YulExpressionStatement","src":"23051:25:56"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22975:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22986:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22997:4:56","type":""}],"src":"22905:177:56"},{"body":{"nodeType":"YulBlock","src":"23272:232:56","statements":[{"nodeType":"YulAssignment","src":"23282:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23294:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23305:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23290:3:56"},"nodeType":"YulFunctionCall","src":"23290:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23282:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23325:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"23336:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23318:6:56"},"nodeType":"YulFunctionCall","src":"23318:25:56"},"nodeType":"YulExpressionStatement","src":"23318:25:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23363:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23374:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23359:3:56"},"nodeType":"YulFunctionCall","src":"23359:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"23383:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23399:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"23404:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"23395:3:56"},"nodeType":"YulFunctionCall","src":"23395:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"23408:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23391:3:56"},"nodeType":"YulFunctionCall","src":"23391:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"23379:3:56"},"nodeType":"YulFunctionCall","src":"23379:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23352:6:56"},"nodeType":"YulFunctionCall","src":"23352:60:56"},"nodeType":"YulExpressionStatement","src":"23352:60:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23432:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23443:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23428:3:56"},"nodeType":"YulFunctionCall","src":"23428:18:56"},{"name":"value2","nodeType":"YulIdentifier","src":"23448:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23421:6:56"},"nodeType":"YulFunctionCall","src":"23421:34:56"},"nodeType":"YulExpressionStatement","src":"23421:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23475:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23486:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23471:3:56"},"nodeType":"YulFunctionCall","src":"23471:18:56"},{"name":"value3","nodeType":"YulIdentifier","src":"23491:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23464:6:56"},"nodeType":"YulFunctionCall","src":"23464:34:56"},"nodeType":"YulExpressionStatement","src":"23464:34:56"}]},"name":"abi_encode_tuple_t_uint256_t_uint128_t_uint256_t_uint256__to_t_uint256_t_uint128_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23217:9:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"23228:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"23236:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23244:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"23252:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23263:4:56","type":""}],"src":"23087:417:56"},{"body":{"nodeType":"YulBlock","src":"23638:119:56","statements":[{"nodeType":"YulAssignment","src":"23648:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23660:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23671:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23656:3:56"},"nodeType":"YulFunctionCall","src":"23656:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23648:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23690:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"23701:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23683:6:56"},"nodeType":"YulFunctionCall","src":"23683:25:56"},"nodeType":"YulExpressionStatement","src":"23683:25:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23728:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23739:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23724:3:56"},"nodeType":"YulFunctionCall","src":"23724:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"23744:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23717:6:56"},"nodeType":"YulFunctionCall","src":"23717:34:56"},"nodeType":"YulExpressionStatement","src":"23717:34:56"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23599:9:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23610:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"23618:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23629:4:56","type":""}],"src":"23509:248:56"},{"body":{"nodeType":"YulBlock","src":"24161:734:56","statements":[{"nodeType":"YulAssignment","src":"24171:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24183:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24194:3:56","type":"","value":"384"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24179:3:56"},"nodeType":"YulFunctionCall","src":"24179:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24171:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24214:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"24229:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24245:2:56","type":"","value":"96"},{"kind":"number","nodeType":"YulLiteral","src":"24249:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"24241:3:56"},"nodeType":"YulFunctionCall","src":"24241:10:56"},{"kind":"number","nodeType":"YulLiteral","src":"24253:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24237:3:56"},"nodeType":"YulFunctionCall","src":"24237:18:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24225:3:56"},"nodeType":"YulFunctionCall","src":"24225:31:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24207:6:56"},"nodeType":"YulFunctionCall","src":"24207:50:56"},"nodeType":"YulExpressionStatement","src":"24207:50:56"},{"nodeType":"YulVariableDeclaration","src":"24266:29:56","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24284:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"24289:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"24280:3:56"},"nodeType":"YulFunctionCall","src":"24280:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"24293:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24276:3:56"},"nodeType":"YulFunctionCall","src":"24276:19:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"24270:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24315:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24326:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24311:3:56"},"nodeType":"YulFunctionCall","src":"24311:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"24335:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"24343:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24331:3:56"},"nodeType":"YulFunctionCall","src":"24331:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24304:6:56"},"nodeType":"YulFunctionCall","src":"24304:43:56"},"nodeType":"YulExpressionStatement","src":"24304:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24367:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24378:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24363:3:56"},"nodeType":"YulFunctionCall","src":"24363:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"24387:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"24395:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24383:3:56"},"nodeType":"YulFunctionCall","src":"24383:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24356:6:56"},"nodeType":"YulFunctionCall","src":"24356:43:56"},"nodeType":"YulExpressionStatement","src":"24356:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24419:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24430:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24415:3:56"},"nodeType":"YulFunctionCall","src":"24415:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"24439:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"24447:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24435:3:56"},"nodeType":"YulFunctionCall","src":"24435:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24408:6:56"},"nodeType":"YulFunctionCall","src":"24408:43:56"},"nodeType":"YulExpressionStatement","src":"24408:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24471:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24482:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24467:3:56"},"nodeType":"YulFunctionCall","src":"24467:19:56"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"24492:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"24500:8:56","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24488:3:56"},"nodeType":"YulFunctionCall","src":"24488:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24460:6:56"},"nodeType":"YulFunctionCall","src":"24460:50:56"},"nodeType":"YulExpressionStatement","src":"24460:50:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24530:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24541:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24526:3:56"},"nodeType":"YulFunctionCall","src":"24526:19:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24558:1:56","type":"","value":"2"},{"name":"value5","nodeType":"YulIdentifier","src":"24561:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"24547:10:56"},"nodeType":"YulFunctionCall","src":"24547:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24519:6:56"},"nodeType":"YulFunctionCall","src":"24519:50:56"},"nodeType":"YulExpressionStatement","src":"24519:50:56"},{"expression":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"24597:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24609:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24620:3:56","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24605:3:56"},"nodeType":"YulFunctionCall","src":"24605:19:56"}],"functionName":{"name":"abi_encode_t_int24","nodeType":"YulIdentifier","src":"24578:18:56"},"nodeType":"YulFunctionCall","src":"24578:47:56"},"nodeType":"YulExpressionStatement","src":"24578:47:56"},{"expression":{"arguments":[{"name":"value7","nodeType":"YulIdentifier","src":"24655:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24667:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24678:3:56","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24663:3:56"},"nodeType":"YulFunctionCall","src":"24663:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"24634:20:56"},"nodeType":"YulFunctionCall","src":"24634:49:56"},"nodeType":"YulExpressionStatement","src":"24634:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24703:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24714:3:56","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24699:3:56"},"nodeType":"YulFunctionCall","src":"24699:19:56"},{"name":"value8","nodeType":"YulIdentifier","src":"24720:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24692:6:56"},"nodeType":"YulFunctionCall","src":"24692:35:56"},"nodeType":"YulExpressionStatement","src":"24692:35:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24747:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24758:3:56","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24743:3:56"},"nodeType":"YulFunctionCall","src":"24743:19:56"},{"name":"value9","nodeType":"YulIdentifier","src":"24764:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24736:6:56"},"nodeType":"YulFunctionCall","src":"24736:35:56"},"nodeType":"YulExpressionStatement","src":"24736:35:56"},{"expression":{"arguments":[{"name":"value10","nodeType":"YulIdentifier","src":"24801:7:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24814:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24825:3:56","type":"","value":"320"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24810:3:56"},"nodeType":"YulFunctionCall","src":"24810:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"24780:20:56"},"nodeType":"YulFunctionCall","src":"24780:50:56"},"nodeType":"YulExpressionStatement","src":"24780:50:56"},{"expression":{"arguments":[{"name":"value11","nodeType":"YulIdentifier","src":"24860:7:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24873:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24884:3:56","type":"","value":"352"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24869:3:56"},"nodeType":"YulFunctionCall","src":"24869:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"24839:20:56"},"nodeType":"YulFunctionCall","src":"24839:50:56"},"nodeType":"YulExpressionStatement","src":"24839:50:56"}]},"name":"abi_encode_tuple_t_uint96_t_address_t_address_t_address_t_uint24_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint128_t_uint128__to_t_uint96_t_address_t_address_t_address_t_uint24_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint128_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24040:9:56","type":""},{"name":"value11","nodeType":"YulTypedName","src":"24051:7:56","type":""},{"name":"value10","nodeType":"YulTypedName","src":"24060:7:56","type":""},{"name":"value9","nodeType":"YulTypedName","src":"24069:6:56","type":""},{"name":"value8","nodeType":"YulTypedName","src":"24077:6:56","type":""},{"name":"value7","nodeType":"YulTypedName","src":"24085:6:56","type":""},{"name":"value6","nodeType":"YulTypedName","src":"24093:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"24101:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"24109:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"24117:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"24125:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"24133:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"24141:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24152:4:56","type":""}],"src":"23762:1133:56"},{"body":{"nodeType":"YulBlock","src":"24994:439:56","statements":[{"nodeType":"YulVariableDeclaration","src":"25004:51:56","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"25043:11:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"25030:12:56"},"nodeType":"YulFunctionCall","src":"25030:25:56"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"25008:18:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"25144:22:56","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"25153:4:56"},{"name":"addr","nodeType":"YulIdentifier","src":"25159:4:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25146:6:56"},"nodeType":"YulFunctionCall","src":"25146:18:56"},"nodeType":"YulExpressionStatement","src":"25146:18:56"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"25078:18:56"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"25106:12:56"},"nodeType":"YulFunctionCall","src":"25106:14:56"},{"name":"base_ref","nodeType":"YulIdentifier","src":"25122:8:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25102:3:56"},"nodeType":"YulFunctionCall","src":"25102:29:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25137:2:56","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"25133:3:56"},"nodeType":"YulFunctionCall","src":"25133:7:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25098:3:56"},"nodeType":"YulFunctionCall","src":"25098:43:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25074:3:56"},"nodeType":"YulFunctionCall","src":"25074:68:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25067:6:56"},"nodeType":"YulFunctionCall","src":"25067:76:56"},"nodeType":"YulIf","src":"25064:2:56"},{"nodeType":"YulVariableDeclaration","src":"25175:47:56","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"25193:8:56"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"25203:18:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25189:3:56"},"nodeType":"YulFunctionCall","src":"25189:33:56"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"25179:6:56","type":""}]},{"nodeType":"YulAssignment","src":"25231:30:56","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"25254:6:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"25241:12:56"},"nodeType":"YulFunctionCall","src":"25241:20:56"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"25231:6:56"}]},{"body":{"nodeType":"YulBlock","src":"25304:22:56","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"25313:4:56"},{"name":"addr","nodeType":"YulIdentifier","src":"25319:4:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25306:6:56"},"nodeType":"YulFunctionCall","src":"25306:18:56"},"nodeType":"YulExpressionStatement","src":"25306:18:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25276:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"25284:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"25273:2:56"},"nodeType":"YulFunctionCall","src":"25273:30:56"},"nodeType":"YulIf","src":"25270:2:56"},{"nodeType":"YulAssignment","src":"25335:25:56","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"25347:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"25355:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25343:3:56"},"nodeType":"YulFunctionCall","src":"25343:17:56"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"25335:4:56"}]},{"body":{"nodeType":"YulBlock","src":"25411:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25420:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25423:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25413:6:56"},"nodeType":"YulFunctionCall","src":"25413:12:56"},"nodeType":"YulExpressionStatement","src":"25413:12:56"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"25376:4:56"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"25386:12:56"},"nodeType":"YulFunctionCall","src":"25386:14:56"},{"name":"length","nodeType":"YulIdentifier","src":"25402:6:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25382:3:56"},"nodeType":"YulFunctionCall","src":"25382:27:56"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"25372:3:56"},"nodeType":"YulFunctionCall","src":"25372:38:56"},"nodeType":"YulIf","src":"25369:2:56"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"24951:8:56","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"24961:11:56","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"24977:4:56","type":""},{"name":"length","nodeType":"YulTypedName","src":"24983:6:56","type":""}],"src":"24900:533:56"},{"body":{"nodeType":"YulBlock","src":"25482:198:56","statements":[{"nodeType":"YulAssignment","src":"25492:19:56","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25508:2:56","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"25502:5:56"},"nodeType":"YulFunctionCall","src":"25502:9:56"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"25492:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"25520:35:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"25542:6:56"},{"name":"size","nodeType":"YulIdentifier","src":"25550:4:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25538:3:56"},"nodeType":"YulFunctionCall","src":"25538:17:56"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"25524:10:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"25630:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"25632:7:56"},"nodeType":"YulFunctionCall","src":"25632:9:56"},"nodeType":"YulExpressionStatement","src":"25632:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"25573:10:56"},{"kind":"number","nodeType":"YulLiteral","src":"25585:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"25570:2:56"},"nodeType":"YulFunctionCall","src":"25570:34:56"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"25609:10:56"},{"name":"memPtr","nodeType":"YulIdentifier","src":"25621:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"25606:2:56"},"nodeType":"YulFunctionCall","src":"25606:22:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"25567:2:56"},"nodeType":"YulFunctionCall","src":"25567:62:56"},"nodeType":"YulIf","src":"25564:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25659:2:56","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"25663:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25652:6:56"},"nodeType":"YulFunctionCall","src":"25652:22:56"},"nodeType":"YulExpressionStatement","src":"25652:22:56"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"25462:4:56","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"25471:6:56","type":""}],"src":"25438:242:56"},{"body":{"nodeType":"YulBlock","src":"25744:122:56","statements":[{"body":{"nodeType":"YulBlock","src":"25788:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"25790:7:56"},"nodeType":"YulFunctionCall","src":"25790:9:56"},"nodeType":"YulExpressionStatement","src":"25790:9:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25760:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"25768:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"25757:2:56"},"nodeType":"YulFunctionCall","src":"25757:30:56"},"nodeType":"YulIf","src":"25754:2:56"},{"nodeType":"YulAssignment","src":"25810:50:56","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25830:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"25838:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25826:3:56"},"nodeType":"YulFunctionCall","src":"25826:17:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25849:2:56","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"25845:3:56"},"nodeType":"YulFunctionCall","src":"25845:7:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"25822:3:56"},"nodeType":"YulFunctionCall","src":"25822:31:56"},{"kind":"number","nodeType":"YulLiteral","src":"25855:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25818:3:56"},"nodeType":"YulFunctionCall","src":"25818:42:56"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"25810:4:56"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"25724:6:56","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"25735:4:56","type":""}],"src":"25685:181:56"},{"body":{"nodeType":"YulBlock","src":"25924:205:56","statements":[{"nodeType":"YulVariableDeclaration","src":"25934:10:56","value":{"kind":"number","nodeType":"YulLiteral","src":"25943:1:56","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"25938:1:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"26003:63:56","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"26028:3:56"},{"name":"i","nodeType":"YulIdentifier","src":"26033:1:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26024:3:56"},"nodeType":"YulFunctionCall","src":"26024:11:56"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"26047:3:56"},{"name":"i","nodeType":"YulIdentifier","src":"26052:1:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26043:3:56"},"nodeType":"YulFunctionCall","src":"26043:11:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26037:5:56"},"nodeType":"YulFunctionCall","src":"26037:18:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26017:6:56"},"nodeType":"YulFunctionCall","src":"26017:39:56"},"nodeType":"YulExpressionStatement","src":"26017:39:56"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"25964:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"25967:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"25961:2:56"},"nodeType":"YulFunctionCall","src":"25961:13:56"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"25975:19:56","statements":[{"nodeType":"YulAssignment","src":"25977:15:56","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"25986:1:56"},{"kind":"number","nodeType":"YulLiteral","src":"25989:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25982:3:56"},"nodeType":"YulFunctionCall","src":"25982:10:56"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"25977:1:56"}]}]},"pre":{"nodeType":"YulBlock","src":"25957:3:56","statements":[]},"src":"25953:113:56"},{"body":{"nodeType":"YulBlock","src":"26092:31:56","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"26105:3:56"},{"name":"length","nodeType":"YulIdentifier","src":"26110:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26101:3:56"},"nodeType":"YulFunctionCall","src":"26101:16:56"},{"kind":"number","nodeType":"YulLiteral","src":"26119:1:56","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26094:6:56"},"nodeType":"YulFunctionCall","src":"26094:27:56"},"nodeType":"YulExpressionStatement","src":"26094:27:56"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"26081:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"26084:6:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"26078:2:56"},"nodeType":"YulFunctionCall","src":"26078:13:56"},"nodeType":"YulIf","src":"26075:2:56"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"25902:3:56","type":""},{"name":"dst","nodeType":"YulTypedName","src":"25907:3:56","type":""},{"name":"length","nodeType":"YulTypedName","src":"25912:6:56","type":""}],"src":"25871:258:56"},{"body":{"nodeType":"YulBlock","src":"26181:86:56","statements":[{"body":{"nodeType":"YulBlock","src":"26245:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26254:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26257:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26247:6:56"},"nodeType":"YulFunctionCall","src":"26247:12:56"},"nodeType":"YulExpressionStatement","src":"26247:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26204:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26215:5:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26230:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"26235:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"26226:3:56"},"nodeType":"YulFunctionCall","src":"26226:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"26239:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26222:3:56"},"nodeType":"YulFunctionCall","src":"26222:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"26211:3:56"},"nodeType":"YulFunctionCall","src":"26211:31:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"26201:2:56"},"nodeType":"YulFunctionCall","src":"26201:42:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26194:6:56"},"nodeType":"YulFunctionCall","src":"26194:50:56"},"nodeType":"YulIf","src":"26191:2:56"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26170:5:56","type":""}],"src":"26134:133:56"},{"body":{"nodeType":"YulBlock","src":"26316:76:56","statements":[{"body":{"nodeType":"YulBlock","src":"26370:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26379:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26382:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26372:6:56"},"nodeType":"YulFunctionCall","src":"26372:12:56"},"nodeType":"YulExpressionStatement","src":"26372:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26339:5:56"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26360:5:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26353:6:56"},"nodeType":"YulFunctionCall","src":"26353:13:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26346:6:56"},"nodeType":"YulFunctionCall","src":"26346:21:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"26336:2:56"},"nodeType":"YulFunctionCall","src":"26336:32:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26329:6:56"},"nodeType":"YulFunctionCall","src":"26329:40:56"},"nodeType":"YulIf","src":"26326:2:56"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26305:5:56","type":""}],"src":"26272:120:56"},{"body":{"nodeType":"YulBlock","src":"26442:75:56","statements":[{"body":{"nodeType":"YulBlock","src":"26495:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26504:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26507:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26497:6:56"},"nodeType":"YulFunctionCall","src":"26497:12:56"},"nodeType":"YulExpressionStatement","src":"26497:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26465:5:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26483:1:56","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"26486:5:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"26472:10:56"},"nodeType":"YulFunctionCall","src":"26472:20:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"26462:2:56"},"nodeType":"YulFunctionCall","src":"26462:31:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26455:6:56"},"nodeType":"YulFunctionCall","src":"26455:39:56"},"nodeType":"YulIf","src":"26452:2:56"}]},"name":"validator_revert_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26431:5:56","type":""}],"src":"26397:120:56"},{"body":{"nodeType":"YulBlock","src":"26569:86:56","statements":[{"body":{"nodeType":"YulBlock","src":"26633:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26642:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26645:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26635:6:56"},"nodeType":"YulFunctionCall","src":"26635:12:56"},"nodeType":"YulExpressionStatement","src":"26635:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26592:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26603:5:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26618:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"26623:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"26614:3:56"},"nodeType":"YulFunctionCall","src":"26614:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"26627:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26610:3:56"},"nodeType":"YulFunctionCall","src":"26610:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"26599:3:56"},"nodeType":"YulFunctionCall","src":"26599:31:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"26589:2:56"},"nodeType":"YulFunctionCall","src":"26589:42:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26582:6:56"},"nodeType":"YulFunctionCall","src":"26582:50:56"},"nodeType":"YulIf","src":"26579:2:56"}]},"name":"validator_revert_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26558:5:56","type":""}],"src":"26522:133:56"},{"body":{"nodeType":"YulBlock","src":"26705:71:56","statements":[{"body":{"nodeType":"YulBlock","src":"26754:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26763:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26766:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26756:6:56"},"nodeType":"YulFunctionCall","src":"26756:12:56"},"nodeType":"YulExpressionStatement","src":"26756:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26728:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26739:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"26746:4:56","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"26735:3:56"},"nodeType":"YulFunctionCall","src":"26735:16:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"26725:2:56"},"nodeType":"YulFunctionCall","src":"26725:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26718:6:56"},"nodeType":"YulFunctionCall","src":"26718:35:56"},"nodeType":"YulIf","src":"26715:2:56"}]},"name":"validator_revert_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26694:5:56","type":""}],"src":"26660:116:56"}]},"contents":"{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n    function abi_decode_t_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_t_uint24(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint24t_uint160(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_t_uint24(add(headStart, 64))\n        let value_2 := calldataload(add(headStart, 96))\n        validator_revert_t_address(value_2)\n        value3 := value_2\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value3, value3) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(value3, value3) }\n        let _2 := calldataload(_1)\n        let array := allocateMemory(array_allocation_size_t_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(value3, value3) }\n        calldatacopy(add(array, 32), add(_1, 32), _2)\n        mstore(add(add(array, _2), 32), value3)\n        value3 := array\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_t_address(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_t_uint8(value_1)\n        value3 := value_1\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value0, value0) }\n        if gt(add(add(_2, mul(length, 32)), 32), dataEnd) { revert(value0, value0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_int24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_int24(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_int56t_uint160t_uint32t_uint192_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := mload(headStart)\n        if iszero(eq(value, signextend(6, value))) { revert(value2, value2) }\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        if iszero(eq(value_2, and(value_2, 0xffffffff))) { revert(value2, value2) }\n        value2 := value_2\n        let value_3 := mload(add(headStart, 96))\n        if iszero(eq(value_3, and(value_3, sub(shl(192, 1), 1)))) { revert(value3, value3) }\n        value3 := value_3\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _2 := mload(_1)\n        let array := allocateMemory(array_allocation_size_t_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(value0, value0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_decode_tuple_t_struct$_CollectParams_$4005_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := headStart\n    }\n    function abi_decode_tuple_t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value0, value0) }\n        value0 := headStart\n    }\n    function abi_decode_tuple_t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value0, value0) }\n        value0 := headStart\n    }\n    function abi_decode_tuple_t_struct$_MintCallbackData_$2945_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 128) { revert(value0, value0) }\n        let memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        let _2 := 0xffffffffffffffff\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(0x40, newFreePtr)\n        if slt(_1, 0x60) { revert(value0, value0) }\n        let newFreePtr_1 := add(memPtr, 160)\n        if or(gt(newFreePtr_1, _2), lt(newFreePtr_1, newFreePtr)) { invalid() }\n        mstore(0x40, newFreePtr_1)\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        mstore(newFreePtr, value)\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        mstore(add(memPtr, 0x60), value_1)\n        mstore(add(memPtr, 128), abi_decode_t_uint24(add(headStart, 0x40)))\n        mstore(memPtr, newFreePtr)\n        mstore(add(memPtr, 32), abi_decode_t_address(add(headStart, 0x60)))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_struct$_MintParams_$3936_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 352) { revert(value0, value0) }\n        value0 := headStart\n    }\n    function abi_decode_tuple_t_uint128(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_uint128(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint128t_uint128_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_uint128(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_t_uint128(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint128t_uint256t_uint256t_uint128t_uint128_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := mload(headStart)\n        validator_revert_t_uint128(value)\n        value0 := value\n        value1 := mload(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n        let value_1 := mload(add(headStart, 96))\n        validator_revert_t_uint128(value_1)\n        value3 := value_1\n        let value_2 := mload(add(headStart, 128))\n        validator_revert_t_uint128(value_2)\n        value4 := value_2\n    }\n    function abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(value2, value2) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_t_int24(value_1)\n        value1 := value_1\n        value2 := abi_decode_t_uint16_fromMemory(add(headStart, 64))\n        value3 := abi_decode_t_uint16_fromMemory(add(headStart, 96))\n        value4 := abi_decode_t_uint16_fromMemory(add(headStart, 128))\n        let value_2 := mload(add(headStart, 160))\n        validator_revert_t_uint8(value_2)\n        value5 := value_2\n        let value_3 := mload(add(headStart, 192))\n        validator_revert_t_bool(value_3)\n        value6 := value_3\n    }\n    function abi_decode_tuple_t_uint24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_uint24(headStart)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_t_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value2, value2) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value2, value2) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(value2, value2) }\n        value2 := add(_2, 32)\n        value3 := length\n    }\n    function abi_encode_t_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_t_int24(value, pos)\n    {\n        mstore(pos, signextend(2, value))\n    }\n    function abi_encode_t_uint128(value, pos)\n    {\n        mstore(pos, and(value, sub(shl(128, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, end)\n        end := _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 abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_bytes_memory_ptr__to_t_address_t_int24_t_int24_t_uint128_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), signextend(2, value2))\n        mstore(add(headStart, 96), and(value3, sub(shl(128, 1), 1)))\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_t_bytes(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_uint128__to_t_address_t_int24_t_int24_t_uint128_t_uint128__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), signextend(2, value2))\n        let _1 := sub(shl(128, 1), 1)\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n    }\n    function abi_encode_tuple_t_address_t_uint128_t_uint128__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        let _1 := sub(shl(128, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256_t_address_t_uint32_t_uint32__to_t_address_t_uint256_t_uint256_t_address_t_uint32_t_uint32__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, _1))\n        let _2 := 0xffffffff\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, mul(length, _1)), 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            tail_2 := abi_encode_t_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_contract$_NonfungiblePositionManager_$2720_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_encode_tuple_t_int24_t_int24__to_t_int24_t_int24__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), signextend(2, value1))\n    }\n    function abi_encode_tuple_t_int24_t_int24_t_rational_0_by_1__to_t_int24_t_int24_t_uint128__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), and(value2, sub(shl(128, 1), 1)))\n    }\n    function abi_encode_tuple_t_int24_t_int24_t_uint128__to_t_int24_t_int24_t_uint128__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), and(value2, sub(shl(128, 1), 1)))\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_t_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_70356c467a9713064077b7fa0ff1a074c93b1f7c48415be181b9cd799b628361__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Not approved\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_a34d5d5fb66a7aa1196581d4b63842b184b648ae201438341d04b3396c6896a9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: nonexistent token\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Price slippage check\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b44e5a2e76d616f71f124d91f8560c46215c55a45ba6a1b6e492edf2295dcc48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_struct$_MintCallbackData_$2945_memory_ptr__to_t_struct$_MintCallbackData_$2945_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := mload(value0)\n        let _2 := sub(shl(160, 1), 1)\n        mstore(headStart, and(mload(_1), _2))\n        mstore(add(headStart, 0x20), and(mload(add(_1, 0x20)), _2))\n        mstore(add(headStart, 0x40), and(mload(add(_1, 0x40)), 0xffffff))\n        mstore(add(headStart, 0x60), and(mload(add(value0, 0x20)), _2))\n    }\n    function abi_encode_tuple_t_uint128_t_uint256_t_uint256__to_t_uint128_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(128, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint192_t_uint32_t_uint32_t_uint256__to_t_uint192_t_uint32_t_uint32_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, and(value0, sub(shl(192, 1), 1)))\n        let _1 := 0xffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint128_t_uint256_t_uint256__to_t_uint256_t_uint128_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(128, 1), 1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint96_t_address_t_address_t_address_t_uint24_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint128_t_uint128__to_t_uint96_t_address_t_address_t_address_t_uint24_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint128_t_uint128__fromStack_reversed(headStart, value11, value10, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 384)\n        mstore(headStart, and(value0, sub(shl(96, 1), 1)))\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, 0xffffff))\n        mstore(add(headStart, 160), signextend(2, value5))\n        abi_encode_t_int24(value6, add(headStart, 192))\n        abi_encode_t_uint128(value7, add(headStart, 224))\n        mstore(add(headStart, 256), value8)\n        mstore(add(headStart, 288), value9)\n        abi_encode_t_uint128(value10, add(headStart, 320))\n        abi_encode_t_uint128(value11, add(headStart, 352))\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(addr, addr) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(addr, addr) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(and(add(length, 0x1f), not(31)), 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function validator_revert_t_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function validator_revert_t_int24(value)\n    {\n        if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n    }\n    function validator_revert_t_uint128(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(128, 1), 1)))) { revert(0, 0) }\n    }\n    function validator_revert_t_uint8(value)\n    {\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n}","id":56,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2746":[{"length":32,"start":5270}],"2749":[{"length":32,"start":5303}],"3232":[{"length":32,"start":2588},{"length":32,"start":3389},{"length":32,"start":3588},{"length":32,"start":4132},{"length":32,"start":10737},{"length":32,"start":11353},{"length":32,"start":11885},{"length":32,"start":12833},{"length":32,"start":14635}],"3236":[{"length":32,"start":528},{"length":32,"start":5795},{"length":32,"start":6030},{"length":32,"start":6166},{"length":32,"start":14149},{"length":32,"start":14219},{"length":32,"start":14335}]},"linkReferences":{},"object":"6080604052600436106102005760003560e01c80634f6ccce7116101145780634f6ccce7146104b85780636352211e146104d85780636c0360eb146104f857806370a082311461050d57806375e39cec1461052d5780637ac2ff7b1461055d578063883164561461057057806395d89b411461059357806397f12a83146105a857806399fbab88146105bb578063a22cb465146105f3578063a4a78f0c14610613578063ac9650d814610626578063b88d4fde14610646578063c2e3140a14610666578063c45a015514610679578063c87b56dd1461068e578063df2ab5bb146106ae578063e70eb392146106c1578063e985e9c5146106d4578063f3995c67146106f4578063fc6f78651461070757610270565b806301ffc9a714610275578063050eb2eb146102ab57806306fdde03146102be578063081812fc146102e0578063095ea7b31461030d5780630c49ccbe1461032d57806312210e8a1461034e57806313ead562146103565780631507a8f41461036957806318160ddd14610389578063219f5d17146103ab57806323b872dd146103cd57806329048e7b146103ed5780632f745c591461040057806330adf81f146104205780633644e5151461043557806342842e0e1461044a57806342966c681461046a5780634659a4941461047d57806349404b7c146104905780634aa4a4fc146104a357610270565b3661027057336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461026e576040805162461bcd60e51b81526020600482015260096024820152684e6f7420574554483960b81b604482015290519081900360640190fd5b005b600080fd5b34801561028157600080fd5b50610295610290366004615406565b61071a565b6040516102a291906159f1565b60405180910390f35b61026e6102b93660046150f5565b61073d565b3480156102ca57600080fd5b506102d3610767565b6040516102a29190615a58565b3480156102ec57600080fd5b506103006102fb366004615769565b6107fd565b6040516102a29190615892565b34801561031957600080fd5b5061026e6103283660046152d1565b610850565b61034061033b366004615535565b610926565b6040516102a2929190615bce565b61026e610d11565b610300610364366004615165565b610d1b565b34801561037557600080fd5b5061026e6103843660046157c8565b61100f565b34801561039557600080fd5b5061039e61108d565b6040516102a291906159fc565b6103be6103b9366004615546565b61109e565b6040516102a293929190615b5c565b3480156103d957600080fd5b5061026e6103e83660046151be565b611379565b61026e6103fb366004615769565b6113d0565b34801561040c57600080fd5b5061039e61041b3660046152d1565b611422565b34801561042c57600080fd5b5061039e61144d565b34801561044157600080fd5b5061039e611471565b34801561045657600080fd5b5061026e6104653660046151be565b61152f565b61026e610478366004615769565b61154a565b61026e61048b36600461533d565b611605565b61026e61049e366004615781565b61169f565b3480156104af57600080fd5b50610300611814565b3480156104c457600080fd5b5061039e6104d3366004615769565b611838565b3480156104e457600080fd5b506103006104f3366004615769565b61184e565b34801561050457600080fd5b506102d3611876565b34801561051957600080fd5b5061039e6105283660046150f5565b61187b565b34801561053957600080fd5b5061054d610548366004615769565b6118e3565b6040516102a29493929190615b7d565b61026e61056b36600461533d565b611a30565b61058361057e366004615601565b611dc0565b6040516102a29493929190615baa565b34801561059f57600080fd5b506102d3612349565b61026e6105b63660046150f5565b6123aa565b3480156105c757600080fd5b506105db6105d6366004615769565b6123d4565b6040516102a29c9b9a99989796959493929190615bdc565b3480156105ff57600080fd5b5061026e61060e3660046152a4565b612629565b61026e61062136600461533d565b61272a565b610639610634366004615398565b6127c3565b6040516102a29190615991565b34801561065257600080fd5b5061026e6106613660046151fe565b612902565b61026e61067436600461533d565b612960565b34801561068557600080fd5b506103006129ef565b34801561069a57600080fd5b506102d36106a9366004615769565b612a13565b61026e6106bc3660046152fc565b612aad565b61026e6106cf366004615781565b612b85565b3480156106e057600080fd5b506102956106ef36600461512d565b612cd1565b61026e61070236600461533d565b612cff565b61034061071536600461551e565b612d71565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b61074561321f565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107f35780601f106107c8576101008083540402835291602001916107f3565b820191906000526020600020905b8154815290600101906020018083116107d657829003601f168201915b5050505050905090565b6000610808826132cd565b61082d5760405162461bcd60e51b815260040161082490615a91565b60405180910390fd5b506000908152600c6020526040902054600160601b90046001600160a01b031690565b600061085b8261184e565b9050806001600160a01b0316836001600160a01b031614156108ae5760405162461bcd60e51b8152600401808060200182810382526021815260200180615f416021913960400191505060405180910390fd5b806001600160a01b03166108c06132da565b6001600160a01b031614806108dc57506108dc816106ef6132da565b6109175760405162461bcd60e51b8152600401808060200182810382526038815260200180615e4b6038913960400191505060405180910390fd5b61092183836132de565b505050565b600080823561093481613354565b83608001356109428161337d565b60006109546040870160208801615613565b6001600160801b03161161096757600080fd5b84356000908152600c602090815260409182902060018101549092600160801b9091046001600160801b0316916109a2918901908901615613565b6001600160801b0316816001600160801b031610156109c057600080fd5b6001828101546001600160501b03166000908152600b60209081526040808320815160608101835281546001600160a01b039081168252919095015490811692850192909252600160a01b90910462ffffff1690830152610a417f0000000000000000000000000000000000000000000000000000000000000000836133c8565b9050610a4d84826134a7565b60018401546001600160a01b0382169063a34123a790600160501b8104600290810b91600160681b9004900b610a8960408e0160208f01615613565b6040518463ffffffff1660e01b8152600401610aa793929190615a32565b6040805180830381600087803b158015610ac057600080fd5b505af1158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af891906157a5565b909850965060408901358810801590610b15575088606001358710155b610b315760405162461bcd60e51b815260040161082490615ac4565b6001840154600090610b5a903090600160501b8104600290810b91600160681b9004900b61360c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610b8b91906159fc565b60a06040518083038186803b158015610ba357600080fd5b505afa158015610bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdb919061565d565b50509250925050610c0087600201548303876001600160801b0316600160801b613661565b6004880180546001600160801b03198116928e016001600160801b039182160181169290921790556003880154610c4191908303908816600160801b613661565b6004880180546001600160801b03808216938e01600160801b9283900482160116029190911790556002870182905560038701819055610c8760408d0160208e01615613565b86038760010160106101000a8154816001600160801b0302191690836001600160801b031602179055508b600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48d6020016020810190610cea9190615613565b8d8d604051610cfb93929190615b5c565b60405180910390a2505050505050505050915091565b610d19613710565b565b6000836001600160a01b0316856001600160a01b031610610d3b57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b158015610dc657600080fd5b505afa158015610dda573d6000803e3d6000fd5b505050506040513d6020811015610df057600080fd5b505190506001600160a01b038116610f26577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b505050506040513d6020811015610eb957600080fd5b50516040805163f637731d60e01b81526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050611007565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610f6157600080fd5b505afa158015610f75573d6000803e3d6000fd5b505050506040513d60e0811015610f8b57600080fd5b505190506001600160a01b03811661100557816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610fec57600080fd5b505af1158015611000573d6000803e3d6000fd5b505050505b505b949350505050565b600061101d82840184615557565b905061104d7f00000000000000000000000000000000000000000000000000000000000000008260000151613720565b50841561106857805151602082015161106891903388613743565b83156110865761108681600001516020015182602001513387613743565b5050505050565b600061109960026138d3565b905090565b60008060008360a001356110b18161337d565b84356000908152600c602090815260408083206001808201546001600160501b0381168652600b855283862084516060808201875282546001600160a01b039081168352929094015480831682890190815262ffffff600160a01b9092048216838901908152885161014081018a528451861681529151909416818a0152925116828701523082850152600160501b8304600290810b810b608080850191909152600160681b909404810b900b60a0830152958c013560c0820152938b013560e0850152908a01356101008401528901356101208301529290611193906138de565b6001870154939a50919850965091506000906111c6903090600160501b8104600290810b91600160681b9004900b61360c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016111f791906159fc565b60a06040518083038186803b15801561120f57600080fd5b505afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611247919061565d565b50509250925050611283866002015483038760010160109054906101000a90046001600160801b03166001600160801b0316600160801b613661565b6004870180546001600160801b0380821690930183166001600160801b0319909116179055600387015460018801546112ca9291840391600160801b918290041690613661565b6004870180546001600160801b03600160801b8083048216909401811690930292169190911790556112fc86856134a7565b60028601829055600386018190556001860180546001600160801b03600160801b80830482168e0182160291161790556040518b35907f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f90611363908d908d908d90615b5c565b60405180910390a2505050505050509193909250565b61138a6113846132da565b82613b19565b6113c55760405162461bcd60e51b8152600401808060200182810382526031815260200180615f626031913960400191505060405180910390fd5b610921838383613bb5565b806113da81613354565b6000828152600c602052604090206113f0613cef565b60058201805463ffffffff92909216600160e01b026001600160e01b0390921691909117905560006006909101555050565b6001600160a01b03821660009081526001602052604081206114449083613d0b565b90505b92915050565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006114de613d17565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b61092183838360405180602001604052806000815250612902565b8061155481613354565b6000828152600c602052604090206001810154600160801b90046001600160801b031615801561158f575060048101546001600160801b0316155b80156115ad57506004810154600160801b90046001600160801b0316155b80156115bb57506006810154155b6115c457600080fd5b6000838152600c6020526040812081815560018101829055600281018290556003810182905560048101829055600581018290556006015561092183613d1b565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561167f57600080fd5b505af1158015611693573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561170e57600080fd5b505afa158015611722573d6000803e3d6000fd5b505050506040513d602081101561173857600080fd5b5051905082811015611786576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e7420574554483960701b604482015290519081900360640190fd5b8015610921577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156117f257600080fd5b505af1158015611806573d6000803e3d6000fd5b505050506109218282613dd6565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080611846600284613ec5565b509392505050565b600061144782604051806060016040528060298152602001615ead6029913960029190613ee3565b606090565b60006001600160a01b0382166118c25760405162461bcd60e51b815260040180806020018281038252602a815260200180615e83602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600160205260409020611447906138d3565b6000818152600c6020908152604080832081516101c08101835281546001600160601b03811682526001600160a01b03600160601b909104169381019390935260018101546001600160501b038116928401839052600160501b8104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e08601526004830154808216610100870152919091041661012084015260058101546001600160c01b03811661014085015263ffffffff600160c01b82048116610160860152600160e01b90910416610180840152600601546101a083015282918291829190611a085760405162461bcd60e51b815260040161082490615af2565b806101400151816101600151826101800151836101a001519450945094509450509193509193565b83611a3a8161337d565b6000611a44611471565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad8989611a7081613ef0565b604080516020808201969096526001600160a01b03909416848201526060840192909252608083015260a08083018b90528151808403909101815260c08301825280519084012061190160f01b60e084015260e283019490945261010280830194909452805180830390940184526101229091019052815191012090506000611af88861184e565b9050806001600160a01b0316896001600160a01b03161415611b61576040805162461bcd60e51b815260206004820152601f60248201527f4552433732315065726d69743a20617070726f76616c20746f206f776e657200604482015290519081900360640190fd5b611b6a81613f25565b15611cd2576040805160208082018890528183018790526001600160f81b031960f88a901b1660608301528251604181840301815260618301808552630b135d3f60e11b90526065830186815260858401948552815160a585015281516001600160a01b03871695631626ba7e958995919260c59091019185019080838360005b83811015611c03578181015183820152602001611beb565b50505050905090810190601f168015611c305780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015611c4e57600080fd5b505afa158015611c62573d6000803e3d6000fd5b505050506040513d6020811015611c7857600080fd5b50516001600160e01b031916630b135d3f60e11b14611ccd576040805162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611dab565b600060018388888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611d2e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611d645750816001600160a01b0316816001600160a01b0316145b611da9576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b505b611db589896132de565b505050505050505050565b600080600080846101400135611dd58161337d565b604080516101408101909152600090611ea19080611df660208b018b6150f5565b6001600160a01b03168152602001896020016020810190611e1791906150f5565b6001600160a01b03168152602001611e3560608b0160408c0161574f565b62ffffff168152306020820152604001611e5560808b0160608c0161542e565b60020b8152602001611e6d60a08b0160808c0161542e565b60020b81526020018960a0013581526020018960c0013581526020018960e0013581526020018961010001358152506138de565b92975090955093509050611eee611ec061014089016101208a016150f5565b600d80546001600160b01b0319811660016001600160b01b0392831690810190921617909155975087613f2b565b6000611f1930611f0460808b0160608c0161542e565b611f1460a08c0160808d0161542e565b61360c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401611f4a91906159fc565b60a06040518083038186803b158015611f6257600080fd5b505afa158015611f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9a919061565d565b5050925092505060006120138560405180606001604052808e6000016020810190611fc591906150f5565b6001600160a01b031681526020018e6020016020810190611fe691906150f5565b6001600160a01b031681526020018e6040016020810190612007919061574f565b62ffffff169052614046565b9050604051806101c0016040528060006001600160601b0316815260200160006001600160a01b03168152602001826001600160501b031681526020018c6060016020810190612063919061542e565b60020b815260200161207b60a08e0160808f0161542e565b60020b81526020018a6001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160c01b03168152602001600063ffffffff168152602001600063ffffffff1681526020016000815250600c60008c815260200190815260200160002060008201518160000160006101000a8154816001600160601b0302191690836001600160601b03160217905550602082015181600001600c6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160501b0302191690836001600160501b03160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055506101408201518160050160006101000a8154816001600160c01b0302191690836001600160c01b031602179055506101608201518160050160186101000a81548163ffffffff021916908363ffffffff16021790555061018082015181600501601c6101000a81548163ffffffff021916908363ffffffff1602179055506101a08201518160060155905050897f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f8a8a8a60405161233493929190615b5c565b60405180910390a25050505050509193509193565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107f35780601f106107c8576101008083540402835291602001916107f3565b6123b261321f565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600c6020908152604080832081516101c08101835281546001600160601b03811682526001600160a01b03600160601b909104169381019390935260018101546001600160501b038116928401839052600160501b8104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e08601526004830154808216610100870152919091041661012084015260058101546001600160c01b03811661014085015263ffffffff600160c01b82048116610160860152600160e01b90910416610180840152600601546101a083015282918291829182918291829182918291829182918291906125095760405162461bcd60e51b815260040161082490615af2565b6000600b600083604001516001600160501b03166001600160501b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681525050905081600001518260200151826000015183602001518460400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001519d509d509d509d509d509d509d509d509d509d509d509d50505091939597999b5091939597999b565b6126316132da565b6001600160a01b0316826001600160a01b03161415612693576040805162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015290519081900360640190fd5b80600560006126a06132da565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556126e46132da565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561277b57600080fd5b505afa15801561278f573d6000803e3d6000fd5b505050506040513d60208110156127a557600080fd5b505110156127bb576127bb868686868686611605565b505050505050565b6060816001600160401b03811180156127db57600080fd5b5060405190808252806020026020018201604052801561280f57816020015b60608152602001906001900390816127fa5790505b50905060005b828110156128fb576000803086868581811061282d57fe5b905060200281019061283f9190615c76565b60405161284d929190615882565b600060405180830381855af49150503d8060008114612888576040519150601f19603f3d011682016040523d82523d6000602084013e61288d565b606091505b5091509150816128d9576044815110156128a657600080fd5b600481019050808060200190518101906128c091906154b5565b60405162461bcd60e51b81526004016108249190615a58565b808484815181106128e657fe5b60209081029190910101525050600101612815565b5092915050565b61291361290d6132da565b83613b19565b61294e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f626031913960400191505060405180910390fd5b61295a84848484614125565b50505050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156129af57600080fd5b505afa1580156129c3573d6000803e3d6000fd5b505050506040513d60208110156129d957600080fd5b505110156127bb576127bb868686868686612cff565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060612a1e826132cd565b612a2757600080fd5b600e5460405163e9dc637560e01b81526001600160a01b039091169063e9dc637590612a599030908690600401615a05565b60006040518083038186803b158015612a7157600080fd5b505afa158015612a85573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261144791908101906154b5565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612afc57600080fd5b505afa158015612b10573d6000803e3d6000fd5b505050506040513d6020811015612b2657600080fd5b5051905082811015612b74576040805162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a103a37b5b2b760711b604482015290519081900360640190fd5b801561295a5761295a848383614177565b81612b8f81613354565b6001600160a01b038216612ba257600080fd5b6000838152600c6020526040812060068101549091612bbf613cef565b6000600685018190556005850180546001600160e01b0316600160e01b63ffffffff851602179055600f546001808701546001600160501b03168352600b6020908152604093849020845160608101865281546001600160a01b039081168252919093015480821692840192909252600160a01b90910462ffffff169382019390935292935016906332d5eeaf90879085908a90612c7e907f0000000000000000000000000000000000000000000000000000000000000000906133c8565b600589015460405160e087901b6001600160e01b0319168152612cb79594939291600160c01b900463ffffffff16908990600401615952565b600060405180830381600087803b15801561167f57600080fd5b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561167f57600080fd5b6000808235612d7f81613354565b6000612d916060860160408701615613565b6001600160801b03161180612dbe57506000612db36080860160608701615613565b6001600160801b0316115b612dc757600080fd5b600080612dda60408701602088016150f5565b6001600160a01b031614612dfd57612df860408601602087016150f5565b612dff565b305b85356000908152600c602090815260408083206001808201546001600160501b03168552600b8452828520835160608101855281546001600160a01b039081168252919092015490811694820194909452600160a01b90930462ffffff169183019190915292935090612e927f0000000000000000000000000000000000000000000000000000000000000000836133c8565b600484015460018501549192506001600160801b0380821692600160801b928390048216929004161561308857600185015460405163a34123a760e01b81526001600160a01b0385169163a34123a791612f0991600160501b8104600290810b92600160681b909204900b90600090600401615a32565b6040805180830381600087803b158015612f2257600080fd5b505af1158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a91906157a5565b5050600185015460009081906001600160a01b0386169063514ea4bf90612f98903090600160501b8104600290810b91600160681b9004900b61360c565b6040518263ffffffff1660e01b8152600401612fb491906159fc565b60a06040518083038186803b158015612fcc57600080fd5b505afa158015612fe0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613004919061565d565b50509250925050613040876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613661565b84019350613079876003015482038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613661565b60028801929092556003870155015b6000806001600160801b0384166130a560608e0160408f01615613565b6001600160801b0316116130c8576130c360608d0160408e01615613565b6130ca565b835b836001600160801b03168d60600160208101906130e79190615613565b6001600160801b03161161310a5761310560808e0160608f01615613565b61310c565b835b60018901546040516309e3d67b60e31b81529294509092506001600160a01b03871691634f1eb3d89161315f918c91600160501b8104600290810b92600160681b909204900b90889088906004016158eb565b6040805180830381600087803b15801561317857600080fd5b505af115801561318c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b0919061562f565b6004890180546001600160801b03196001600160801b03918216600160801b878a0384160217168689038216179091556040519281169d50169a508c35907f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f0190610cfb908b9086908690615928565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561327857600080fd5b505afa15801561328c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b09190615111565b6001600160a01b0316336001600160a01b031614610d1957600080fd5b60006114476002836142be565b3390565b6000818152600c6020526040902080546001600160601b0316600160601b6001600160a01b03851690810291909117909155819061331b8261184e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61335e3382613b19565b61337a5760405162461bcd60e51b815260040161082490615a6b565b50565b8042111561337a576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b0316106133f057600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6001600160601b03191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b60018201546040516351c403f960e11b81526000916001600160a01b0384169163a38807f2916134f091600160501b8204600290810b92600160681b9004900b90600401615a1e565b60806040518083038186803b15801561350857600080fd5b505afa15801561351c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613540919061544a565b60058701549094506001600160c01b0380861691161092506135659150505750613608565b6005830154600160c01b900463ffffffff16156135bf57600583015460018401546135b3916001600160c01b0390811684031690600160801b90046001600160801b0316600160401b613661565b60068401805490910190555b6005830180546001600160c01b0319166001600160c01b0383161790556135e4613cef565b8360050160186101000a81548163ffffffff021916908363ffffffff160217905550505b5050565b604080516001600160601b0319606086901b16602080830191909152600285810b60e890811b60348501529085900b901b60378301528251601a818403018152603a90920190925280519101205b9392505050565b6000808060001985870986860292508281109083900303905080613697576000841161368c57600080fd5b50829004905061365a565b8084116136a357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b4715610d1957610d193347613dd6565b600061372c83836133c8565b9050336001600160a01b0382161461144757600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156137845750804710155b156138a6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156137e457600080fd5b505af11580156137f8573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561387457600080fd5b505af1158015613888573d6000803e3d6000fd5b505050506040513d602081101561389e57600080fd5b5061295a9050565b6001600160a01b0383163014156138c7576138c2848383614177565b61295a565b61295a848484846142ca565b60006114478261441a565b6000806000806000604051806060016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001876040015162ffffff1681525090506139507f0000000000000000000000000000000000000000000000000000000000000000826133c8565b91506000826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561398d57600080fd5b505afa1580156139a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c591906156be565b505050505050905060006139dc886080015161441e565b905060006139ed8960a0015161441e565b9050613a048383838c60c001518d60e00151614745565b9750505050816001600160a01b0316633c8a7d8d876060015188608001518960a00151896040518060400160405280888152602001336001600160a01b0316815250604051602001613a569190615b1c565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401613a859594939291906158a6565b6040805180830381600087803b158015613a9e57600080fd5b505af1158015613ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad691906157a5565b61010088015191955093508410801590613af557508561012001518310155b613b115760405162461bcd60e51b815260040161082490615ac4565b509193509193565b6000613b24826132cd565b613b5f5760405162461bcd60e51b815260040180806020018281038252602c815260200180615e1f602c913960400191505060405180910390fd5b6000613b6a8361184e565b9050806001600160a01b0316846001600160a01b03161480613ba55750836001600160a01b0316613b9a846107fd565b6001600160a01b0316145b8061100757506110078185612cd1565b826001600160a01b0316613bc88261184e565b6001600160a01b031614613c0d5760405162461bcd60e51b8152600401808060200182810382526029815260200180615ef86029913960400191505060405180910390fd5b6001600160a01b038216613c525760405162461bcd60e51b8152600401808060200182810382526024815260200180615dd56024913960400191505060405180910390fd5b613c5d838383610921565b613c686000826132de565b6001600160a01b0383166000908152600160205260409020613c8a9082614809565b506001600160a01b0382166000908152600160205260409020613cad9082614815565b50613cba60028284614821565b5080826001600160a01b0316846001600160a01b0316600080516020615f2183398151915260405160405180910390a4505050565b600063ffffffff4211613d025742611099565b5063ffffffff90565b60006114448383614837565b4690565b6000613d268261184e565b9050613d3481600084610921565b613d3f6000836132de565b6000828152600860205260409020546002600019610100600184161502019091160415613d7d576000828152600860205260408120613d7d9161506d565b6001600160a01b0381166000908152600160205260409020613d9f9083614809565b50613dab60028361489b565b5060405182906000906001600160a01b03841690600080516020615f21833981519152908390a45050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613e225780518252601f199092019160209182019101613e03565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613e84576040519150601f19603f3d011682016040523d82523d6000602084013e613e89565b606091505b5050905080610921576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b6000808080613ed486866148a7565b909450925050505b9250929050565b6000611007848484614922565b6000908152600c6020526040902080546001600160601b0319811660016001600160601b039283169081019092161790915590565b3b151590565b6001600160a01b038216613f86576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613f8f816132cd565b15613fe0576040805162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015290519081900360640190fd5b613fec60008383610921565b6001600160a01b038216600090815260016020526040902061400e9082614815565b5061401b60028284614821565b5060405181906001600160a01b03841690600090600080516020615f21833981519152908290a45050565b6001600160a01b0382166000908152600a60205260409020546001600160501b0316806114475750600d805460016001600160501b03600160b01b8084048216838101909216026001600160b01b03909316929092179092556001600160a01b038085166000908152600a6020908152604080832080546001600160501b03191686179055848352600b825291829020865181549085166001600160a01b031991821617825591870151950180549287015162ffffff16600160a01b0262ffffff60a01b19969094169290911691909117939093161790915592915050565b614130848484613bb5565b61413c848484846149ec565b61295a5760405162461bcd60e51b8152600401808060200182810382526032815260200180615da36032913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106141f35780518252601f1990920191602091820191016141d4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614255576040519150601f19603f3d011682016040523d82523d6000602084013e61425a565b606091505b5091509150818015614288575080511580614288575080806020019051602081101561428557600080fd5b50515b611086576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b60006114448383614b54565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000948594938a169392918291908083835b6020831061434e5780518252601f19909201916020918201910161432f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146143b0576040519150601f19603f3d011682016040523d82523d6000602084013e6143b5565b606091505b50915091508180156143e35750805115806143e357508080602001905160208110156143e057600080fd5b50515b6127bb576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b5490565b60008060008360020b12614435578260020b61443d565b8260020b6000035b9050620d89e881111561447b576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661448f57600160801b6144a1565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b0316905060028216156144cb576ffff97272373d413259a46990580e213a0260801c5b60048216156144ea576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614509576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614528576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614547576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614566576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614585576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156145a5576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156145c5576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156145e5576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614605576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614625576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614645576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614665576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614685576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156146a6576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156146c6576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156146e5576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614702576b048a170391f7dc42444e8fa20260801c5b60008460020b131561471d57806000198161471957fe5b0490505b600160201b810615614730576001614733565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b03161115614765579293925b846001600160a01b0316866001600160a01b03161161479057614789858585614b6c565b9050614800565b836001600160a01b0316866001600160a01b031610156147f25760006147b7878686614b6c565b905060006147c6878986614bcf565b9050806001600160801b0316826001600160801b0316106147e757806147e9565b815b92505050614800565b6147fd858584614bcf565b90505b95945050505050565b60006114448383614c0c565b60006114448383614cd2565b600061100784846001600160a01b038516614d1c565b815460009082106148795760405162461bcd60e51b8152600401808060200182810382526022815260200180615d816022913960400191505060405180910390fd5b82600001828154811061488857fe5b9060005260206000200154905092915050565b60006114448383614db3565b8154600090819083106148eb5760405162461bcd60e51b8152600401808060200182810382526022815260200180615ed66022913960400191505060405180910390fd5b60008460000184815481106148fc57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816149bd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561498257818101518382015260200161496a565b50505050905090810190601f1680156149af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106149d057fe5b9060005260206000209060020201600101549150509392505050565b6000614a00846001600160a01b0316613f25565b614a0c57506001611007565b6000614b1a630a85bd0160e11b614a216132da565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614a88578181015183820152602001614a70565b50505050905090810190601f168015614ab55780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001615da3603291396001600160a01b0388169190614e87565b90506000818060200190516020811015614b3357600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6000826001600160a01b0316846001600160a01b03161115614b8c579192915b6000614baf856001600160a01b0316856001600160a01b0316600160601b613661565b9050614800614bca84838888036001600160a01b0316613661565b614e96565b6000826001600160a01b0316846001600160a01b03161115614bef579192915b611007614bca83600160601b8787036001600160a01b0316613661565b60008181526001830160205260408120548015614cc85783546000198083019190810190600090879083908110614c3f57fe5b9060005260206000200154905080876000018481548110614c5c57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614c8c57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611447565b6000915050611447565b6000614cde8383614b54565b614d1457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611447565b506000611447565b600082815260018401602052604081205480614d8157505060408051808201825283815260208082018481528654600181810189556000898152848120955160029093029095019182559151908201558654868452818801909252929091205561365a565b82856000016001830381548110614d9457fe5b906000526020600020906002020160010181905550600091505061365a565b60008181526001830160205260408120548015614cc85783546000198083019190810190600090879083908110614de657fe5b9060005260206000209060020201905080876000018481548110614e0657fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614e4557fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506114479350505050565b60606110078484600085614eac565b806001600160801b038116811461073857600080fd5b606082471015614eed5760405162461bcd60e51b8152600401808060200182810382526026815260200180615df96026913960400191505060405180910390fd5b614ef685613f25565b614f47576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614f855780518252601f199092019160209182019101614f66565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fe7576040519150601f19603f3d011682016040523d82523d6000602084013e614fec565b606091505b5091509150614ffc828286615007565b979650505050505050565b6060831561501657508161365a565b8251156150265782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561498257818101518382015260200161496a565b50805460018160011615610100020316600290046000825580601f10615093575061337a565b601f01602090049060005260206000209081019061337a91905b808211156150c157600081556001016150ad565b5090565b803561073881615d2a565b805161ffff8116811461073857600080fd5b803562ffffff8116811461073857600080fd5b600060208284031215615106578081fd5b813561365a81615d2a565b600060208284031215615122578081fd5b815161365a81615d2a565b6000806040838503121561513f578081fd5b823561514a81615d2a565b9150602083013561515a81615d2a565b809150509250929050565b6000806000806080858703121561517a578182fd5b843561518581615d2a565b9350602085013561519581615d2a565b92506151a3604086016150e2565b915060608501356151b381615d2a565b939692955090935050565b6000806000606084860312156151d2578081fd5b83356151dd81615d2a565b925060208401356151ed81615d2a565b929592945050506040919091013590565b60008060008060808587031215615213578182fd5b843561521e81615d2a565b9350602085013561522e81615d2a565b92506040850135915060608501356001600160401b0381111561524f578182fd5b8501601f8101871361525f578182fd5b803561527261526d82615cdd565b615cba565b818152886020838501011115615286578384fd5b81602084016020830137908101602001929092525092959194509250565b600080604083850312156152b6578182fd5b82356152c181615d2a565b9150602083013561515a81615d3f565b600080604083850312156152e3578182fd5b82356152ee81615d2a565b946020939093013593505050565b600080600060608486031215615310578081fd5b833561531b81615d2a565b925060208401359150604084013561533281615d2a565b809150509250925092565b60008060008060008060c08789031215615355578384fd5b863561536081615d2a565b95506020870135945060408701359350606087013561537e81615d71565b9598949750929560808101359460a0909101359350915050565b600080602083850312156153aa578182fd5b82356001600160401b03808211156153c0578384fd5b818501915085601f8301126153d3578384fd5b8135818111156153e1578485fd5b86602080830285010111156153f4578485fd5b60209290920196919550909350505050565b600060208284031215615417578081fd5b81356001600160e01b03198116811461365a578182fd5b60006020828403121561543f578081fd5b813561365a81615d4d565b6000806000806080858703121561545f578182fd5b84518060060b811461546f578283fd5b602086015190945061548081615d2a565b604086015190935063ffffffff81168114615499578283fd5b60608601519092506001600160c01b03811681146151b3578182fd5b6000602082840312156154c6578081fd5b81516001600160401b038111156154db578182fd5b8201601f810184136154eb578182fd5b80516154f961526d82615cdd565b81815285602083850101111561550d578384fd5b614800826020830160208601615cfe565b60006080828403121561552f578081fd5b50919050565b600060a0828403121561552f578081fd5b600060c0828403121561552f578081fd5b60008183036080811215615569578182fd5b604051604081016001600160401b03828210818311171561558657fe5b816040526060841215615597578485fd5b60a08301935081841081851117156155ab57fe5b5082604052843592506155bd83615d2a565b9182526020840135916155cf83615d2a565b8260608301526155e1604086016150e2565b608083015281526155f4606085016150c5565b6020820152949350505050565b6000610160828403121561552f578081fd5b600060208284031215615624578081fd5b813561365a81615d5c565b60008060408385031215615641578182fd5b825161564c81615d5c565b602084015190925061515a81615d5c565b600080600080600060a08688031215615674578283fd5b855161567f81615d5c565b809550506020860151935060408601519250606086015161569f81615d5c565b60808701519092506156b081615d5c565b809150509295509295909350565b600080600080600080600060e0888a0312156156d8578485fd5b87516156e381615d2a565b60208901519097506156f481615d4d565b9550615702604089016150d0565b9450615710606089016150d0565b935061571e608089016150d0565b925060a088015161572e81615d71565b60c089015190925061573f81615d3f565b8091505092959891949750929550565b600060208284031215615760578081fd5b611444826150e2565b60006020828403121561577a578081fd5b5035919050565b60008060408385031215615793578182fd5b82359150602083013561515a81615d2a565b600080604083850312156157b7578182fd5b505080516020909101519092909150565b600080600080606085870312156157dd578182fd5b843593506020850135925060408501356001600160401b0380821115615801578384fd5b818701915087601f830112615814578384fd5b813581811115615822578485fd5b886020828501011115615833578485fd5b95989497505060200194505050565b6000815180845261585a816020860160208601615cfe565b601f01601f19169290920160200192915050565b60020b9052565b6001600160801b03169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b0386168152600285810b602083015284900b60408201526001600160801b038316606082015260a060808201819052600090614ffc90830184615842565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039390931683526001600160801b03918216602084015216604082015260600190565b6001600160a01b039687168152602081019590955260408501939093529316606083015263ffffffff928316608083015290911660a082015260c00190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156159e457603f198886030184526159d2858351615842565b945092850192908501906001016159b6565b5092979650505050505050565b901515815260200190565b90815260200190565b6001600160a01b03929092168252602082015260400190565b600292830b8152910b602082015260400190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b6000602082526114446020830184615842565b6020808252600c908201526b139bdd08185c1c1c9bdd995960a21b604082015260600190565b60208082526019908201527822a9219b99189d103737b732bc34b9ba32b73a103a37b5b2b760391b604082015260600190565b602080825260149082015273507269636520736c69707061676520636865636b60601b604082015260600190565b60208082526010908201526f125b9d985b1a59081d1bdad95b88125160821b604082015260600190565b815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b6001600160801b039390931683526020830191909152604082015260600190565b6001600160c01b0394909416845263ffffffff928316602085015291166040830152606082015260800190565b9384526001600160801b039290921660208401526040830152606082015260800190565b918252602082015260400190565b6001600160601b038d1681526001600160a01b038c811660208301528b811660408301528a16606082015262ffffff89166080820152600288900b60a08201526101808101615c2e60c083018961586e565b615c3b60e0830188615875565b8561010083015284610120830152615c57610140830185615875565b615c65610160830184615875565b9d9c50505050505050505050505050565b6000808335601e19843603018112615c8c578283fd5b8301803591506001600160401b03821115615ca5578283fd5b602001915036819003821315613edc57600080fd5b6040518181016001600160401b0381118282101715615cd557fe5b604052919050565b60006001600160401b03821115615cf057fe5b50601f01601f191660200190565b60005b83811015615d19578181015183820152602001615d01565b8381111561295a5750506000910152565b6001600160a01b038116811461337a57600080fd5b801515811461337a57600080fd5b8060020b811461337a57600080fd5b6001600160801b038116811461337a57600080fd5b60ff8116811461337a57600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a26469706673582212207b1a07a33e639444dfba3ec3e54d047cdfc998dd1da87d8f46be03e604fa5c5a64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x200 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x4D8 JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x4F8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x50D JUMPI DUP1 PUSH4 0x75E39CEC EQ PUSH2 0x52D JUMPI DUP1 PUSH4 0x7AC2FF7B EQ PUSH2 0x55D JUMPI DUP1 PUSH4 0x88316456 EQ PUSH2 0x570 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x593 JUMPI DUP1 PUSH4 0x97F12A83 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0x99FBAB88 EQ PUSH2 0x5BB JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x5F3 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x613 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x626 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x666 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x679 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x68E JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x6AE JUMPI DUP1 PUSH4 0xE70EB392 EQ PUSH2 0x6C1 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x6F4 JUMPI DUP1 PUSH4 0xFC6F7865 EQ PUSH2 0x707 JUMPI PUSH2 0x270 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x50EB2EB EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2BE JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0xC49CCBE EQ PUSH2 0x32D JUMPI DUP1 PUSH4 0x12210E8A EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x356 JUMPI DUP1 PUSH4 0x1507A8F4 EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x219F5D17 EQ PUSH2 0x3AB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x29048E7B EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x435 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x49404B7C EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x4A3 JUMPI PUSH2 0x270 JUMP JUMPDEST CALLDATASIZE PUSH2 0x270 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x26E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x4E6F74205745544839 PUSH1 0xB8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x290 CALLDATASIZE PUSH1 0x4 PUSH2 0x5406 JUMP JUMPDEST PUSH2 0x71A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x59F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26E PUSH2 0x2B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x50F5 JUMP JUMPDEST PUSH2 0x73D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x767 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x5A58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x300 PUSH2 0x2FB CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x5892 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x328 CALLDATASIZE PUSH1 0x4 PUSH2 0x52D1 JUMP JUMPDEST PUSH2 0x850 JUMP JUMPDEST PUSH2 0x340 PUSH2 0x33B CALLDATASIZE PUSH1 0x4 PUSH2 0x5535 JUMP JUMPDEST PUSH2 0x926 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP3 SWAP2 SWAP1 PUSH2 0x5BCE JUMP JUMPDEST PUSH2 0x26E PUSH2 0xD11 JUMP JUMPDEST PUSH2 0x300 PUSH2 0x364 CALLDATASIZE PUSH1 0x4 PUSH2 0x5165 JUMP JUMPDEST PUSH2 0xD1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x384 CALLDATASIZE PUSH1 0x4 PUSH2 0x57C8 JUMP JUMPDEST PUSH2 0x100F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x108D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x59FC JUMP JUMPDEST PUSH2 0x3BE PUSH2 0x3B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5546 JUMP JUMPDEST PUSH2 0x109E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x3E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x51BE JUMP JUMPDEST PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x13D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x52D1 JUMP JUMPDEST PUSH2 0x1422 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x144D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x1471 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x51BE JUMP JUMPDEST PUSH2 0x152F JUMP JUMPDEST PUSH2 0x26E PUSH2 0x478 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x154A JUMP JUMPDEST PUSH2 0x26E PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x533D JUMP JUMPDEST PUSH2 0x1605 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x5781 JUMP JUMPDEST PUSH2 0x169F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x300 PUSH2 0x1814 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x4D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x1838 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x300 PUSH2 0x4F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x184E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x1876 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x528 CALLDATASIZE PUSH1 0x4 PUSH2 0x50F5 JUMP JUMPDEST PUSH2 0x187B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x54D PUSH2 0x548 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B7D JUMP JUMPDEST PUSH2 0x26E PUSH2 0x56B CALLDATASIZE PUSH1 0x4 PUSH2 0x533D JUMP JUMPDEST PUSH2 0x1A30 JUMP JUMPDEST PUSH2 0x583 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x5601 JUMP JUMPDEST PUSH2 0x1DC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x2349 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x5B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x50F5 JUMP JUMPDEST PUSH2 0x23AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5DB PUSH2 0x5D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x23D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x60E CALLDATASIZE PUSH1 0x4 PUSH2 0x52A4 JUMP JUMPDEST PUSH2 0x2629 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x621 CALLDATASIZE PUSH1 0x4 PUSH2 0x533D JUMP JUMPDEST PUSH2 0x272A JUMP JUMPDEST PUSH2 0x639 PUSH2 0x634 CALLDATASIZE PUSH1 0x4 PUSH2 0x5398 JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x5991 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x661 CALLDATASIZE PUSH1 0x4 PUSH2 0x51FE JUMP JUMPDEST PUSH2 0x2902 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x674 CALLDATASIZE PUSH1 0x4 PUSH2 0x533D JUMP JUMPDEST PUSH2 0x2960 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x300 PUSH2 0x29EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x6A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5769 JUMP JUMPDEST PUSH2 0x2A13 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x6BC CALLDATASIZE PUSH1 0x4 PUSH2 0x52FC JUMP JUMPDEST PUSH2 0x2AAD JUMP JUMPDEST PUSH2 0x26E PUSH2 0x6CF CALLDATASIZE PUSH1 0x4 PUSH2 0x5781 JUMP JUMPDEST PUSH2 0x2B85 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x6EF CALLDATASIZE PUSH1 0x4 PUSH2 0x512D JUMP JUMPDEST PUSH2 0x2CD1 JUMP JUMPDEST PUSH2 0x26E PUSH2 0x702 CALLDATASIZE PUSH1 0x4 PUSH2 0x533D JUMP JUMPDEST PUSH2 0x2CFF JUMP JUMPDEST PUSH2 0x340 PUSH2 0x715 CALLDATASIZE PUSH1 0x4 PUSH2 0x551E JUMP JUMPDEST PUSH2 0x2D71 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x745 PUSH2 0x321F JUMP JUMPDEST PUSH1 0xF 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 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7F3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7C8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7F3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7D6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x808 DUP3 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x82D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5A91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85B DUP3 PUSH2 0x184E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x8AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F41 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8C0 PUSH2 0x32DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x8DC JUMPI POP PUSH2 0x8DC DUP2 PUSH2 0x6EF PUSH2 0x32DA JUMP JUMPDEST PUSH2 0x917 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E4B PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x921 DUP4 DUP4 PUSH2 0x32DE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x934 DUP2 PUSH2 0x3354 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x942 DUP2 PUSH2 0x337D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x954 PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH2 0x9A2 SWAP2 DUP10 ADD SWAP1 DUP10 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x9C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP6 ADD SLOAD SWAP1 DUP2 AND SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH3 0xFFFFFF AND SWAP1 DUP4 ADD MSTORE PUSH2 0xA41 PUSH32 0x0 DUP4 PUSH2 0x33C8 JUMP JUMPDEST SWAP1 POP PUSH2 0xA4D DUP5 DUP3 PUSH2 0x34A7 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA34123A7 SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0xA89 PUSH1 0x40 DUP15 ADD PUSH1 0x20 DUP16 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAA7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAF8 SWAP2 SWAP1 PUSH2 0x57A5 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD DUP9 LT DUP1 ISZERO SWAP1 PUSH2 0xB15 JUMPI POP DUP9 PUSH1 0x60 ADD CALLDATALOAD DUP8 LT ISZERO JUMPDEST PUSH2 0xB31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5AC4 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB5A SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x360C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB8B SWAP2 SWAP1 PUSH2 0x59FC JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBB7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBDB SWAP2 SWAP1 PUSH2 0x565D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0xC00 DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND SWAP3 DUP15 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND ADD DUP2 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0x3 DUP9 ADD SLOAD PUSH2 0xC41 SWAP2 SWAP1 DUP4 SUB SWAP1 DUP9 AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP4 DUP15 ADD PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x2 DUP8 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP8 ADD DUP2 SWAP1 SSTORE PUSH2 0xC87 PUSH1 0x40 DUP14 ADD PUSH1 0x20 DUP15 ADD PUSH2 0x5613 JUMP JUMPDEST DUP7 SUB DUP8 PUSH1 0x1 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x0 ADD CALLDATALOAD PUSH32 0x26F6A048EE9138F2C0CE266F322CB99228E8D619AE2BFF30C67F8DCF9D2377B4 DUP14 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xCEA SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST DUP14 DUP14 PUSH1 0x40 MLOAD PUSH2 0xCFB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0xD19 PUSH2 0x3710 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xD3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1698EE82 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xF26 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1671295 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF637731D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP4 AND SWAP2 PUSH4 0xF637731D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xF8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1005 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF637731D DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1000 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x101D DUP3 DUP5 ADD DUP5 PUSH2 0x5557 JUMP JUMPDEST SWAP1 POP PUSH2 0x104D PUSH32 0x0 DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x3720 JUMP JUMPDEST POP DUP5 ISZERO PUSH2 0x1068 JUMPI DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x1068 SWAP2 SWAP1 CALLER DUP9 PUSH2 0x3743 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x1086 JUMPI PUSH2 0x1086 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x3743 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1099 PUSH1 0x2 PUSH2 0x38D3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x10B1 DUP2 PUSH2 0x337D JUMP JUMPDEST DUP5 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND DUP7 MSTORE PUSH1 0xB DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP5 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP8 MSTORE DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE SWAP3 SWAP1 SWAP5 ADD SLOAD DUP1 DUP4 AND DUP3 DUP10 ADD SWAP1 DUP2 MSTORE PUSH3 0xFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV DUP3 AND DUP4 DUP10 ADD SWAP1 DUP2 MSTORE DUP9 MLOAD PUSH2 0x140 DUP2 ADD DUP11 MSTORE DUP5 MLOAD DUP7 AND DUP2 MSTORE SWAP2 MLOAD SWAP1 SWAP5 AND DUP2 DUP11 ADD MSTORE SWAP3 MLOAD AND DUP3 DUP8 ADD MSTORE ADDRESS DUP3 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP4 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP5 DIV DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0xA0 DUP4 ADD MSTORE SWAP6 DUP13 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE SWAP4 DUP12 ADD CALLDATALOAD PUSH1 0xE0 DUP6 ADD MSTORE SWAP1 DUP11 ADD CALLDATALOAD PUSH2 0x100 DUP5 ADD MSTORE DUP10 ADD CALLDATALOAD PUSH2 0x120 DUP4 ADD MSTORE SWAP3 SWAP1 PUSH2 0x1193 SWAP1 PUSH2 0x38DE JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD SWAP4 SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x11C6 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x360C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11F7 SWAP2 SWAP1 PUSH2 0x59FC JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x120F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1223 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1247 SWAP2 SWAP1 PUSH2 0x565D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x1283 DUP7 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP1 SWAP4 ADD DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x12CA SWAP3 SWAP2 DUP5 SUB SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV AND SWAP1 PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND SWAP1 SWAP5 ADD DUP2 AND SWAP1 SWAP4 MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x12FC DUP7 DUP6 PUSH2 0x34A7 JUMP JUMPDEST PUSH1 0x2 DUP7 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP7 ADD DUP2 SWAP1 SSTORE PUSH1 0x1 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP15 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP12 CALLDATALOAD SWAP1 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F SWAP1 PUSH2 0x1363 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x138A PUSH2 0x1384 PUSH2 0x32DA JUMP JUMPDEST DUP3 PUSH2 0x3B19 JUMP JUMPDEST PUSH2 0x13C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F62 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x921 DUP4 DUP4 DUP4 PUSH2 0x3BB5 JUMP JUMPDEST DUP1 PUSH2 0x13DA DUP2 PUSH2 0x3354 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x13F0 PUSH2 0x3CEF JUMP JUMPDEST PUSH1 0x5 DUP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 PUSH1 0x6 SWAP1 SWAP2 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x1444 SWAP1 DUP4 PUSH2 0x3D0B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH32 0x0 PUSH32 0x0 PUSH2 0x14DE PUSH2 0x3D17 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x921 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2902 JUMP JUMPDEST DUP1 PUSH2 0x1554 DUP2 PUSH2 0x3354 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO DUP1 ISZERO PUSH2 0x158F JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x15AD JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x15BB JUMPI POP PUSH1 0x6 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0x15C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x5 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x6 ADD SSTORE PUSH2 0x921 DUP4 PUSH2 0x3D1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x167F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1693 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x170E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1722 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x1786 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x496E73756666696369656E74205745544839 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x921 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1806 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x921 DUP3 DUP3 PUSH2 0x3DD6 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1846 PUSH1 0x2 DUP5 PUSH2 0x3EC5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1447 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5EAD PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0x3EE3 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x18C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E83 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1447 SWAP1 PUSH2 0x38D3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x1C0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x68 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE SWAP1 DUP4 ADD SLOAD PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0x4 DUP4 ADD SLOAD DUP1 DUP3 AND PUSH2 0x100 DUP8 ADD MSTORE SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND PUSH2 0x160 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 SWAP2 DIV AND PUSH2 0x180 DUP5 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH2 0x1A0 DUP4 ADD MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH2 0x1A08 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5AF2 JUMP JUMPDEST DUP1 PUSH2 0x140 ADD MLOAD DUP2 PUSH2 0x160 ADD MLOAD DUP3 PUSH2 0x180 ADD MLOAD DUP4 PUSH2 0x1A0 ADD MLOAD SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST DUP4 PUSH2 0x1A3A DUP2 PUSH2 0x337D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A44 PUSH2 0x1471 JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP10 DUP10 PUSH2 0x1A70 DUP2 PUSH2 0x3EF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE2 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH2 0x102 DUP1 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 MLOAD DUP1 DUP4 SUB SWAP1 SWAP5 ADD DUP5 MSTORE PUSH2 0x122 SWAP1 SWAP2 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1AF8 DUP9 PUSH2 0x184E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1B61 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732315065726D69743A20617070726F76616C20746F206F776E657200 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B6A DUP2 PUSH2 0x3F25 JUMP JUMPDEST ISZERO PUSH2 0x1CD2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP9 SWAP1 MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0xF8 DUP11 SWAP1 SHL AND PUSH1 0x60 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x41 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x61 DUP4 ADD DUP1 DUP6 MSTORE PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 MSTORE PUSH1 0x65 DUP4 ADD DUP7 DUP2 MSTORE PUSH1 0x85 DUP5 ADD SWAP5 DUP6 MSTORE DUP2 MLOAD PUSH1 0xA5 DUP6 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP6 PUSH4 0x1626BA7E SWAP6 DUP10 SWAP6 SWAP2 SWAP3 PUSH1 0xC5 SWAP1 SWAP2 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C03 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BEB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C30 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C62 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ PUSH2 0x1CCD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x155B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DAB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D2E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1D64 JUMPI POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x1DA9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x496E76616C6964207369676E6174757265 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x1DB5 DUP10 DUP10 PUSH2 0x32DE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x1DD5 DUP2 PUSH2 0x337D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1EA1 SWAP1 DUP1 PUSH2 0x1DF6 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1E17 SWAP2 SWAP1 PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E35 PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x574F JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x1E55 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x542E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E6D PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x542E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xA0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE POP PUSH2 0x38DE JUMP JUMPDEST SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH2 0x1EEE PUSH2 0x1EC0 PUSH2 0x140 DUP10 ADD PUSH2 0x120 DUP11 ADD PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP8 POP DUP8 PUSH2 0x3F2B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F19 ADDRESS PUSH2 0x1F04 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x542E JUMP JUMPDEST PUSH2 0x1F14 PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x542E JUMP JUMPDEST PUSH2 0x360C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F4A SWAP2 SWAP1 PUSH2 0x59FC JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F76 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F9A SWAP2 SWAP1 PUSH2 0x565D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0x2013 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP15 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1FC5 SWAP2 SWAP1 PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP15 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1FE6 SWAP2 SWAP1 PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP15 PUSH1 0x40 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2007 SWAP2 SWAP1 PUSH2 0x574F JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE PUSH2 0x4046 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x1C0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2063 SWAP2 SWAP1 PUSH2 0x542E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x207B PUSH1 0xA0 DUP15 ADD PUSH1 0x80 DUP16 ADD PUSH2 0x542E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP PUSH1 0xC PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0xC 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 PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0xA PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0xD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x1C PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1A0 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP10 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x2334 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7F3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7C8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7F3 JUMP JUMPDEST PUSH2 0x23B2 PUSH2 0x321F JUMP JUMPDEST PUSH1 0xE 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 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x1C0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x68 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE SWAP1 DUP4 ADD SLOAD PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0x4 DUP4 ADD SLOAD DUP1 DUP3 AND PUSH2 0x100 DUP8 ADD MSTORE SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND PUSH2 0x160 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 SWAP2 DIV AND PUSH2 0x180 DUP5 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH2 0x1A0 DUP4 ADD MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH2 0x2509 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5AF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0xC0 ADD MLOAD DUP11 PUSH1 0xE0 ADD MLOAD DUP12 PUSH2 0x100 ADD MLOAD DUP13 PUSH2 0x120 ADD MLOAD SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP POP POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 SWAP12 POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 SWAP12 JUMP JUMPDEST PUSH2 0x2631 PUSH2 0x32DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2693 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x22A9219B99189D1030B8383937BB32903A379031B0B63632B9 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x26A0 PUSH2 0x32DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x26E4 PUSH2 0x32DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x277B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x278F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x27BB JUMPI PUSH2 0x27BB DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1605 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x27DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x280F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x27FA JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x28FB JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x282D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x283F SWAP2 SWAP1 PUSH2 0x5C76 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x284D SWAP3 SWAP2 SWAP1 PUSH2 0x5882 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2888 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x288D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x28D9 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x28A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x28C0 SWAP2 SWAP1 PUSH2 0x54B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP2 SWAP1 PUSH2 0x5A58 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x28E6 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x2815 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2913 PUSH2 0x290D PUSH2 0x32DA JUMP JUMPDEST DUP4 PUSH2 0x3B19 JUMP JUMPDEST PUSH2 0x294E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F62 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x295A DUP5 DUP5 DUP5 DUP5 PUSH2 0x4125 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x27BB JUMPI PUSH2 0x27BB DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2CFF JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2A1E DUP3 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x2A27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xE SLOAD PUSH1 0x40 MLOAD PUSH4 0xE9DC6375 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xE9DC6375 SWAP1 PUSH2 0x2A59 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A05 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1447 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x54B5 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x2B74 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24B739BAB33334B1B4B2B73A103A37B5B2B7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x295A JUMPI PUSH2 0x295A DUP5 DUP4 DUP4 PUSH2 0x4177 JUMP JUMPDEST DUP2 PUSH2 0x2B8F DUP2 PUSH2 0x3354 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2BA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x6 DUP2 ADD SLOAD SWAP1 SWAP2 PUSH2 0x2BBF PUSH2 0x3CEF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 DUP6 ADD DUP2 SWAP1 SSTORE PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL PUSH4 0xFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH1 0xF SLOAD PUSH1 0x1 DUP1 DUP8 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP4 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP1 KECCAK256 DUP5 MLOAD PUSH1 0x60 DUP2 ADD DUP7 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD DUP1 DUP3 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH3 0xFFFFFF AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 SWAP4 POP AND SWAP1 PUSH4 0x32D5EEAF SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH2 0x2C7E SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x33C8 JUMP JUMPDEST PUSH1 0x5 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0xE0 DUP8 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH2 0x2CB7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5952 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x167F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x167F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x2D7F DUP2 PUSH2 0x3354 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D91 PUSH1 0x60 DUP7 ADD PUSH1 0x40 DUP8 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT DUP1 PUSH2 0x2DBE JUMPI POP PUSH1 0x0 PUSH2 0x2DB3 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST PUSH2 0x2DC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DDA PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2DFD JUMPI PUSH2 0x2DF8 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x50F5 JUMP JUMPDEST PUSH2 0x2DFF JUMP JUMPDEST ADDRESS JUMPDEST DUP6 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP6 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP4 MLOAD PUSH1 0x60 DUP2 ADD DUP6 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD SWAP1 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV PUSH3 0xFFFFFF AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP4 POP SWAP1 PUSH2 0x2E92 PUSH32 0x0 DUP4 PUSH2 0x33C8 JUMP JUMPDEST PUSH1 0x4 DUP5 ADD SLOAD PUSH1 0x1 DUP6 ADD SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP3 SWAP1 DIV AND ISZERO PUSH2 0x3088 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xA34123A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xA34123A7 SWAP2 PUSH2 0x2F09 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP3 DIV SWAP1 SIGNEXTEND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F36 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F5A SWAP2 SWAP1 PUSH2 0x57A5 JUMP JUMPDEST POP POP PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x514EA4BF SWAP1 PUSH2 0x2F98 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x360C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FB4 SWAP2 SWAP1 PUSH2 0x59FC JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3004 SWAP2 SWAP1 PUSH2 0x565D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x3040 DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP9 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3661 JUMP JUMPDEST DUP5 ADD SWAP4 POP PUSH2 0x3079 DUP8 PUSH1 0x3 ADD SLOAD DUP3 SUB DUP9 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x2 DUP9 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP8 ADD SSTORE ADD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND PUSH2 0x30A5 PUSH1 0x60 DUP15 ADD PUSH1 0x40 DUP16 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x30C8 JUMPI PUSH2 0x30C3 PUSH1 0x60 DUP14 ADD PUSH1 0x40 DUP15 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH2 0x30CA JUMP JUMPDEST DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP14 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x30E7 SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x310A JUMPI PUSH2 0x3105 PUSH1 0x80 DUP15 ADD PUSH1 0x60 DUP16 ADD PUSH2 0x5613 JUMP JUMPDEST PUSH2 0x310C JUMP JUMPDEST DUP4 JUMPDEST PUSH1 0x1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x9E3D67B PUSH1 0xE3 SHL DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0x4F1EB3D8 SWAP2 PUSH2 0x315F SWAP2 DUP13 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP3 DIV SWAP1 SIGNEXTEND SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x58EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x318C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31B0 SWAP2 SWAP1 PUSH2 0x562F JUMP JUMPDEST PUSH1 0x4 DUP10 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL DUP8 DUP11 SUB DUP5 AND MUL OR AND DUP7 DUP10 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP3 DUP2 AND SWAP14 POP AND SWAP11 POP DUP13 CALLDATALOAD SWAP1 PUSH32 0x40D0EFD1A53D60ECBF40971B9DAF7DC90178C3AADC7AAB1765632738FA8B8F01 SWAP1 PUSH2 0xCFB SWAP1 DUP12 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH2 0x5928 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x328C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32B0 SWAP2 SWAP1 PUSH2 0x5111 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xD19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1447 PUSH1 0x2 DUP4 PUSH2 0x42BE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x331B DUP3 PUSH2 0x184E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x335E CALLER DUP3 PUSH2 0x3B19 JUMP JUMPDEST PUSH2 0x337A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5A6B JUMP JUMPDEST POP JUMP JUMPDEST DUP1 TIMESTAMP GT ISZERO PUSH2 0x337A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x151C985B9CD858DD1A5BDB881D1BDBC81BDB19 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x33F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x51C403F9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xA38807F2 SWAP2 PUSH2 0x34F0 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND SWAP1 PUSH1 0x4 ADD PUSH2 0x5A1E JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x351C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3540 SWAP2 SWAP1 PUSH2 0x544A JUMP JUMPDEST PUSH1 0x5 DUP8 ADD SLOAD SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP7 AND SWAP2 AND LT SWAP3 POP PUSH2 0x3565 SWAP2 POP POP JUMPI POP PUSH2 0x3608 JUMP JUMPDEST PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO PUSH2 0x35BF JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH2 0x35B3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 DUP2 AND DUP5 SUB AND SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x40 SHL PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x6 DUP5 ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x5 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP4 AND OR SWAP1 SSTORE PUSH2 0x35E4 PUSH2 0x3CEF JUMP JUMPDEST DUP4 PUSH1 0x5 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP7 SWAP1 SHL AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP6 DUP2 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP6 ADD MSTORE SWAP1 DUP6 SWAP1 SIGNEXTEND SWAP1 SHL PUSH1 0x37 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x1A DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x3697 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x368C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x365A JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x36A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0xD19 JUMPI PUSH2 0xD19 CALLER SELFBALANCE PUSH2 0x3DD6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x372C DUP4 DUP4 PUSH2 0x33C8 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x1447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x3784 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x38A6 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3888 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x389E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295A SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x38C7 JUMPI PUSH2 0x38C2 DUP5 DUP4 DUP4 PUSH2 0x4177 JUMP JUMPDEST PUSH2 0x295A JUMP JUMPDEST PUSH2 0x295A DUP5 DUP5 DUP5 DUP5 PUSH2 0x42CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1447 DUP3 PUSH2 0x441A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x40 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE POP SWAP1 POP PUSH2 0x3950 PUSH32 0x0 DUP3 PUSH2 0x33C8 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x398D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x39C5 SWAP2 SWAP1 PUSH2 0x56BE JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x39DC DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x441E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39ED DUP10 PUSH1 0xA0 ADD MLOAD PUSH2 0x441E JUMP JUMPDEST SWAP1 POP PUSH2 0x3A04 DUP4 DUP4 DUP4 DUP13 PUSH1 0xC0 ADD MLOAD DUP14 PUSH1 0xE0 ADD MLOAD PUSH2 0x4745 JUMP JUMPDEST SWAP8 POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C8A7D8D DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3A56 SWAP2 SWAP1 PUSH2 0x5B1C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A85 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3AD6 SWAP2 SWAP1 PUSH2 0x57A5 JUMP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP DUP5 LT DUP1 ISZERO SWAP1 PUSH2 0x3AF5 JUMPI POP DUP6 PUSH2 0x120 ADD MLOAD DUP4 LT ISZERO JUMPDEST PUSH2 0x3B11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x824 SWAP1 PUSH2 0x5AC4 JUMP JUMPDEST POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B24 DUP3 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x3B5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E1F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B6A DUP4 PUSH2 0x184E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x3BA5 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3B9A DUP5 PUSH2 0x7FD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x1007 JUMPI POP PUSH2 0x1007 DUP2 DUP6 PUSH2 0x2CD1 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BC8 DUP3 PUSH2 0x184E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3C0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5EF8 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DD5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3C5D DUP4 DUP4 DUP4 PUSH2 0x921 JUMP JUMPDEST PUSH2 0x3C68 PUSH1 0x0 DUP3 PUSH2 0x32DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3C8A SWAP1 DUP3 PUSH2 0x4809 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3CAD SWAP1 DUP3 PUSH2 0x4815 JUMP JUMPDEST POP PUSH2 0x3CBA PUSH1 0x2 DUP3 DUP5 PUSH2 0x4821 JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F21 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0x3D02 JUMPI TIMESTAMP PUSH2 0x1099 JUMP JUMPDEST POP PUSH4 0xFFFFFFFF SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1444 DUP4 DUP4 PUSH2 0x4837 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D26 DUP3 PUSH2 0x184E JUMP JUMPDEST SWAP1 POP PUSH2 0x3D34 DUP2 PUSH1 0x0 DUP5 PUSH2 0x921 JUMP JUMPDEST PUSH2 0x3D3F PUSH1 0x0 DUP4 PUSH2 0x32DE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP5 AND ISZERO MUL ADD SWAP1 SWAP2 AND DIV ISZERO PUSH2 0x3D7D JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3D7D SWAP2 PUSH2 0x506D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3D9F SWAP1 DUP4 PUSH2 0x4809 JUMP JUMPDEST POP PUSH2 0x3DAB PUSH1 0x2 DUP4 PUSH2 0x489B JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F21 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3E22 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3E03 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3E84 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E89 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x921 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x535445 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x3ED4 DUP7 DUP7 PUSH2 0x48A7 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1007 DUP5 DUP5 DUP5 PUSH2 0x4922 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3F86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3F8F DUP2 PUSH2 0x32CD JUMP JUMPDEST ISZERO PUSH2 0x3FE0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH28 0x115490CDCC8C4E881D1BDAD95B88185B1C9958591E481B5A5B9D1959 PUSH1 0x22 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FEC PUSH1 0x0 DUP4 DUP4 PUSH2 0x921 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x400E SWAP1 DUP3 PUSH2 0x4815 JUMP JUMPDEST POP PUSH2 0x401B PUSH1 0x2 DUP3 DUP5 PUSH2 0x4821 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F21 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP1 PUSH2 0x1447 JUMPI POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB PUSH1 0x1 PUSH1 0xB0 SHL DUP1 DUP5 DIV DUP3 AND DUP4 DUP2 ADD SWAP1 SWAP3 AND MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB NOT AND DUP7 OR SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD SWAP1 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP3 SSTORE SWAP2 DUP8 ADD MLOAD SWAP6 ADD DUP1 SLOAD SWAP3 DUP8 ADD MLOAD PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT SWAP7 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP4 SWAP1 SWAP4 AND OR SWAP1 SWAP2 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4130 DUP5 DUP5 DUP5 PUSH2 0x3BB5 JUMP JUMPDEST PUSH2 0x413C DUP5 DUP5 DUP5 DUP5 PUSH2 0x49EC JUMP JUMPDEST PUSH2 0x295A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DA3 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x41F3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x41D4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4255 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x425A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4288 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4288 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1086 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x14D5 PUSH1 0xF2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1444 DUP4 DUP4 PUSH2 0x4B54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x434E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x432F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x43B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x43E3 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x43E3 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x27BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x29AA23 PUSH1 0xE9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x4435 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x443D JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x447B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x448F JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x44A1 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x44CB JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x44EA JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x4509 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x4528 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x4547 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x4566 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x4585 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x45A5 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x45C5 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x45E5 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x4605 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x4625 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x4645 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x4665 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x4685 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x46A6 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x46C6 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x46E5 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x4702 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x471D JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x4719 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP2 MOD ISZERO PUSH2 0x4730 JUMPI PUSH1 0x1 PUSH2 0x4733 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4765 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4790 JUMPI PUSH2 0x4789 DUP6 DUP6 DUP6 PUSH2 0x4B6C JUMP JUMPDEST SWAP1 POP PUSH2 0x4800 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x47F2 JUMPI PUSH1 0x0 PUSH2 0x47B7 DUP8 DUP7 DUP7 PUSH2 0x4B6C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x47C6 DUP8 DUP10 DUP7 PUSH2 0x4BCF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x47E7 JUMPI DUP1 PUSH2 0x47E9 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x4800 JUMP JUMPDEST PUSH2 0x47FD DUP6 DUP6 DUP5 PUSH2 0x4BCF JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1444 DUP4 DUP4 PUSH2 0x4C0C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1444 DUP4 DUP4 PUSH2 0x4CD2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1007 DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x4D1C JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x4879 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D81 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x4888 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1444 DUP4 DUP4 PUSH2 0x4DB3 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x48EB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5ED6 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x48FC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x49BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4982 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x496A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x49AF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x49D0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A00 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3F25 JUMP JUMPDEST PUSH2 0x4A0C JUMPI POP PUSH1 0x1 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B1A PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x4A21 PUSH2 0x32DA JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A70 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4AB5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND 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 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5DA3 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x4E87 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4B8C JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x4BAF DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3661 JUMP JUMPDEST SWAP1 POP PUSH2 0x4800 PUSH2 0x4BCA DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3661 JUMP JUMPDEST PUSH2 0x4E96 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4BEF JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x1007 PUSH2 0x4BCA DUP4 PUSH1 0x1 PUSH1 0x60 SHL DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3661 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CC8 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4C3F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4C5C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x4C8C JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x1447 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1447 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CDE DUP4 DUP4 PUSH2 0x4B54 JUMP JUMPDEST PUSH2 0x4D14 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1447 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1447 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x4D81 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x365A JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x4D94 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0x365A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CC8 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4DE6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4E06 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP5 SLOAD PUSH1 0x2 SWAP1 SWAP4 MUL ADD SWAP2 DUP3 SSTORE PUSH1 0x1 SWAP4 DUP5 ADD SLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE DUP4 SLOAD DUP3 MSTORE DUP10 DUP4 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x4E45 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 PUSH1 0x2 PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 DUP5 MUL ADD DUP3 DUP2 SSTORE PUSH1 0x1 SWAP1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP3 SWAP1 SWAP4 SSTORE DUP9 DUP2 MSTORE DUP10 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP5 POP PUSH2 0x1447 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1007 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x4EAC JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4EED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DF9 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4EF6 DUP6 PUSH2 0x3F25 JUMP JUMPDEST PUSH2 0x4F47 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4F85 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4F66 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4FE7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4FEC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4FFC DUP3 DUP3 DUP7 PUSH2 0x5007 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x5016 JUMPI POP DUP2 PUSH2 0x365A JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x5026 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4982 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x496A JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x5093 JUMPI POP PUSH2 0x337A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x337A SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x50C1 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x50AD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x738 DUP2 PUSH2 0x5D2A JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5106 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x365A DUP2 PUSH2 0x5D2A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5122 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x365A DUP2 PUSH2 0x5D2A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x513F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x514A DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x515A DUP2 PUSH2 0x5D2A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x517A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5185 DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x5195 DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP3 POP PUSH2 0x51A3 PUSH1 0x40 DUP7 ADD PUSH2 0x50E2 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x51B3 DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x51D2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x51DD DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x51ED DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5213 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x521E DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x522E DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x524F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x525F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x5272 PUSH2 0x526D DUP3 PUSH2 0x5CDD JUMP JUMPDEST PUSH2 0x5CBA JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x5286 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52B6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x52C1 DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x515A DUP2 PUSH2 0x5D3F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52E3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x52EE DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5310 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x531B DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x5332 DUP2 PUSH2 0x5D2A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5355 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5360 DUP2 PUSH2 0x5D2A JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x537E DUP2 PUSH2 0x5D71 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x53AA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x53C0 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x53D3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x53E1 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x53F4 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5417 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x365A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x543F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x365A DUP2 PUSH2 0x5D4D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x545F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x546F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x5480 DUP2 PUSH2 0x5D2A JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5499 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x51B3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54C6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x54DB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x54EB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x54F9 PUSH2 0x526D DUP3 PUSH2 0x5CDD JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x550D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x4800 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5CFE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x552F JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x552F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x552F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x5569 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x5586 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE PUSH1 0x60 DUP5 SLT ISZERO PUSH2 0x5597 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP4 POP DUP2 DUP5 LT DUP2 DUP6 GT OR ISZERO PUSH2 0x55AB JUMPI INVALID JUMPDEST POP DUP3 PUSH1 0x40 MSTORE DUP5 CALLDATALOAD SWAP3 POP PUSH2 0x55BD DUP4 PUSH2 0x5D2A JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 PUSH2 0x55CF DUP4 PUSH2 0x5D2A JUMP JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x55E1 PUSH1 0x40 DUP7 ADD PUSH2 0x50E2 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x55F4 PUSH1 0x60 DUP6 ADD PUSH2 0x50C5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x552F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5624 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x365A DUP2 PUSH2 0x5D5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5641 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x564C DUP2 PUSH2 0x5D5C JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x515A DUP2 PUSH2 0x5D5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5674 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x567F DUP2 PUSH2 0x5D5C JUMP JUMPDEST DUP1 SWAP6 POP POP PUSH1 0x20 DUP7 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP7 ADD MLOAD SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD PUSH2 0x569F DUP2 PUSH2 0x5D5C JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x56B0 DUP2 PUSH2 0x5D5C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x56D8 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x56E3 DUP2 PUSH2 0x5D2A JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH2 0x56F4 DUP2 PUSH2 0x5D4D JUMP JUMPDEST SWAP6 POP PUSH2 0x5702 PUSH1 0x40 DUP10 ADD PUSH2 0x50D0 JUMP JUMPDEST SWAP5 POP PUSH2 0x5710 PUSH1 0x60 DUP10 ADD PUSH2 0x50D0 JUMP JUMPDEST SWAP4 POP PUSH2 0x571E PUSH1 0x80 DUP10 ADD PUSH2 0x50D0 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH2 0x572E DUP2 PUSH2 0x5D71 JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x573F DUP2 PUSH2 0x5D3F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5760 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1444 DUP3 PUSH2 0x50E2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x577A JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5793 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x515A DUP2 PUSH2 0x5D2A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x57B7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x57DD JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x5801 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5814 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5822 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5833 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x585A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5CFE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x2 DUP6 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP5 SWAP1 SIGNEXTEND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x4FFC SWAP1 DUP4 ADD DUP5 PUSH2 0x5842 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x60 DUP5 ADD MSTORE AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x59E4 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x59D2 DUP6 DUP4 MLOAD PUSH2 0x5842 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x59B6 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP3 DUP4 SIGNEXTEND DUP2 MSTORE SWAP2 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND DUP2 MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1444 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5842 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x139BDD08185C1C1C9BDD9959 PUSH1 0xA2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH25 0x22A9219B99189D103737B732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x39 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH20 0x507269636520736C69707061676520636865636B PUSH1 0x60 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH16 0x125B9D985B1A59081D1BDAD95B881251 PUSH1 0x82 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP3 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD PUSH3 0xFFFFFF AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP3 ADD MLOAD SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 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 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP14 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x40 DUP4 ADD MSTORE DUP11 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH3 0xFFFFFF DUP10 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x2 DUP9 SWAP1 SIGNEXTEND PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x180 DUP2 ADD PUSH2 0x5C2E PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x586E JUMP JUMPDEST PUSH2 0x5C3B PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x5875 JUMP JUMPDEST DUP6 PUSH2 0x100 DUP4 ADD MSTORE DUP5 PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x5C57 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x5875 JUMP JUMPDEST PUSH2 0x5C65 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x5875 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5C8C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5CA5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3EDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5CD5 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5CF0 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5D19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5D01 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x295A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x337A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x337A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x337A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x337A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x337A JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F722063616C6C45524337 ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E73666572206F6620746F6B656E2074686174 KECCAK256 PUSH10 0x73206E6F74206F776EDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x582212207B1A07A33E639444DFBA3EC3E54D047C 0xDF 0xC9 SWAP9 0xDD SAR 0xA8 PUSH30 0x8F46BE03E604FA5C5A64736F6C6343000706003300000000000000000000 ","sourceMap":"844:18829:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;461:10:18;-1:-1:-1;;;;;475:5:18;461:19;;453:41;;;;;-1:-1:-1;;;453:41:18;;;;;;;;;;;;-1:-1:-1;;;453:41:18;;;;;;;;;;;;;;;844:18829:13;;;;;948:148:42;;;;;;;;;;-1:-1:-1;948:148:42;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17831:151:13;;;;;;:::i;:::-;;:::i;4502:98:46:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19150:215:13:-;;;;;;;;;;-1:-1:-1;19150:215:13;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6751:395:46:-;;;;;;;;;;-1:-1:-1;6751:395:46;;;;;:::i;:::-;;:::i;10806:2320:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1457:78:18:-;;;:::i;448:722:20:-;;;;;;:::i;:::-;;:::i;862:502:15:-;;;;;;;;;;-1:-1:-1;862:502:15;;;;;:::i;:::-;;:::i;6245:208:46:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8549:2200:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;8071:300:46:-;;;;;;;;;;-1:-1:-1;8071:300:46;;;;;:::i;:::-;;:::i;16940:255:13:-;;;;;;:::i;:::-;;:::i;6014:160:46:-;;;;;;;;;;-1:-1:-1;6014:160:46;;;;;:::i;:::-;;:::i;2038:126:14:-;;;;;;;;;;;;;:::i;1354:524::-;;;;;;;;;;;;;:::i;8437:149:46:-;;;;;;;;;;-1:-1:-1;8437:149:46;;;;;:::i;:::-;;:::i;17252:407:13:-;;;;;;:::i;:::-;;:::i;1380:298:21:-;;;;;;:::i;:::-;;:::i;550:405:18:-;;;;;;:::i;:::-;;:::i;431:39:17:-;;;;;;;;;;;;;:::i;6525:169:46:-;;;;;;;;;;-1:-1:-1;6525:169:46;;;;;:::i;:::-;;:::i;4265:175::-;;;;;;;;;;-1:-1:-1;4265:175:46;;;;;:::i;:::-;;:::i;8426:66:13:-;;;;;;;;;;;;;:::i;3990:218:46:-;;;;;;;;;;-1:-1:-1;3990:218:46;;;;;:::i;:::-;;:::i;4532:619:13:-;;;;;;;;;;-1:-1:-1;4532:619:13;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;2208:1100:14:-;;;;;;:::i;:::-;;:::i;5538:2087:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;4664:102:46:-;;;;;;;;;;;;;:::i;17667:156:13:-;;;;;;:::i;:::-;;:::i;3315:1160::-;;;;;;;;;;-1:-1:-1;3315:1160:13;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;7491:290:46:-;;;;;;;;;;-1:-1:-1;7491:290:46;;;;;:::i;:::-;;:::i;1719:358:21:-;;;;;;:::i;:::-;;:::i;318:669:16:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8652:282:46:-;;;;;;;;;;-1:-1:-1;8652:282:46;;;;;:::i;:::-;;:::i;1016:323:21:-;;;;;;:::i;:::-;;:::i;337:41:17:-;;;;;;;;;;;;;:::i;8108:244:13:-;;;;;;;;;;-1:-1:-1;8108:244:13;;;;;:::i;:::-;;:::i;1003:406:18:-;;;;;;:::i;:::-;;:::i;16151:732:13:-;;;;;;:::i;:::-;;:::i;7847:162:46:-;;;;;;;;;;-1:-1:-1;7847:162:46;;;;;:::i;:::-;;:::i;693:282:21:-;;;;;;:::i;:::-;;:::i;13183:2911:13:-;;;;;;:::i;:::-;;:::i;948:148:42:-;-1:-1:-1;;;;;;1056:33:42;;1033:4;1056:33;;;;;;;;;;;;;948:148;;;;:::o;17831:151:13:-;8061:19;:17;:19::i;:::-;17940:15:::1;:34:::0;;-1:-1:-1;;;;;;17940:34:13::1;-1:-1:-1::0;;;;;17940:34:13;;;::::1;::::0;;;::::1;::::0;;17831:151::o;4502:98:46:-;4588:5;4581:12;;;;;;;;-1:-1:-1;;4581:12:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4556:13;;4581:12;;4588:5;;4581:12;;4588:5;4581:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4502:98;:::o;19150:215:13:-;19235:7;19263:16;19271:7;19263;:16::i;:::-;19255:54;;;;-1:-1:-1;;;19255:54:13;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;19329:19:13;;;;:10;:19;;;;;:28;-1:-1:-1;;;19329:28:13;;-1:-1:-1;;;;;19329:28:13;;19150:215::o;6751:395:46:-;6831:13;6847:23;6862:7;6847:14;:23::i;:::-;6831:39;;6894:5;-1:-1:-1;;;;;6888:11:46;:2;-1:-1:-1;;;;;6888:11:46;;;6880:57;;;;-1:-1:-1;;;6880:57:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6972:5;-1:-1:-1;;;;;6956:21:46;:12;:10;:12::i;:::-;-1:-1:-1;;;;;6956:21:46;;:69;;;;6981:44;7005:5;7012:12;:10;:12::i;6981:44::-;6948:159;;;;-1:-1:-1;;;6948:159:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7118:21;7127:2;7131:7;7118:8;:21::i;:::-;6751:395;;;:::o;10806:2320:13:-;11031:15;;10957:14;;7842:30;10957:14;7842:21;:30::i;:::-;10996:6:::1;:15;;;170:24:19;185:8;170:14;:24::i;:::-;11108:1:13::2;11089:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;11089:20:13::2;;11081:29;;;::::0;::::2;;11160:14:::0;::::2;11121:25;11149:26:::0;;;:10:::2;:26;::::0;;;;;;;;11216:18:::2;::::0;::::2;::::0;11149:26;;-1:-1:-1;;;11216:18:13;;::::2;-1:-1:-1::0;;;;;11216:18:13::2;::::0;11274:16:::2;::::0;;;;;::::2;;:::i;:::-;-1:-1:-1::0;;;;;11253:37:13::2;:17;-1:-1:-1::0;;;;;11253:37:13::2;;;11245:46;;;::::0;::::2;;11358:15;::::0;;::::2;::::0;-1:-1:-1;;;;;11358:15:13::2;11304:34;11341:33:::0;;;:16:::2;:33;::::0;;;;;;;11304:70;;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;;;11304:70:13;;::::2;::::0;;;;;::::2;::::0;;;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;;;11304:70:13;;::::2;;;::::0;;;;11416:44:::2;11443:7;11304:70:::0;11416:26:::2;:44::i;:::-;11385:76;;11567:29;11581:8;11591:4;11567:13;:29::i;:::-;11640:18;::::0;::::2;::::0;-1:-1:-1;;;;;11630:9:13;::::2;::::0;::::2;::::0;-1:-1:-1;;;11640:18:13;::::2;;::::0;;::::2;::::0;-1:-1:-1;;;11660:18:13;::::2;::::0;::::2;11680:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;11630:67;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11609:88:::0;;-1:-1:-1;11609:88:13;-1:-1:-1;11729:17:13::2;::::0;::::2;;11718:28:::0;::::2;::::0;::::2;::::0;:60:::2;;;11761:6;:17;;;11750:7;:28;;11718:60;11710:93;;;;-1:-1:-1::0;;;11710:93:13::2;;;;;;;:::i;:::-;11873:18;::::0;::::2;::::0;11816:19:::2;::::0;11838:74:::2;::::0;11866:4:::2;::::0;-1:-1:-1;;;11873:18:13;::::2;;::::0;;::::2;::::0;-1:-1:-1;;;11893:18:13;::::2;::::0;::::2;11838:19;:74::i;:::-;11816:96;;11985:32;12019::::0;12059:4:::2;-1:-1:-1::0;;;;;12059:14:13::2;;12074:11;12059:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11982:104;;;;;;;12194:198;12259:8;:33;;;12232:24;:60;12315:17;-1:-1:-1::0;;;;;12194:198:13::2;-1:-1:-1::0;;;12194:15:13::2;:198::i;:::-;12099:20;::::0;::::2;:308:::0;;-1:-1:-1;;;;;;12099:308:13;::::2;12136:271:::0;;::::2;-1:-1:-1::0;;;;;12099:308:13;;::::2;;::::0;::::2;::::0;;;::::2;::::0;;12578:33:::2;::::0;::::2;::::0;12513:198:::2;::::0;12551:60;;::::2;::::0;12513:198;::::2;-1:-1:-1::0;;;12513:15:13::2;:198::i;:::-;12418:20;::::0;::::2;:308:::0;;-1:-1:-1;;;;;12418:308:13;;::::2;12455:271:::0;;::::2;-1:-1:-1::0;;;12418:308:13;;;::::2;::::0;::::2;;;;::::0;;;::::2;::::0;;12739:33:::2;::::0;::::2;:60:::0;;;12810:33:::2;::::0;::::2;:60:::0;;;13015:16:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;12995:17;:36;12974:8;:18;;;:57;;;;;-1:-1:-1::0;;;;;12974:57:13::2;;;;;-1:-1:-1::0;;;;;12974:57:13::2;;;;;;13067:6;:14;;;13049:69;13083:6;:16;;;;;;;;;;:::i;:::-;13101:7;13110;13049:69;;;;;;;;:::i;:::-;;;;;;;;205:1:19;;;;;;;7883::13::1;10806:2320:::0;;;;:::o;1457:78:18:-;1515:12;:10;:12::i;:::-;1457:78::o;448:722:20:-;636:12;678:6;-1:-1:-1;;;;;669:15:20;:6;-1:-1:-1;;;;;669:15:20;;661:24;;;;;;718:7;-1:-1:-1;;;;;703:31:20;;735:6;743;751:3;703:52;;;;;;;;;;;;;-1:-1:-1;;;;;703:52:20;;;;;;-1:-1:-1;;;;;703:52:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;703:52:20;;-1:-1:-1;;;;;;772:18:20;;768:395;;829:7;-1:-1:-1;;;;;814:34:20;;849:6;857;865:3;814:55;;;;;;;;;;;;;-1:-1:-1;;;;;814:55:20;;;;;;-1:-1:-1;;;;;814:55:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;814:55:20;884:42;;;-1:-1:-1;;;884:42:20;;-1:-1:-1;;;;;884:42:20;;;;;;;;;814:55;;-1:-1:-1;884:28:20;;;;;;:42;;;;;-1:-1:-1;;884:42:20;;;;;;;;-1:-1:-1;884:28:20;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:395;;;960:28;1016:4;-1:-1:-1;;;;;1004:23:20;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1004:25:20;;-1:-1:-1;;;;;;1048:25:20;;1044:108;;1106:4;-1:-1:-1;;;;;1094:28:20;;1123:12;1094:42;;;;;;;;;;;;;-1:-1:-1;;;;;1094:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1044:108;768:395;;448:722;;;;;;:::o;862:502:15:-;1016:31;1050:36;;;;1061:4;1050:36;:::i;:::-;1016:70;;1097:59;1131:7;1140;:15;;;1097:33;:59::i;:::-;-1:-1:-1;1173:15:15;;1169:88;;1194:15;;:22;1218:13;;;;1190:67;;1194:22;1233:10;1245:11;1190:3;:67::i;:::-;1272:15;;1268:88;;1289:67;1293:7;:15;;;:22;;;1317:7;:13;;;1332:10;1344:11;1289:3;:67::i;:::-;862:502;;;;;:::o;6245:208:46:-;6306:7;6425:21;:12;:19;:21::i;:::-;6418:28;;6245:208;:::o;8549:2200:13:-;8742:17;8774:15;8804;8693:6;:15;;;170:24:19;185:8;170:14;:24::i;:::-;8886:14:13;::::1;8847:25;8875:26:::0;;;:10:::1;:26;::::0;;;;;;;8968:15:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;8968:15:13;::::1;8951:33:::0;;:16:::1;:33:::0;;;;;8914:70;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;8914:70:13;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;8914:70:13;;::::1;::::0;::::1;::::0;;;;;;9089:499;;::::1;::::0;::::1;::::0;;9135:14;;9089:499;::::1;::::0;;9176:14;;9089:499;;::::1;::::0;;::::1;::::0;9214:11;;9089:499:::1;::::0;;;;9567:4:::1;9089:499:::0;;;;-1:-1:-1;;;9255:18:13;::::1;;::::0;;::::1;9089:499:::0;::::1;::::0;;;;;;;;-1:-1:-1;;;9303:18:13;;::::1;::::0;::::1;9089:499:::0;::::1;::::0;;;;9356:21;;::::1;;9089:499:::0;;;;9412:21;;::::1;;9089:499:::0;;;;9464:17;;::::1;;8968:15;9089:499:::0;;;9512:17;::::1;;9089:499:::0;;;;8875:26;8847:25;9062:537:::1;::::0;:12:::1;:537::i;:::-;9669:18;::::0;::::1;::::0;9024:575;;-1:-1:-1;9024:575:13;;-1:-1:-1;9024:575:13;-1:-1:-1;9024:575:13;-1:-1:-1;9612:19:13::1;::::0;9634:74:::1;::::0;9662:4:::1;::::0;-1:-1:-1;;;9669:18:13;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;9689:18:13;::::1;::::0;::::1;9634:19;:74::i;:::-;9612:96;;9783:32;9817::::0;9857:4:::1;-1:-1:-1::0;;;;;9857:14:13::1;;9872:11;9857:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9780:104;;;;;;;9943:183;10004:8;:33;;;9977:24;:60;10056:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;10056:18:13::1;-1:-1:-1::0;;;;;9943:183:13::1;-1:-1:-1::0;;;9943:15:13::1;:183::i;:::-;9897:20;::::0;::::1;:240:::0;;-1:-1:-1;;;;;9897:240:13;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;9897:240:13;;::::1;;::::0;;10255:33:::1;::::0;::::1;::::0;9897:240;10307:18;::::1;::::0;10194:183:::1;::::0;10228:60;;::::1;::::0;-1:-1:-1;;;10307:18:13;;;::::1;;::::0;10194:15:::1;:183::i;:::-;10148:20;::::0;::::1;:240:::0;;-1:-1:-1;;;;;;;;10148:240:13;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;10401:29:::1;10148:8:::0;10425:4;10401:13:::1;:29::i;:::-;10488:33;::::0;::::1;:60:::0;;;10559:33:::1;::::0;::::1;:60:::0;;;10630:18:::1;::::0;::::1;:31:::0;;-1:-1:-1;;;;;;;;10630:31:13;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;;::::0;;10679:62:::1;::::0;10697:14;::::1;::::0;10679:62:::1;::::0;::::1;::::0;10652:9;;10724:7;;10733;;10679:62:::1;:::i;:::-;;;;;;;;205:1:19;;;;;;8549:2200:13::0;;;;;;:::o;8071:300:46:-;8230:41;8249:12;:10;:12::i;:::-;8263:7;8230:18;:41::i;:::-;8222:103;;;;-1:-1:-1;;;8222:103:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8336:28;8346:4;8352:2;8356:7;8336:9;:28::i;16940:255:13:-;17025:7;7842:30;7864:7;7842:21;:30::i;:::-;17045:25:::1;17073:19:::0;;;:10:::1;:19;::::0;;;;17134::::1;:17;:19::i;:::-;17103:28;::::0;::::1;:50:::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;17103:50:13::1;-1:-1:-1::0;;;;;17103:50:13;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;17164:19:13::1;::::0;;::::1;:23:::0;-1:-1:-1;;16940:255:13:o;6014:160:46:-;-1:-1:-1;;;;;6137:20:46;;6111:7;6137:20;;;:13;:20;;;;;:30;;6161:5;6137:23;:30::i;:::-;6130:37;;6014:160;;;;;:::o;2038:126:14:-;2098:66;2038:126;:::o;1354:524::-;1412:7;1633:66;1722:8;1753:11;1787:13;:11;:13::i;:::-;1831:4;1480:375;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1480:375:14;;;;;;;;;;;;;;;;;;;;;;;;1452:418;;;;;;1432:438;;1354:524;:::o;8437:149:46:-;8540:39;8557:4;8563:2;8567:7;8540:39;;;;;;;;;;;;:16;:39::i;17252:407:13:-;17330:7;7842:30;7864:7;7842:21;:30::i;:::-;17350:25:::1;17378:19:::0;;;:10:::1;:19;::::0;;;;17430:18:::1;::::0;::::1;::::0;-1:-1:-1;;;17430:18:13;::::1;-1:-1:-1::0;;;;;17430:18:13::1;:23:::0;:65;::::1;;;-1:-1:-1::0;17470:20:13::1;::::0;::::1;::::0;-1:-1:-1;;;;;17470:20:13::1;:25:::0;17430:65:::1;:107;;;;-1:-1:-1::0;17512:20:13::1;::::0;::::1;::::0;-1:-1:-1;;;17512:20:13;::::1;-1:-1:-1::0;;;;;17512:20:13::1;:25:::0;17430:107:::1;:148;;;;-1:-1:-1::0;17554:19:13::1;::::0;::::1;::::0;:24;17430:148:::1;17408:181;;;::::0;::::1;;17607:19;::::0;;;:10:::1;:19;::::0;;;;17600:26;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;17637:14:::1;17618:7:::0;17637:5:::1;:14::i;1380:298:21:-:0;1580:90;;;-1:-1:-1;;;1580:90:21;;1614:10;1580:90;;;;1634:4;1580:90;;;;;;;;;;;;;;;;1656:4;1580:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1580:33:21;;;;;:90;;;;;-1:-1:-1;;1580:90:21;;;;;;;-1:-1:-1;1580:33:21;:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1380:298;;;;;;:::o;550:405:18:-;648:20;678:5;-1:-1:-1;;;;;671:23:18;;703:4;671:38;;;;;;;;;;;;;-1:-1:-1;;;;;671:38:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;671:38:18;;-1:-1:-1;728:29:18;;;;720:60;;;;;-1:-1:-1;;;720:60:18;;;;;;;;;;;;-1:-1:-1;;;720:60:18;;;;;;;;;;;;;;;797:16;;793:155;;837:5;-1:-1:-1;;;;;830:22:18;;853:12;830:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;881:55;912:9;923:12;881:30;:55::i;431:39:17:-;;;:::o;6525:169:46:-;6600:7;;6641:22;:12;6657:5;6641:15;:22::i;:::-;-1:-1:-1;6619:44:46;6525:169;-1:-1:-1;;;6525:169:46:o;4265:175::-;4337:7;4363:70;4380:7;4363:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;8426:66:13:-;8475:13;8426:66;:::o;3990:218:46:-;4062:7;-1:-1:-1;;;;;4089:19:46;;4081:74;;;;-1:-1:-1;;;4081:74:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4172:20:46;;;;;;:13;:20;;;;;:29;;:27;:29::i;4532:619:13:-;4655:39;4862:19;;;:10;:19;;;;;;;;4835:46;;;;;;;;;-1:-1:-1;;;;;4835:46:13;;;;-1:-1:-1;;;;;;;;4835:46:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;4835:46:13;;;;;;;;-1:-1:-1;;;4835:46:13;;;;;;;;;;;;;;-1:-1:-1;;;4835:46:13;;;;;;;;;;;;-1:-1:-1;;;;;;;;4835:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4835:46:13;;;;;;;-1:-1:-1;;;4835:46:13;;;;;;;;-1:-1:-1;;;4835:46:13;;;;;;;;;;;;;;;4655:39;;;;;;4835:46;4892:49;;;;-1:-1:-1;;;4892:49:13;;;;;;;:::i;:::-;4974:8;:40;;;5029:8;:26;;;5070:8;:28;;;5113:8;:19;;;4952:191;;;;;;;;;4532:619;;;;;:::o;2208:1100:14:-;2408:8;170:24:19;185:8;170:14;:24::i;:::-;2429:14:14::1;2559:18;:16;:18::i;:::-;2098:66;2638:7:::0;2647;2656:30:::1;2647:7:::0;2656:21:::1;:30::i;:::-;2610:87;::::0;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;2610:87:14;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2600:98;;;;::::1;::::0;-1:-1:-1;;;2487:230:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:273;;;::::1;::::0;;-1:-1:-1;;2759:16:14::1;2767:7:::0;2759::::1;:16::i;:::-;2743:32;;2805:5;-1:-1:-1::0;;;;;2794:16:14::1;:7;-1:-1:-1::0;;;;;2794:16:14::1;;;2786:60;;;::::0;;-1:-1:-1;;;2786:60:14;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2863:25;2882:5;2863:18;:25::i;:::-;2859:403;;;2954:25;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;;2954:25:14::1;::::0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2913:67:14;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2913:32:14;::::1;::::0;::::1;::::0;2946:6;;2913:67;;;;;;;;::::1;::::0;;;;-1:-1:-1;2913:67:14::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;2913:67:14;-1:-1:-1;;;;;;2913:81:14::1;-1:-1:-1::0;;;2913:81:14::1;2905:106;;;::::0;;-1:-1:-1;;;2905:106:14;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;2905:106:14;;;;;;;;;;;;;::::1;;2859:403;;;3044:24;3071:26;3081:6;3089:1;3092;3095;3071:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3071:26:14::1;::::0;-1:-1:-1;;3071:26:14;;;-1:-1:-1;;;;;;;3138:30:14;::::1;::::0;;::::1;::::0;:59:::1;;;3192:5;-1:-1:-1::0;;;;;3172:25:14::1;:16;-1:-1:-1::0;;;;;3172:25:14::1;;3138:59;3112:138;;;::::0;;-1:-1:-1;;;3112:138:14;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;3112:138:14;;;;;;;;;;;;;::::1;;2859:403;;3274:26;3283:7;3292;3274:8;:26::i;:::-;205:1:19;;2208:1100:14::0;;;;;;;:::o;5538:2087:13:-;5705:15;5735:17;5767:15;5797;5656:6;:15;;;170:24:19;185:8;170:14;:24::i;:::-;5932:492:13::1;::::0;;::::1;::::0;::::1;::::0;;;5840:16:::1;::::0;5905:530:::1;::::0;5932:492;5978:13:::1;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;-1:-1:-1::0;;;;;5932:492:13::1;;;;;6018:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5932:492:13::1;::::0;;::::1;;6055:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;5932:492;;::::0;;6103:4:::1;5932:492;::::0;::::1;::::0;;;6138:16:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;5932:492;;::::0;;::::1;;6184:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;5932:492;;;;;;6235:6;:21;;;5932:492;;;;6291:6;:21;;;5932:492;;;;6343:6;:17;;;5932:492;;;;6391:6;:17;;;5932:492;;::::0;5905:12:::1;:530::i;:::-;5867:568:::0;;-1:-1:-1;5867:568:13;;-1:-1:-1;5867:568:13;-1:-1:-1;5867:568:13;-1:-1:-1;6448:46:13::1;6454:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;6483:7;:9:::0;;-1:-1:-1;;;;;;6483:9:13;::::1;::::0;-1:-1:-1;;;;;6483:9:13;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;-1:-1:-1;6483:9:13;6448:5:::1;:46::i;:::-;6507:19;6529:70;6557:4;6564:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;6582;::::0;;;::::1;::::0;::::1;;:::i;:::-;6529:19;:70::i;:::-;6507:92;;6613:32;6647::::0;6687:4:::1;-1:-1:-1::0;;;;;6687:14:13::1;;6702:11;6687:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6610:104;;;;;;;6754:13;6783:162;6822:4;6846:84;;;;;;;;6875:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6846:84:13::1;;;;;6898:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6846:84:13::1;;;;;6918:6;:10;;;;;;;;;;:::i;:::-;6846:84;;::::0;;6783:12:::1;:162::i;:::-;6754:191;;6980:564;;;;;;;;7011:1;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7045:1;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7070:6;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7102:6;:16;;;;;;;;;;:::i;:::-;6980:564;;::::0;;::::1;;7144:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;6980:564;;;;;;7186:9;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7236:24;6980:564;;;;7301:24;6980:564;;;;7353:1;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7382:1;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7431:1;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7466:1;6980:564;;;;;;7503:1;6980:564;;;;;;7531:1;6980:564;;::::0;6958:10:::1;:19;6969:7;6958:19;;;;;;;;;;;:586;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7580:7;7562:55;7589:9;7600:7;7609;7562:55;;;;;;;;:::i;:::-;;;;;;;;205:1:19;;;;;5538:2087:13::0;;;;;;:::o;4664:102:46:-;4752:7;4745:14;;;;;;;;-1:-1:-1;;4745:14:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:13;;4745:14;;4752:7;;4745:14;;4752:7;4745:14;;;;;;;;;;;;;;;;;;;;;;;;17667:156:13;8061:19;:17;:19::i;:::-;17779:16:::1;:36:::0;;-1:-1:-1;;;;;;17779:36:13::1;-1:-1:-1::0;;;;;17779:36:13;;;::::1;::::0;;;::::1;::::0;;17667:156::o;3315:1160::-;3433:12;3868:19;;;:10;:19;;;;;;;;3841:46;;;;;;;;;-1:-1:-1;;;;;3841:46:13;;;;-1:-1:-1;;;;;;;;3841:46:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;3841:46:13;;;;;;;;-1:-1:-1;;;3841:46:13;;;;;;;;;;;;;;-1:-1:-1;;;3841:46:13;;;;;;;;;;;;-1:-1:-1;;;;;;;;3841:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3841:46:13;;;;;;;-1:-1:-1;;;3841:46:13;;;;;;;;-1:-1:-1;;;3841:46:13;;;;;;;;;;;;;;;3433:12;;;;;;;;;;;;;;;;;;;;;;3841:46;3898:49;;;;-1:-1:-1;;;3898:49:13;;;;;;;:::i;:::-;3958:34;3995:16;:33;4012:8;:15;;;-1:-1:-1;;;;;3995:33:13;-1:-1:-1;;;;;3995:33:13;;;;;;;;;;;;3958:70;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3958:70:13;-1:-1:-1;;;;;3958:70:13;-1:-1:-1;;;;;3958:70:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3958:70:13;-1:-1:-1;;;;;3958:70:13;-1:-1:-1;;;;;3958:70:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;4061:8;:14;;;4090:8;:17;;;4122:7;:14;;;4151:7;:14;;;4180:7;:11;;;4206:8;:18;;;4239:8;:18;;;4272:8;:18;;;4305:8;:33;;;4353:8;:33;;;4401:8;:20;;;4436:8;:20;;;4039:428;;;;;;;;;;;;;;;;;;;;;;;;;;3315:1160;;;;;;;;;;;;;:::o;7491:290:46:-;7605:12;:10;:12::i;:::-;-1:-1:-1;;;;;7593:24:46;:8;-1:-1:-1;;;;;7593:24:46;;;7585:62;;;;;-1:-1:-1;;;7585:62:46;;;;;;;;;;;;-1:-1:-1;;;7585:62:46;;;;;;;;;;;;;;;7703:8;7658:18;:32;7677:12;:10;:12::i;:::-;-1:-1:-1;;;;;7658:32:46;;;;;;;;;;;;;;;;;-1:-1:-1;7658:32:46;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;7658:53:46;;;;;;;;;;;7741:12;:10;:12::i;:::-;-1:-1:-1;;;;;7726:48:46;;7765:8;7726:48;;;;;;;;;;;;;;;;;;;;7491:290;;:::o;1719:358:21:-;1936:50;;;-1:-1:-1;;;1936:50:21;;1960:10;1936:50;;;;1980:4;1936:50;;;;;;-1:-1:-1;;1989:17:21;-1:-1:-1;;;;;1936:23:21;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1936:50:21;:70;1932:137;;;2021:48;2039:5;2046;2053:6;2061:1;2064;2067;2021:17;:48::i;:::-;1719:358;;;;;;:::o;318:669:16:-;393:22;450:4;-1:-1:-1;;;;;438:24:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;428:34;;478:9;473:507;493:15;;;473:507;;;531:12;;576:4;595;;600:1;595:7;;;;;;;;;;;;;;;;;;:::i;:::-;568:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:73;;;;625:7;620:313;;754:2;738:6;:13;:18;734:32;;;758:8;;;734:32;839:4;831:6;827:17;817:27;;899:6;888:28;;;;;;;;;;;;:::i;:::-;881:36;;-1:-1:-1;;;881:36:16;;;;;;;;:::i;620:313::-;962:6;949:7;957:1;949:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;510:3:16;;473:507;;;;318:669;;;;:::o;8652:282:46:-;8783:41;8802:12;:10;:12::i;:::-;8816:7;8783:18;:41::i;:::-;8775:103;;;;-1:-1:-1;;;8775:103:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8888:39;8902:4;8908:2;8912:7;8921:5;8888:13;:39::i;:::-;8652:282;;;;:::o;1016:323:21:-;1228:50;;;-1:-1:-1;;;1228:50:21;;1252:10;1228:50;;;;1272:4;1228:50;;;;;;1281:5;;-1:-1:-1;;;;;1228:23:21;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1228:50:21;:58;1224:107;;;1288:43;1299:5;1306;1313:8;1323:1;1326;1329;1288:10;:43::i;337:41:17:-;;;:::o;8108:244:13:-;8198:13;8232:16;8240:7;8232;:16::i;:::-;8224:25;;;;;;8303:16;;8267:77;;-1:-1:-1;;;8267:77:13;;-1:-1:-1;;;;;8303:16:13;;;;8267:62;;:77;;8330:4;;8336:7;;8267:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8267:77:13;;;;;;;;;;;;:::i;1003:406:18:-;1149:20;1179:5;-1:-1:-1;;;;;1172:23:18;;1204:4;1172:38;;;;;;;;;;;;;-1:-1:-1;;;;;1172:38:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1172:38:18;;-1:-1:-1;1229:29:18;;;;1221:60;;;;;-1:-1:-1;;;1221:60:18;;;;;;;;;;;;-1:-1:-1;;;1221:60:18;;;;;;;;;;;;;;;1298:16;;1294:108;;1331:59;1359:5;1366:9;1377:12;1331:27;:59::i;16151:732:13:-;16255:7;7842:30;7864:7;7842:21;:30::i;:::-;-1:-1:-1;;;;;16283:23:13;::::1;16275:32;;;::::0;::::1;;16320:25;16348:19:::0;;;:10:::1;:19;::::0;;;;16401::::1;::::0;::::1;::::0;16348;;16460::::1;:17;:19::i;:::-;16514:1;16492:19;::::0;::::1;:23:::0;;;16526:28:::1;::::0;::::1;:50:::0;;-1:-1:-1;;;;;16526:50:13::1;-1:-1:-1::0;;;16526:50:13::1;::::0;::::1;;;::::0;;16605:15:::1;::::0;-1:-1:-1;16772:15:13;;::::1;::::0;-1:-1:-1;;;;;16772:15:13::1;16755:33:::0;;:16:::1;:33;::::0;;;;;;;;16719:70;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;16719:70:13;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;16719:70:13;;::::1;;;::::0;;;;;;;16526:50;;-1:-1:-1;16605:15:13::1;::::0;16589:44:::1;::::0;16648:9;;16672:10;;16697:7;;16719:70:::1;::::0;16746:7:::1;::::0;16719:26:::1;:70::i;:::-;16804:26;::::0;::::1;::::0;16589:286:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;16589:286:13;;;::::1;::::0;;;;;-1:-1:-1;;;16804:26:13;::::1;;;::::0;16845:19;;16589:286:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;7847:162:46::0;-1:-1:-1;;;;;7967:25:46;;;7944:4;7967:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7847:162::o;693:282:21:-;888:79;;;-1:-1:-1;;;888:79:21;;915:10;888:79;;;;935:4;888:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;888:26:21;;;;;:79;;;;;-1:-1:-1;;888:79:21;;;;;;;-1:-1:-1;888:26:21;:79;;;;;;;;;;13183:2911:13;13348:15;;13314:14;;7842:30;13314:14;7842:21;:30::i;:::-;13426:1:::1;13406:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;13406:21:13::1;;:46;;;-1:-1:-1::0;13451:1:13::1;13431:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;13431:21:13::1;;13406:46;13398:55;;;::::0;::::1;;13544:17;::::0;13564:16:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;13564:30:13::1;;:65;;13613:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;13564:65;;;13605:4;13564:65;13681:14:::0;::::1;13642:25;13670:26:::0;;;:10:::1;:26;::::0;;;;;;;13763:15:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;13763:15:13::1;13746:33:::0;;:16:::1;:33:::0;;;;;13709:70;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;13709:70:13;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;13709:70:13;;::::1;;;::::0;;;;;;;13544:85;;-1:-1:-1;13709:70:13;13823:44:::1;13850:7;13709:70:::0;13823:26:::1;:44::i;:::-;13927:20;::::0;::::1;::::0;;14092:18;::::1;::::0;13792:76;;-1:-1:-1;;;;;;13927:20:13;;::::1;::::0;-1:-1:-1;;;13949:20:13;;;::::1;::::0;::::1;::::0;14092:18;::::1;;:22:::0;14088:1000:::1;;14141:18;::::0;::::1;::::0;14131:52:::1;::::0;-1:-1:-1;;;14131:52:13;;-1:-1:-1;;;;;14131:9:13;::::1;::::0;::::1;::::0;:52:::1;::::0;-1:-1:-1;;;14141:18:13;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;14161:18:13;;::::1;::::0;::::1;::::0;14181:1:::1;::::0;14131:52:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14342:18:13::1;::::0;::::1;::::0;14201:32:::1;::::0;;;-1:-1:-1;;;;;14292:14:13;::::1;::::0;::::1;::::0;14307:74:::1;::::0;14335:4:::1;::::0;-1:-1:-1;;;14342:18:13;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;14362:18:13;::::1;::::0;::::1;14307:19;:74::i;:::-;14292:90;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14198:184;;;;;;;14440:199;14505:8;:33;;;14478:24;:60;14561:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;14561:18:13::1;-1:-1:-1::0;;;;;14440:199:13::1;-1:-1:-1::0;;;14440:15:13::1;:199::i;:::-;14399:255;;;;14710:199;14775:8;:33;;;14748:24;:60;14831:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;14831:18:13::1;-1:-1:-1::0;;;;;14710:199:13::1;-1:-1:-1::0;;;14710:15:13::1;:199::i;:::-;14941:33;::::0;::::1;:60:::0;;;;15016:33:::1;::::0;::::1;:60:::0;14669:255:::1;14088:1000;15170:22;::::0;-1:-1:-1;;;;;15252:31:13;::::1;:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;15252:31:13::1;;:65;;15300:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;15252:65;;;15286:11;15252:65;15356:11;-1:-1:-1::0;;;;;15336:31:13::1;:6;:17;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15336:31:13::1;;:65;;15384:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;15336:65;;;15370:11;15336:65;15555:18;::::0;::::1;::::0;15504:171:::1;::::0;-1:-1:-1;;;15504:171:13;;15169:247;;-1:-1:-1;15169:247:13;;-1:-1:-1;;;;;;15504:12:13;::::1;::::0;::::1;::::0;:171:::1;::::0;15531:9;;-1:-1:-1;;;15555:18:13;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;15588:18:13;;::::1;::::0;::::1;::::0;15169:247;;;;15504:171:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15896:20;::::0;::::1;15895:107:::0;;-1:-1:-1;;;;;;;;;;;15895:107:13;;::::1;-1:-1:-1::0;;;15973:28:13;;::::1;15895:107:::0;::::1;;;;15943:28:::0;;::::1;15895:107:::0;::::1;;::::0;;;16020:66:::1;::::0;15483:192;;::::1;::::0;-1:-1:-1;15483:192:13::1;::::0;-1:-1:-1;16028:14:13;::::1;::::0;16020:66:::1;::::0;::::1;::::0;16044:9;;15943:28;;15973;;16020:66:::1;:::i;7900:116::-:0;7991:7;-1:-1:-1;;;;;7976:29:13;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7962:45:13;:10;-1:-1:-1;;;;;7962:45:13;;7954:54;;;;;10368:125:46;10433:4;10456:30;:12;10478:7;10456:21;:30::i;598:104:52:-;685:10;598:104;:::o;19490:180:13:-;19574:19;;;;:10;:19;;;;;:33;;-1:-1:-1;;;;;19574:33:13;-1:-1:-1;;;;;;;;19574:33:13;;;;;;;;;;;;:19;;19632:16;19574:19;19632:7;:16::i;:::-;-1:-1:-1;;;;;19623:39:13;;;;;;;;;;;19490:180;;:::o;7633:145::-;7714:39;7733:10;7745:7;7714:18;:39::i;:::-;7706:64;;;;-1:-1:-1;;;7706:64:13;;;;;;;:::i;:::-;7633:145;:::o;222:133:19:-;315:8;296:15;:27;;288:59;;;;;-1:-1:-1;;;288:59:19;;;;;;;;;;;;-1:-1:-1;;;288:59:19;;;;;;;;;;;;;;1749:526:36;1833:12;1879:3;:10;;;-1:-1:-1;;;;;1866:23:36;:3;:10;;;-1:-1:-1;;;;;1866:23:36;;1858:32;;;;;;-1:-1:-1;2120:10:36;;2132;;;;;2144:7;;;;;2109:43;;-1:-1:-1;;;;;2109:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:54;;;;;;-1:-1:-1;;;;;;1988:234:36;;;;;;;-1:-1:-1;;;;;;1988:234:36;;;;;;;;;;;;658:66;1988:234;;;;;;;;;;;;;;;;;;;;;;;;;1956:285;;;;;;1749:526::o;18163:796:13:-;18348:18;;;;18317:70;;-1:-1:-1;;;18317:70:13;;18258:42;;-1:-1:-1;;;;;18317:30:13;;;;;:70;;-1:-1:-1;;;18348:18:13;;;;;;;-1:-1:-1;;;18368:18:13;;;;;18317:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18404:40;;;;18251:136;;-1:-1:-1;;;;;;18404:78:13;;;:40;;:78;;-1:-1:-1;18400:117:13;;-1:-1:-1;;18400:117:13;18499:7;;;18400:117;18533:26;;;;-1:-1:-1;;;18533:26:13;;;;:31;18529:274;;18675:40;;;;;18734:18;;;18604:187;;-1:-1:-1;;;;;18675:40:13;;;18638:77;;18604:187;;-1:-1:-1;;;18734:18:13;;-1:-1:-1;;;;;18734:18:13;-1:-1:-1;;;18604:15:13;:187::i;:::-;18581:19;;;:210;;;;;;;18529:274;18815:40;;;:77;;-1:-1:-1;;;;;;18815:77:13;-1:-1:-1;;;;;18815:77:13;;;;;18932:19;:17;:19::i;:::-;18903:8;:26;;;:48;;;;;;;;;;;;;;;;;;18163:796;;;;:::o;167:214:37:-;327:45;;;-1:-1:-1;;;;;;327:45:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:56;;;;;167:214;;;;;;:::o;762:3868:11:-;878:14;;;-1:-1:-1;;1394:1:11;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:11;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:11;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:11;;;;-1:-1:-1;1735:13:11;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:11;;;;;:::o;1543:146:18:-;1589:21;:25;1585:96;;1616:65;1647:10;1659:21;1616:30;:65::i;1193:280:33:-;1320:16;1373:44;1400:7;1409;1373:26;:44::i;:::-;1354:64;-1:-1:-1;1437:10:33;-1:-1:-1;;;;;1437:27:33;;;1429:36;;;;;1886:716:18;2039:5;-1:-1:-1;;;;;2030:14:18;:5;-1:-1:-1;;;;;2030:14:18;;:48;;;;;2073:5;2048:21;:30;;2030:48;2026:569;;;2133:5;-1:-1:-1;;;;;2126:21:18;;2155:5;2126:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2220:5;-1:-1:-1;;;;;2213:22:18;;2236:9;2247:5;2213:40;;;;;;;;;;;;;-1:-1:-1;;;;;2213:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2026:569:18;;-1:-1:-1;2026:569:18;;-1:-1:-1;;;;;2275:22:18;;2292:4;2275:22;2271:324;;;2406:52;2434:5;2441:9;2452:5;2406:27;:52::i;:::-;2271:324;;;2520:63;2552:5;2559;2566:9;2577:5;2520:31;:63::i;7812:121:53:-;7881:7;7907:19;7915:3;7907:7;:19::i;1743:1375:15:-;1849:17;1881:15;1911;1941:16;1985:34;2035:84;;;;;;;;2064:6;:13;;;-1:-1:-1;;;;;2035:84:15;;;;;2087:6;:13;;;-1:-1:-1;;;;;2035:84:15;;;;;2107:6;:10;;;2035:84;;;;;1985:134;;2151:44;2178:7;2187;2151:26;:44::i;:::-;2132:64;;2266:20;2302:4;-1:-1:-1;;;;;2302:10:15;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2265:49;;;;;;;;2329:21;2353:45;2381:6;:16;;;2353:27;:45::i;:::-;2329:69;;2413:21;2437:45;2465:6;:16;;;2437:27;:45::i;:::-;2413:69;;2511:229;2569:12;2600:13;2632;2664:6;:21;;;2704:6;:21;;;2511:39;:229::i;:::-;2499:241;;1743:1375;;;2785:4;-1:-1:-1;;;;;2785:9:15;;2809:6;:16;;;2840:6;:16;;;2871:6;:16;;;2902:9;2937:55;;;;;;;;2964:7;2937:55;;;;2980:10;-1:-1:-1;;;;;2937:55:15;;;;2926:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;2785:219;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3036:17;;;;2764:240;;-1:-1:-1;2764:240:15;-1:-1:-1;3025:28:15;;;;;:60;;;3068:6;:17;;;3057:7;:28;;3025:60;3017:93;;;;-1:-1:-1;;;3017:93:15;;;;;;;:::i;:::-;1743:1375;;;;;;:::o;10651:351:46:-;10744:4;10768:16;10776:7;10768;:16::i;:::-;10760:73;;;;-1:-1:-1;;;10760:73:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10843:13;10859:23;10874:7;10859:14;:23::i;:::-;10843:39;;10911:5;-1:-1:-1;;;;;10900:16:46;:7;-1:-1:-1;;;;;10900:16:46;;:51;;;;10944:7;-1:-1:-1;;;;;10920:31:46;:20;10932:7;10920:11;:20::i;:::-;-1:-1:-1;;;;;10920:31:46;;10900:51;:94;;;;10955:39;10979:5;10986:7;10955:23;:39::i;13692:584::-;13816:4;-1:-1:-1;;;;;13789:31:46;:23;13804:7;13789:14;:23::i;:::-;-1:-1:-1;;;;;13789:31:46;;13781:85;;;;-1:-1:-1;;;13781:85:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13902:16:46;;13894:65;;;;-1:-1:-1;;;13894:65:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13970:39;13991:4;13997:2;14001:7;13970:20;:39::i;:::-;14071:29;14088:1;14092:7;14071:8;:29::i;:::-;-1:-1:-1;;;;;14111:19:46;;;;;;:13;:19;;;;;:35;;14138:7;14111:26;:35::i;:::-;-1:-1:-1;;;;;;14156:17:46;;;;;;:13;:17;;;;;:30;;14178:7;14156:21;:30::i;:::-;-1:-1:-1;14197:29:46;:12;14214:7;14223:2;14197:16;:29::i;:::-;;14261:7;14257:2;-1:-1:-1;;;;;14242:27:46;14251:4;-1:-1:-1;;;;;14242:27:46;-1:-1:-1;;;;;;;;;;;14242:27:46;;;;;;;;;13692:584;;;:::o;17990:165:13:-;18042:6;18086:16;18068:15;:34;:79;;18131:15;18068:79;;;-1:-1:-1;18105:16:13;;17990:165::o;9242:135:54:-;9313:7;9347:22;9351:3;9363:5;9347:3;:22::i;244:128:34:-;345:9;;319:46::o;12841:527:46:-;12900:13;12916:23;12931:7;12916:14;:23::i;:::-;12900:39;;12968:48;12989:5;13004:1;13008:7;12968:20;:48::i;:::-;13054:29;13071:1;13075:7;13054:8;:29::i;:::-;13139:19;;;;:10;:19;;;;;13133:33;;-1:-1:-1;;13133:33:46;;;;;;;;;;;:38;13129:95;;13194:19;;;;:10;:19;;;;;13187:26;;;:::i;:::-;-1:-1:-1;;;;;13234:20:46;;;;;;:13;:20;;;;;:36;;13262:7;13234:27;:36::i;:::-;-1:-1:-1;13281:28:46;:12;13301:7;13281:19;:28::i;:::-;-1:-1:-1;13325:36:46;;13353:7;;13349:1;;-1:-1:-1;;;;;13325:36:46;;;-1:-1:-1;;;;;;;;;;;13325:36:46;13349:1;;13325:36;12841:527;;:::o;2433:168:38:-;2546:12;;;2506;2546;;;;;;;;;-1:-1:-1;;;;;2524:7:38;;;2539:5;;2524:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2524:35:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2505:54;;;2578:7;2570:23;;;;;-1:-1:-1;;;2570:23:38;;;;;;;;;;;;-1:-1:-1;;;2570:23:38;;;;;;;;;;;;;;8261:233:53;8341:7;;;;8400:22;8404:3;8416:5;8400:3;:22::i;:::-;8369:53;;-1:-1:-1;8369:53:53;-1:-1:-1;;;8261:233:53;;;;;;:::o;9514:211::-;9621:7;9671:44;9676:3;9696;9702:12;9671:4;:44::i;18967:146:13:-;19042:7;19077:19;;;:10;:19;;;;;:27;;-1:-1:-1;;;;;;19077:27:13;;;-1:-1:-1;;;;;19077:27:13;;;;;;;;;;;;;;18967:146::o;718:413:51:-;1078:20;1116:8;;;718:413::o;12231:393:46:-;-1:-1:-1;;;;;12310:16:46;;12302:61;;;;;-1:-1:-1;;;12302:61:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12382:16;12390:7;12382;:16::i;:::-;12381:17;12373:58;;;;;-1:-1:-1;;;12373:58:46;;;;;;;;;;;;-1:-1:-1;;;12373:58:46;;;;;;;;;;;;;;;12442:45;12471:1;12475:2;12479:7;12442:20;:45::i;:::-;-1:-1:-1;;;;;12498:17:46;;;;;;:13;:17;;;;;:30;;12520:7;12498:21;:30::i;:::-;-1:-1:-1;12539:29:46;:12;12556:7;12565:2;12539:16;:29::i;:::-;-1:-1:-1;12584:33:46;;12609:7;;-1:-1:-1;;;;;12584:33:46;;;12601:1;;-1:-1:-1;;;;;;;;;;;12584:33:46;12601:1;;12584:33;12231:393;;:::o;5191:290:13:-;-1:-1:-1;;;;;5315:14:13;;5280:13;5315:14;;;:8;:14;;;;;;-1:-1:-1;;;;;5315:14:13;5344:11;5340:134;;-1:-1:-1;5399:11:13;:13;;;-1:-1:-1;;;;;;;;5399:13:13;;;;;;;;;;;;-1:-1:-1;;;;;5399:13:13;;;;;;;;;;-1:-1:-1;;;;;5372:14:13;;;-1:-1:-1;5372:14:13;;;:8;:14;;;;;;;;:41;;-1:-1:-1;;;;;;5372:41:13;;;;;5428:24;;;:16;:24;;;;;;:34;;;;;;;-1:-1:-1;;;;;;5428:34:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5428:34:13;-1:-1:-1;;;;5428:34:13;;;;;;;;;;;;;;;;;;;;5191:290;;;;:::o;9796:269:46:-;9909:28;9919:4;9925:2;9929:7;9909:9;:28::i;:::-;9955:48;9978:4;9984:2;9988:7;9997:5;9955:22;:48::i;:::-;9947:111;;;;-1:-1:-1;;;9947:111:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:316:38;1412:59;;;-1:-1:-1;;;;;1412:59:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1412:59:38;-1:-1:-1;;;1412:59:38;;;1401:71;;;;1366:12;;;;1401:10;;;;1412:59;1401:71;;;1412:59;1401:71;;1412:59;1401:71;;;;;;;;;;-1:-1:-1;;1401:71:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:107;;;;1491:7;:57;;;;-1:-1:-1;1503:11:38;;:16;;:44;;;1534:4;1523:24;;;;;;;;;;;;;;;-1:-1:-1;1523:24:38;1503:44;1483:72;;;;;-1:-1:-1;;;1483:72:38;;;;;;;;;;;;-1:-1:-1;;;1483:72:38;;;;;;;;;;;;;;7580:149:53;7664:4;7687:35;7697:3;7717;7687:9;:35::i;581:367:38:-;786:69;;;-1:-1:-1;;;;;786:69:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;786:69:38;-1:-1:-1;;;786:69:38;;;775:81;;;;727:12;;;;775:10;;;;786:69;775:81;;;786:69;775:81;;786:69;775:81;;;;;;;;;;-1:-1:-1;;775:81:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:130;;;;875:7;:57;;;;-1:-1:-1;887:11:38;;:16;;:44;;;918:4;907:24;;;;;;;;;;;;;;;-1:-1:-1;907:24:38;887:44;867:73;;;;;-1:-1:-1;;;867:73:38;;;;;;;;;;;;-1:-1:-1;;;867:73:38;;;;;;;;;;;;;;4483:108:53;4565:19;;4483:108::o;1384:2611:12:-;1447:20;1480:15;1505:1;1498:4;:8;;;:57;;1549:4;1542:12;;1498:57;;;1525:4;1518:12;;1517:13;;1498:57;1480:75;-1:-1:-1;654:9:12;1574:28;;;1566:42;;;;;-1:-1:-1;;;1566:42:12;;;;;;;;;;;;-1:-1:-1;;;1566:42:12;;;;;;;;;;;;;;;1621:13;1647:3;1637:13;;:93;;-1:-1:-1;;;1637:93:12;;;1658:34;1637:93;-1:-1:-1;;;;;1621:109:12;;-1:-1:-1;1755:3:12;1745:13;;:18;1741:83;;1782:34;1774:42;1821:3;1773:51;1741:83;1849:3;1839:13;;:18;1835:83;;1876:34;1868:42;1915:3;1867:51;1835:83;1943:3;1933:13;;:18;1929:83;;1970:34;1962:42;2009:3;1961:51;1929:83;2037:4;2027:14;;:19;2023:84;;2065:34;2057:42;2104:3;2056:51;2023:84;2132:4;2122:14;;:19;2118:84;;2160:34;2152:42;2199:3;2151:51;2118:84;2227:4;2217:14;;:19;2213:84;;2255:34;2247:42;2294:3;2246:51;2213:84;2322:4;2312:14;;:19;2308:84;;2350:34;2342:42;2389:3;2341:51;2308:84;2417:5;2407:15;;:20;2403:85;;2446:34;2438:42;2485:3;2437:51;2403:85;2513:5;2503:15;;:20;2499:85;;2542:34;2534:42;2581:3;2533:51;2499:85;2609:5;2599:15;;:20;2595:85;;2638:34;2630:42;2677:3;2629:51;2595:85;2705:5;2695:15;;:20;2691:85;;2734:34;2726:42;2773:3;2725:51;2691:85;2801:6;2791:16;;:21;2787:86;;2831:34;2823:42;2870:3;2822:51;2787:86;2898:6;2888:16;;:21;2884:86;;2928:34;2920:42;2967:3;2919:51;2884:86;2995:6;2985:16;;:21;2981:86;;3025:34;3017:42;3064:3;3016:51;2981:86;3092:6;3082:16;;:21;3078:86;;3122:34;3114:42;3161:3;3113:51;3078:86;3189:7;3179:17;;:22;3175:86;;3220:33;3212:41;3258:3;3211:50;3175:86;3286:7;3276:17;;:22;3272:85;;3317:32;3309:40;3354:3;3308:49;3272:85;3382:7;3372:17;;:22;3368:83;;3413:30;3405:38;3448:3;3404:47;3368:83;3476:7;3466:17;;:22;3462:78;;3507:25;3499:33;3537:3;3498:42;3462:78;3564:1;3557:4;:8;;;3553:47;;;3595:5;-1:-1:-1;;3575:25:12;;;;;;3567:33;;3553:47;-1:-1:-1;;;3955:5:12;:17;:22;:30;;3984:1;3955:30;;;3980:1;3955:30;3938:48;;3948:2;3939:5;:11;;3938:48;3915:72;;1384:2611;;;;;:::o;3019:920:35:-;3228:17;3278:13;-1:-1:-1;;;;;3262:29:35;:13;-1:-1:-1;;;;;3262:29:35;;3258:98;;;3327:13;;3342;3258:98;3389:13;-1:-1:-1;;;;;3373:29:35;:12;-1:-1:-1;;;;;3373:29:35;;3369:563;;3431:61;3454:13;3469;3484:7;3431:22;:61::i;:::-;3419:73;;3369:563;;;3529:13;-1:-1:-1;;;;;3514:28:35;:12;-1:-1:-1;;;;;3514:28:35;;3510:422;;;3559:18;3580:60;3603:12;3617:13;3632:7;3580:22;:60::i;:::-;3559:81;;3655:18;3676:60;3699:13;3714:12;3728:7;3676:22;:60::i;:::-;3655:81;;3778:10;-1:-1:-1;;;;;3765:23:35;:10;-1:-1:-1;;;;;3765:23:35;;:49;;3804:10;3765:49;;;3791:10;3765:49;3753:61;;3510:422;;;;;3859:61;3882:13;3897;3912:7;3859:22;:61::i;:::-;3847:73;;3510:422;3019:920;;;;;;;:::o;8357:135:54:-;8427:4;8450:35;8458:3;8478:5;8450:7;:35::i;8060:129::-;8127:4;8150:32;8155:3;8175:5;8150:4;:32::i;7019:183:53:-;7108:4;7131:64;7136:3;7156;-1:-1:-1;;;;;7170:23:53;;7131:4;:64::i;4444:201:54:-;4538:18;;4511:7;;4538:26;-1:-1:-1;4530:73:54;;;;-1:-1:-1;;;4530:73:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4620:3;:11;;4632:5;4620:18;;;;;;;;;;;;;;;;4613:25;;4444:201;;;;:::o;7361:140:53:-;7438:4;7461:33;7469:3;7489;7461:7;:33::i;4934:274::-;5037:19;;5001:7;;;;5037:27;-1:-1:-1;5029:74:53;;;;-1:-1:-1;;;5029:74:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;6395:315::-;6489:7;6527:17;;;:12;;;:17;;;;;;6577:12;6562:13;6554:36;;;;-1:-1:-1;;;6554:36:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6643:3;:12;;6667:1;6656:8;:12;6643:26;;;;;;;;;;;;;;;;;;:33;;;6636:40;;;6395:315;;;;;:::o;15509:589:46:-;15629:4;15654:15;:2;-1:-1:-1;;;;;15654:13:46;;:15::i;:::-;15649:58;;-1:-1:-1;15692:4:46;15685:11;;15649:58;15716:23;15742:246;-1:-1:-1;;;15853:12:46;:10;:12::i;:::-;15879:4;15897:7;15918:5;15758:175;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;;;;;;15742:246;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15742:15:46;;;:246;:15;:246::i;:::-;15716:272;;15998:13;16025:10;16014:32;;;;;;;;;;;;;;;-1:-1:-1;16014:32:46;-1:-1:-1;;;;;;16064:26:46;-1:-1:-1;;;16064:26:46;;-1:-1:-1;;;15509:589:46;;;;;;:::o;4270:123:53:-;4341:4;4364:17;;;:12;;;;;:17;;;;;;:22;;;4270:123::o;1089:483:35:-;1241:17;1291:13;-1:-1:-1;;;;;1275:29:35;:13;-1:-1:-1;;;;;1275:29:35;;1271:98;;;1340:13;;1355;1271:98;1380:20;1403:63;1419:13;-1:-1:-1;;;;;1403:63:35;1434:13;-1:-1:-1;;;;;1403:63:35;-1:-1:-1;;;1403:15:35;:63::i;:::-;1380:86;;1484:80;1494:69;1510:7;1519:12;1549:13;1533;:29;-1:-1:-1;;;;;1494:69:35;:15;:69::i;:::-;1484:9;:80::i;2019:390::-;2171:17;2221:13;-1:-1:-1;;;;;2205:29:35;:13;-1:-1:-1;;;;;2205:29:35;;2201:98;;;2270:13;;2285;2201:98;2317:84;2327:73;2343:7;-1:-1:-1;;;2386:13:35;2370;:29;-1:-1:-1;;;;;2327:73:35;:15;:73::i;2204:1512:54:-;2270:4;2407:19;;;:12;;;:19;;;;;;2441:15;;2437:1273;;2870:18;;-1:-1:-1;;2822:14:54;;;;2870:22;;;;2798:21;;2870:3;;:22;;3152;;;;;;;;;;;;;;3132:42;;3295:9;3266:3;:11;;3278:13;3266:26;;;;;;;;;;;;;;;;;;;:38;;;;3370:23;;;3412:1;3370:12;;;:23;;;;;;3396:17;;;3370:43;;3519:17;;3370:3;;3519:17;;;;;;;;;;;;;;;;;;;;;;3611:3;:12;;:19;3624:5;3611:19;;;;;;;;;;;3604:26;;;3652:4;3645:11;;;;;;;;2437:1273;3694:5;3687:12;;;;;1632:404;1695:4;1716:21;1726:3;1731:5;1716:9;:21::i;:::-;1711:319;;-1:-1:-1;1753:23:54;;;;;;;;:11;:23;;;;;;;;;;;;;1933:18;;1911:19;;;:12;;;:19;;;;;;:40;;;;1965:11;;1711:319;-1:-1:-1;2014:5:54;2007:12;;1828:678:53;1904:4;2037:17;;;:12;;;:17;;;;;;2069:13;2065:435;;-1:-1:-1;;2153:38:53;;;;;;;;;;;;;;;;;;2135:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;2347:19;;2327:17;;;:12;;;:17;;;;;;;:39;2380:11;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;;;2674:1517;2738:4;2871:17;;;:12;;;:17;;;;;;2903:13;;2899:1286;;3329:19;;-1:-1:-1;;3283:12:53;;;;3329:23;;;;3259:21;;3329:3;;:23;;3621;;;;;;;;;;;;;;;;3592:52;;3766:9;3736:3;:12;;3749:13;3736:27;;;;;;;;;;;;;;;;:39;;:27;;;;;:39;;;;;;;;;;;;;;;3854:14;;3841:28;;:12;;;:28;;;;;3872:17;;;3841:48;;3995:18;;3841:3;;3995:18;;;;;;;;;;;;;;-1:-1:-1;;3995:18:53;;;;;;;;;;;;;;;;;;;;;4088:17;;;:12;;;:17;;;;;;4081:24;;;;3995:18;-1:-1:-1;4120:11:53;;-1:-1:-1;;;;4120:11:53;3573:193:51;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3707:21;:52::i;501:112:35:-;603:1;-1:-1:-1;;;;;583:21:35;;;;575:30;;;;;4600:523:51;4727:12;4784:5;4759:21;:30;;4751:81;;;;-1:-1:-1;;;4751:81:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4850:18;4861:6;4850:10;:18::i;:::-;4842:60;;;;;-1:-1:-1;;;4842:60:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:12;4987:23;5014:6;-1:-1:-1;;;;;5014:11:51;5034:5;5042:4;5014:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5014:33:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:51:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:51;7249:17;;7222:580;7367:17;;:21;7363:429;;7625:10;7619:17;7685:15;7672:10;7668:2;7664:19;7657:44;7574:145;7757:20;;-1:-1:-1;;;7757:20:51;;;;;;;;;;;;;;;;;7764:12;;7757:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:138:56:-;84:20;;113:33;84:20;113:33;:::i;157:165::-;237:13;;290:6;279:18;;269:29;;259:2;;312:1;309;302:12;327:163;396:20;;456:8;445:20;;435:31;;425:2;;480:1;477;470:12;495:259;;607:2;595:9;586:7;582:23;578:32;575:2;;;628:6;620;613:22;575:2;672:9;659:23;691:33;718:5;691:33;:::i;759:263::-;;882:2;870:9;861:7;857:23;853:32;850:2;;;903:6;895;888:22;850:2;940:9;934:16;959:33;986:5;959:33;:::i;1027:402::-;;;1156:2;1144:9;1135:7;1131:23;1127:32;1124:2;;;1177:6;1169;1162:22;1124:2;1221:9;1208:23;1240:33;1267:5;1240:33;:::i;:::-;1292:5;-1:-1:-1;1349:2:56;1334:18;;1321:32;1362:35;1321:32;1362:35;:::i;:::-;1416:7;1406:17;;;1114:315;;;;;:::o;1434:620::-;;;;;1596:3;1584:9;1575:7;1571:23;1567:33;1564:2;;;1618:6;1610;1603:22;1564:2;1662:9;1649:23;1681:33;1708:5;1681:33;:::i;:::-;1733:5;-1:-1:-1;1790:2:56;1775:18;;1762:32;1803:35;1762:32;1803:35;:::i;:::-;1857:7;-1:-1:-1;1883:39:56;1918:2;1903:18;;1883:39;:::i;:::-;1873:49;;1974:2;1963:9;1959:18;1946:32;1987:35;2014:7;1987:35;:::i;:::-;1554:500;;;;-1:-1:-1;1554:500:56;;-1:-1:-1;;1554:500:56:o;2059:470::-;;;;2205:2;2193:9;2184:7;2180:23;2176:32;2173:2;;;2226:6;2218;2211:22;2173:2;2270:9;2257:23;2289:33;2316:5;2289:33;:::i;:::-;2341:5;-1:-1:-1;2398:2:56;2383:18;;2370:32;2411:35;2370:32;2411:35;:::i;:::-;2163:366;;2465:7;;-1:-1:-1;;;2519:2:56;2504:18;;;;2491:32;;2163:366::o;2534:1066::-;;;;;2706:3;2694:9;2685:7;2681:23;2677:33;2674:2;;;2728:6;2720;2713:22;2674:2;2772:9;2759:23;2791:33;2818:5;2791:33;:::i;:::-;2843:5;-1:-1:-1;2900:2:56;2885:18;;2872:32;2913:35;2872:32;2913:35;:::i;:::-;2967:7;-1:-1:-1;3021:2:56;3006:18;;2993:32;;-1:-1:-1;3076:2:56;3061:18;;3048:32;-1:-1:-1;;;;;3092:30:56;;3089:2;;;3140:6;3132;3125:22;3089:2;3168:22;;3221:4;3213:13;;3209:27;-1:-1:-1;3199:2:56;;3255:6;3247;3240:22;3199:2;3296;3283:16;3321:49;3336:33;3366:2;3336:33;:::i;:::-;3321:49;:::i;:::-;3393:2;3386:5;3379:17;3433:7;3428:2;3423;3419;3415:11;3411:20;3408:33;3405:2;;;3459:6;3451;3444:22;3405:2;3519;3514;3510;3506:11;3501:2;3494:5;3490:14;3477:45;3542:14;;;3558:2;3538:23;3531:39;;;;-1:-1:-1;2664:936:56;;;;-1:-1:-1;2664:936:56;-1:-1:-1;2664:936:56:o;3605:396::-;;;3731:2;3719:9;3710:7;3706:23;3702:32;3699:2;;;3752:6;3744;3737:22;3699:2;3796:9;3783:23;3815:33;3842:5;3815:33;:::i;:::-;3867:5;-1:-1:-1;3924:2:56;3909:18;;3896:32;3937;3896;3937;:::i;4006:327::-;;;4135:2;4123:9;4114:7;4110:23;4106:32;4103:2;;;4156:6;4148;4141:22;4103:2;4200:9;4187:23;4219:33;4246:5;4219:33;:::i;:::-;4271:5;4323:2;4308:18;;;;4295:32;;-1:-1:-1;;;4093:240:56:o;4338:470::-;;;;4484:2;4472:9;4463:7;4459:23;4455:32;4452:2;;;4505:6;4497;4490:22;4452:2;4549:9;4536:23;4568:33;4595:5;4568:33;:::i;:::-;4620:5;-1:-1:-1;4672:2:56;4657:18;;4644:32;;-1:-1:-1;4728:2:56;4713:18;;4700:32;4741:35;4700:32;4741:35;:::i;:::-;4795:7;4785:17;;;4442:366;;;;;:::o;4813:673::-;;;;;;;5008:3;4996:9;4987:7;4983:23;4979:33;4976:2;;;5030:6;5022;5015:22;4976:2;5074:9;5061:23;5093:33;5120:5;5093:33;:::i;:::-;5145:5;-1:-1:-1;5197:2:56;5182:18;;5169:32;;-1:-1:-1;5248:2:56;5233:18;;5220:32;;-1:-1:-1;5304:2:56;5289:18;;5276:32;5317:33;5276:32;5317:33;:::i;:::-;4966:520;;;;-1:-1:-1;4966:520:56;;5423:3;5408:19;;5395:33;;5475:3;5460:19;;;5447:33;;-1:-1:-1;4966:520:56;-1:-1:-1;;4966:520:56:o;5491:677::-;;;5649:2;5637:9;5628:7;5624:23;5620:32;5617:2;;;5670:6;5662;5655:22;5617:2;5715:9;5702:23;-1:-1:-1;;;;;5785:2:56;5777:6;5774:14;5771:2;;;5806:6;5798;5791:22;5771:2;5849:6;5838:9;5834:22;5824:32;;5894:7;5887:4;5883:2;5879:13;5875:27;5865:2;;5921:6;5913;5906:22;5865:2;5966;5953:16;5992:2;5984:6;5981:14;5978:2;;;6013:6;6005;5998:22;5978:2;6072:7;6067:2;6061;6053:6;6049:15;6045:2;6041:24;6037:33;6034:46;6031:2;;;6098:6;6090;6083:22;6031:2;6134;6126:11;;;;;6156:6;;-1:-1:-1;5607:561:56;;-1:-1:-1;;;;5607:561:56:o;6173:306::-;;6284:2;6272:9;6263:7;6259:23;6255:32;6252:2;;;6305:6;6297;6290:22;6252:2;6336:23;;-1:-1:-1;;;;;;6388:32:56;;6378:43;;6368:2;;6440:6;6432;6425:22;6484:255;;6594:2;6582:9;6573:7;6569:23;6565:32;6562:2;;;6615:6;6607;6600:22;6562:2;6659:9;6646:23;6678:31;6703:5;6678:31;:::i;6744:794::-;;;;;6915:3;6903:9;6894:7;6890:23;6886:33;6883:2;;;6937:6;6929;6922:22;6883:2;6974:9;6968:16;7027:5;7024:1;7013:20;7006:5;7003:31;6993:2;;7053:6;7045;7038:22;6993:2;7131;7116:18;;7110:25;7081:5;;-1:-1:-1;7144:35:56;7110:25;7144:35;:::i;:::-;7250:2;7235:18;;7229:25;7198:7;;-1:-1:-1;7298:10:56;7285:24;;7273:37;;7263:2;;7329:6;7321;7314:22;7263:2;7409;7394:18;;7388:25;7357:7;;-1:-1:-1;;;;;;7444:33:56;;7432:46;;7422:2;;7497:6;7489;7482:22;7543:676;;7676:2;7664:9;7655:7;7651:23;7647:32;7644:2;;;7697:6;7689;7682:22;7644:2;7735:9;7729:16;-1:-1:-1;;;;;7760:6:56;7757:30;7754:2;;;7805:6;7797;7790:22;7754:2;7833:22;;7886:4;7878:13;;7874:27;-1:-1:-1;7864:2:56;;7920:6;7912;7905:22;7864:2;7954;7948:9;7979:49;7994:33;8024:2;7994:33;:::i;7979:49::-;8051:2;8044:5;8037:17;8091:7;8086:2;8081;8077;8073:11;8069:20;8066:33;8063:2;;;8117:6;8109;8102:22;8063:2;8135:54;8186:2;8181;8174:5;8170:14;8165:2;8161;8157:11;8135:54;:::i;8224:210::-;;8369:3;8357:9;8348:7;8344:23;8340:33;8337:2;;;8391:6;8383;8376:22;8337:2;-1:-1:-1;8419:9:56;8327:107;-1:-1:-1;8327:107:56:o;8439:220::-;;8594:3;8582:9;8573:7;8569:23;8565:33;8562:2;;;8616:6;8608;8601:22;8664:220;;8819:3;8807:9;8798:7;8794:23;8790:33;8787:2;;;8841:6;8833;8826:22;8889:1112;;9026:9;9017:7;9013:23;9056:3;9052:2;9048:12;9045:2;;;9078:6;9070;9063:22;9045:2;9116:4;9110:11;9160:4;9152:6;9148:17;-1:-1:-1;;;;;9252:6:56;9240:10;9237:22;9232:2;9220:10;9217:18;9214:46;9211:2;;;9263:9;9211:2;9296:10;9290:4;9283:24;9327:4;9323:2;9319:13;9316:2;;;9350:6;9342;9335:22;9316:2;9400:3;9392:6;9388:16;9368:36;;9458:10;9444:12;9441:28;9436:2;9422:12;9419:20;9416:54;9413:2;;;9473:9;9413:2;;9506:12;9500:4;9493:26;9554:9;9541:23;9528:36;;9573:33;9600:5;9573:33;:::i;:::-;9615:25;;;9692:2;9677:18;;9664:32;;9705:35;9664:32;9705:35;:::i;:::-;9775:7;9768:4;9760:6;9756:17;9749:34;9817:41;9852:4;9841:9;9837:20;9817:41;:::i;:::-;9811:3;9799:16;;9792:67;9868:26;;9927:42;9963:4;9948:20;;9927:42;:::i;:::-;9922:2;9910:15;;9903:67;9914:6;8993:1008;-1:-1:-1;;;;8993:1008:56:o;10006:207::-;;10148:3;10136:9;10127:7;10123:23;10119:33;10116:2;;;10170:6;10162;10155:22;10218:259;;10330:2;10318:9;10309:7;10305:23;10301:32;10298:2;;;10351:6;10343;10336:22;10298:2;10395:9;10382:23;10414:33;10441:5;10414:33;:::i;10482:399::-;;;10622:2;10610:9;10601:7;10597:23;10593:32;10590:2;;;10643:6;10635;10628:22;10590:2;10680:9;10674:16;10699:33;10726:5;10699:33;:::i;:::-;10801:2;10786:18;;10780:25;10751:5;;-1:-1:-1;10814:35:56;10780:25;10814:35;:::i;10886:659::-;;;;;;11077:3;11065:9;11056:7;11052:23;11048:33;11045:2;;;11099:6;11091;11084:22;11045:2;11136:9;11130:16;11155:33;11182:5;11155:33;:::i;:::-;11207:5;11197:15;;;11252:2;11241:9;11237:18;11231:25;11221:35;;11296:2;11285:9;11281:18;11275:25;11265:35;;11345:2;11334:9;11330:18;11324:25;11358:35;11385:7;11358:35;:::i;:::-;11464:3;11449:19;;11443:26;11412:7;;-1:-1:-1;11478:35:56;11443:26;11478:35;:::i;:::-;11532:7;11522:17;;;11035:510;;;;;;;;:::o;11550:916::-;;;;;;;;11765:3;11753:9;11744:7;11740:23;11736:33;11733:2;;;11787:6;11779;11772:22;11733:2;11824:9;11818:16;11843:33;11870:5;11843:33;:::i;:::-;11945:2;11930:18;;11924:25;11895:5;;-1:-1:-1;11958:33:56;11924:25;11958:33;:::i;:::-;12010:7;-1:-1:-1;12036:50:56;12082:2;12067:18;;12036:50;:::i;:::-;12026:60;;12105:50;12151:2;12140:9;12136:18;12105:50;:::i;:::-;12095:60;;12174:51;12220:3;12209:9;12205:19;12174:51;:::i;:::-;12164:61;;12270:3;12259:9;12255:19;12249:26;12284:33;12309:7;12284:33;:::i;:::-;12388:3;12373:19;;12367:26;12336:7;;-1:-1:-1;12402:32:56;12367:26;12402:32;:::i;:::-;12453:7;12443:17;;;11723:743;;;;;;;;;;:::o;12471:196::-;;12582:2;12570:9;12561:7;12557:23;12553:32;12550:2;;;12603:6;12595;12588:22;12550:2;12631:30;12651:9;12631:30;:::i;12672:190::-;;12784:2;12772:9;12763:7;12759:23;12755:32;12752:2;;;12805:6;12797;12790:22;12752:2;-1:-1:-1;12833:23:56;;12742:120;-1:-1:-1;12742:120:56:o;12867:327::-;;;12996:2;12984:9;12975:7;12971:23;12967:32;12964:2;;;13017:6;13009;13002:22;12964:2;13058:9;13045:23;13035:33;;13118:2;13107:9;13103:18;13090:32;13131:33;13158:5;13131:33;:::i;13199:255::-;;;13339:2;13327:9;13318:7;13314:23;13310:32;13307:2;;;13360:6;13352;13345:22;13307:2;-1:-1:-1;;13388:16:56;;13444:2;13429:18;;;13423:25;13388:16;;13423:25;;-1:-1:-1;13297:157:56:o;13459:777::-;;;;;13624:2;13612:9;13603:7;13599:23;13595:32;13592:2;;;13645:6;13637;13630:22;13592:2;13686:9;13673:23;13663:33;;13743:2;13732:9;13728:18;13715:32;13705:42;;13798:2;13787:9;13783:18;13770:32;-1:-1:-1;;;;;13862:2:56;13854:6;13851:14;13848:2;;;13883:6;13875;13868:22;13848:2;13926:6;13915:9;13911:22;13901:32;;13971:7;13964:4;13960:2;13956:13;13952:27;13942:2;;13998:6;13990;13983:22;13942:2;14043;14030:16;14069:2;14061:6;14058:14;14055:2;;;14090:6;14082;14075:22;14055:2;14140:7;14135:2;14126:6;14122:2;14118:15;14114:24;14111:37;14108:2;;;14166:6;14158;14151:22;14108:2;13582:654;;;;-1:-1:-1;;14202:2:56;14194:11;;-1:-1:-1;;;13582:654:56:o;14241:259::-;;14322:5;14316:12;14349:6;14344:3;14337:19;14365:63;14421:6;14414:4;14409:3;14405:14;14398:4;14391:5;14387:16;14365:63;:::i;:::-;14482:2;14461:15;-1:-1:-1;;14457:29:56;14448:39;;;;14489:4;14444:50;;14292:208;-1:-1:-1;;14292:208:56:o;14505:93::-;14582:1;14571:20;14559:33;;14549:49::o;14603:106::-;-1:-1:-1;;;;;14671:31:56;14659:44;;14649:60::o;14714:273::-;;14897:6;14889;14884:3;14871:33;14923:16;;14948:15;;;14923:16;14861:126;-1:-1:-1;14861:126:56:o;14992:203::-;-1:-1:-1;;;;;15156:32:56;;;;15138:51;;15126:2;15111:18;;15093:102::o;15200:580::-;-1:-1:-1;;;;;15451:32:56;;15433:51;;15531:1;15520:21;;;15515:2;15500:18;;15493:49;15578:21;;;15573:2;15558:18;;15551:49;-1:-1:-1;;;;;15636:32:56;;15631:2;15616:18;;15609:60;15471:3;15656;15685:19;;15678:32;;;15200:580;;15727:47;;15754:19;;15746:6;15727:47;:::i;15785:567::-;-1:-1:-1;;;;;16054:32:56;;;;16036:51;;16134:1;16123:21;;;16118:2;16103:18;;16096:49;16181:21;;;;16176:2;16161:18;;16154:49;-1:-1:-1;;;;;16277:15:56;;;16272:2;16257:18;;16250:43;16330:15;16230:3;16309:19;;16302:44;16023:3;16008:19;;15990:362::o;16357:401::-;-1:-1:-1;;;;;16577:32:56;;;;16559:51;;-1:-1:-1;;;;;16684:15:56;;;16679:2;16664:18;;16657:43;16736:15;16731:2;16716:18;;16709:43;16547:2;16532:18;;16514:244::o;16763:634::-;-1:-1:-1;;;;;17102:15:56;;;17084:34;;17149:2;17134:18;;17127:34;;;;17192:2;17177:18;;17170:34;;;;17240:15;;17235:2;17220:18;;17213:43;17275:10;17322:15;;;17316:3;17301:19;;17294:44;17375:15;;;17064:3;17354:19;;17347:44;17033:3;17018:19;;17000:397::o;17402:806::-;;17591:2;17631;17620:9;17616:18;17661:2;17650:9;17643:21;17684:6;17719;17713:13;17750:6;17742;17735:22;17788:2;17777:9;17773:18;17766:25;;17851:2;17845;17837:6;17833:15;17822:9;17818:31;17814:40;17800:54;;17889:2;17881:6;17877:15;17910:4;17923:256;17937:6;17934:1;17931:13;17923:256;;;18030:2;18026:7;18014:9;18006:6;18002:22;17998:36;17993:3;17986:49;18058:41;18092:6;18083;18077:13;18058:41;:::i;:::-;18048:51;-1:-1:-1;18157:12:56;;;;18122:15;;;;17959:1;17952:9;17923:256;;;-1:-1:-1;18196:6:56;;17571:637;-1:-1:-1;;;;;;;17571:637:56:o;18213:187::-;18378:14;;18371:22;18353:41;;18341:2;18326:18;;18308:92::o;18405:177::-;18551:25;;;18539:2;18524:18;;18506:76::o;18587:309::-;-1:-1:-1;;;;;18814:32:56;;;;18796:51;;18878:2;18863:18;;18856:34;18784:2;18769:18;;18751:145::o;18901:270::-;19096:1;19085:21;;;19067:40;;19143:21;;19138:2;19123:18;;19116:49;19055:2;19040:18;;19022:149::o;19176:375::-;19407:1;19396:21;;;19378:40;;19454:21;;;;19449:2;19434:18;;19427:49;-1:-1:-1;;;;;19512:32:56;;;19507:2;19492:18;;19485:60;19366:2;19351:18;;19333:218::o;19928:221::-;;20077:2;20066:9;20059:21;20097:46;20139:2;20128:9;20124:18;20116:6;20097:46;:::i;20154:336::-;20356:2;20338:21;;;20395:2;20375:18;;;20368:30;-1:-1:-1;;;20429:2:56;20414:18;;20407:42;20481:2;20466:18;;20328:162::o;20495:349::-;20697:2;20679:21;;;20736:2;20716:18;;;20709:30;-1:-1:-1;;;20770:2:56;20755:18;;20748:55;20835:2;20820:18;;20669:175::o;20849:344::-;21051:2;21033:21;;;21090:2;21070:18;;;21063:30;-1:-1:-1;;;21124:2:56;21109:18;;21102:50;21184:2;21169:18;;21023:170::o;21198:340::-;21400:2;21382:21;;;21439:2;21419:18;;;21412:30;-1:-1:-1;;;21473:2:56;21458:18;;21451:46;21529:2;21514:18;;21372:166::o;21543:542::-;21768:13;;21850:9;;-1:-1:-1;;;;;21846:18:56;;;21828:37;;21921:4;21913:13;;;21907:20;21903:29;;21881:20;;;21874:59;21989:4;21981:13;;;21975:20;21997:8;21971:35;21949:20;;;21942:65;;;;22055:17;;22049:24;22045:33;;;22038:4;22023:20;;22016:63;21745:3;21730:19;;21712:373::o;22090:345::-;-1:-1:-1;;;;;22310:32:56;;;;22292:51;;22374:2;22359:18;;22352:34;;;;22417:2;22402:18;;22395:34;22280:2;22265:18;;22247:188::o;22440:460::-;-1:-1:-1;;;;;22685:32:56;;;;22667:51;;22737:10;22783:15;;;22778:2;22763:18;;22756:43;22835:15;;22830:2;22815:18;;22808:43;22882:2;22867:18;;22860:34;22654:3;22639:19;;22621:279::o;23087:417::-;23318:25;;;-1:-1:-1;;;;;23379:32:56;;;;23374:2;23359:18;;23352:60;23443:2;23428:18;;23421:34;23486:2;23471:18;;23464:34;23305:3;23290:19;;23272:232::o;23509:248::-;23683:25;;;23739:2;23724:18;;23717:34;23671:2;23656:18;;23638:119::o;23762:1133::-;-1:-1:-1;;;;;24225:31:56;;24207:50;;-1:-1:-1;;;;;24331:15:56;;;24326:2;24311:18;;24304:43;24383:15;;;24378:2;24363:18;;24356:43;24435:15;;24245:2;24415:18;;24408:43;24500:8;24488:21;;24482:3;24467:19;;24460:50;24558:1;24547:21;;;24284:3;24526:19;;24519:50;24194:3;24179:19;;24578:47;24620:3;24605:19;;24597:6;24578:47;:::i;:::-;24634:49;24678:3;24667:9;24663:19;24655:6;24634:49;:::i;:::-;24720:6;24714:3;24703:9;24699:19;24692:35;24764:6;24758:3;24747:9;24743:19;24736:35;24780:50;24825:3;24814:9;24810:19;24801:7;24780:50;:::i;:::-;24839;24884:3;24873:9;24869:19;24860:7;24839:50;:::i;:::-;24161:734;;;;;;;;;;;;;;;:::o;24900:533::-;;;25043:11;25030:25;25137:2;25133:7;25122:8;25106:14;25102:29;25098:43;25078:18;25074:68;25064:2;;25159:4;25153;25146:18;25064:2;25189:33;;25241:20;;;-1:-1:-1;;;;;;25273:30:56;;25270:2;;;25319:4;25313;25306:18;25270:2;25355:4;25343:17;;-1:-1:-1;25386:14:56;25382:27;;;25372:38;;25369:2;;;25423:1;25420;25413:12;25438:242;25508:2;25502:9;25538:17;;;-1:-1:-1;;;;;25570:34:56;;25606:22;;;25567:62;25564:2;;;25632:9;25564:2;25659;25652:22;25482:198;;-1:-1:-1;25482:198:56:o;25685:181::-;;-1:-1:-1;;;;;25760:6:56;25757:30;25754:2;;;25790:9;25754:2;-1:-1:-1;25849:2:56;25826:17;-1:-1:-1;;25822:31:56;25855:4;25818:42;;25744:122::o;25871:258::-;25943:1;25953:113;25967:6;25964:1;25961:13;25953:113;;;26043:11;;;26037:18;26024:11;;;26017:39;25989:2;25982:10;25953:113;;;26084:6;26081:1;26078:13;26075:2;;;-1:-1:-1;;26119:1:56;26101:16;;26094:27;25924:205::o;26134:133::-;-1:-1:-1;;;;;26211:31:56;;26201:42;;26191:2;;26257:1;26254;26247:12;26272:120;26360:5;26353:13;26346:21;26339:5;26336:32;26326:2;;26382:1;26379;26372:12;26397:120;26486:5;26483:1;26472:20;26465:5;26462:31;26452:2;;26507:1;26504;26497:12;26522:133;-1:-1:-1;;;;;26599:31:56;;26589:42;;26579:2;;26645:1;26642;26635:12;26660:116;26746:4;26739:5;26735:16;26728:5;26725:27;26715:2;;26766:1;26763;26756:12"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","WETH9()":"4aa4a4fc","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","burn(uint256)":"42966c68","claimReward(uint256,address)":"e70eb392","collect((uint256,address,uint128,uint128))":"fc6f7865","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))":"0c49ccbe","elixirMintCallback(uint256,uint256,bytes)":"1507a8f4","factory()":"c45a0155","forgoReward(uint256)":"29048e7b","getApproved(uint256)":"081812fc","increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))":"219f5d17","isApprovedForAll(address,address)":"e985e9c5","mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))":"88316456","multicall(bytes[])":"ac9650d8","name()":"06fdde03","ownerOf(uint256)":"6352211e","permit(address,uint256,uint256,uint8,bytes32,bytes32)":"7ac2ff7b","positionReward(uint256)":"75e39cec","positions(uint256)":"99fbab88","refundETH()":"12210e8a","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","sweepToken(address,uint256,address)":"df2ab5bb","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","unwrapWETH9(uint256,address)":"49404b7c","updateRewardManager(address)":"050eb2eb","updateTokenDescriptor(address)":"97f12a83"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH9\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenDescriptor_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_elixirRewarder_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ClaimReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"DecreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"IncreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Max\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Max\",\"type\":\"uint128\"}],\"internalType\":\"struct INonfungiblePositionManager.CollectParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.DecreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"decreaseLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Owed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Owed\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"elixirMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"forgoReward\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.IncreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"increaseLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.MintParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positionReward\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityInsideLastX64\",\"type\":\"uint192\"},{\"internalType\":\"uint32\",\"name\":\"rewardLastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"rewardLastCollected\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"rewardOwed\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"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\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_elixirRewarder_\",\"type\":\"address\"}],\"name\":\"updateRewardManager\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenDescriptor_\",\"type\":\"address\"}],\"name\":\"updateTokenDescriptor\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"The domain seperator used in encoding of permit signature\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"burn(uint256)\":{\"params\":{\"tokenId\":\"The ID of the token that is being burned\"}},\"claimReward(uint256,address)\":{\"params\":{\"tokenId\":\"The ID of the NFT for which reward is being collected, recipient The account that should receive the reward tokens\"}},\"collect((uint256,address,uint128,uint128))\":{\"params\":{\"params\":\"tokenId The ID of the NFT for which tokens are being collected, recipient The account that should receive the tokens, amount0Max The maximum amount of token0 to collect, amount1Max The maximum amount of token1 to collect\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the elixir pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}},\"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))\":{\"params\":{\"params\":\"tokenId The ID of the token for which liquidity is being decreased, amount The amount by which liquidity will be decreased, amount0Min The minimum amount of token0 that should be accounted for the burned liquidity, amount1Min The minimum amount of token1 that should be accounted for the burned liquidity, deadline The time by which the transaction must be included to effect the change\"},\"returns\":{\"amount0\":\"The amount of token0 accounted to the position's tokens owed\",\"amount1\":\"The amount of token1 accounted to the position's tokens owed\"}},\"elixirMintCallback(uint256,uint256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the minted liquidity. The caller of this method must be checked to be a ElixirPool deployed by the canonical ElixirFactory.\",\"params\":{\"amount0Owed\":\"The amount of token0 due to the pool for the minted liquidity\",\"amount1Owed\":\"The amount of token1 due to the pool for the minted liquidity\",\"data\":\"Any data passed through by the caller via the IElixirPoolActions#mint call\"}},\"forgoReward(uint256)\":{\"details\":\"Because of (1) `burn` prevents burning the tokenId if there is any reward debt and (2) `claimReward` can be DOSed by an improper reward manager implementation or a reward token, we have this separate function to forgo rewards if user really needs to burn the tokenId and does not care about the rewards\",\"params\":{\"tokenId\":\"The ID of the NFT to forgo the rewards\"}},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"params\":\"tokenId The ID of the token for which liquidity is being increased, amount0Desired The desired amount of token0 to be spent, amount1Desired The desired amount of token1 to be spent, amount0Min The minimum amount of token0 to spend, which serves as a slippage check, amount1Min The minimum amount of token1 to spend, which serves as a slippage check, deadline The time by which the transaction must be included to effect the change\"},\"returns\":{\"amount0\":\"The amount of token0 to acheive resulting liquidity\",\"amount1\":\"The amount of token1 to acheive resulting liquidity\",\"liquidity\":\"The new liquidity amount as a result of the increase\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))\":{\"details\":\"Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized a method does not exist, i.e. the pool is assumed to be initialized.\",\"params\":{\"params\":\"The params necessary to mint a position, encoded as `MintParams` in calldata\"},\"returns\":{\"amount0\":\"The amount of token0\",\"amount1\":\"The amount of token1\",\"liquidity\":\"The amount of liquidity for this position\",\"tokenId\":\"The ID of the token that represents the minted position\"}},\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"positionReward(uint256)\":{\"details\":\"Throws if the token ID is not valid.\",\"params\":{\"tokenId\":\"The ID of the token that represents the position\"},\"returns\":{\"rewardLastCollected\":\"The timestamp of the last time user claimed the rewards of the position\",\"rewardLastUpdated\":\"The timestamp of the last operation that updated rewardPerLiquidityInsideLastX64\",\"rewardOwed\":\"The uncollected amount of reward token owed to the position as of the last computation\",\"rewardPerLiquidityInsideLastX64\":\"The snapshot of liquidity inside the ticks at last operation\"}},\"positions(uint256)\":{\"details\":\"Throws if the token ID is not valid.\",\"params\":{\"tokenId\":\"The ID of the token that represents the position\"},\"returns\":{\"fee\":\"The fee associated with the pool\",\"feeGrowthInside0LastX128\":\"The fee growth of token0 as of the last action on the individual position\",\"feeGrowthInside1LastX128\":\"The fee growth of token1 as of the last action on the individual position\",\"liquidity\":\"The liquidity of the position\",\"nonce\":\"The nonce for permits\",\"operator\":\"The address that is approved for spending\",\"tickLower\":\"The lower end of the tick range for the position\",\"tickUpper\":\"The higher end of the tick range for the position\",\"token0\":\"The address of the token0 for a specific pool\",\"token1\":\"The address of the token1 for a specific pool\",\"tokensOwed0\":\"The uncollected amount of token0 owed to the position as of the last computation\",\"tokensOwed1\":\"The uncollected amount of token1 owed to the position as of the last computation\"}},\"refundETH()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}}},\"stateVariables\":{\"_elixirRewarder\":{\"details\":\"The address that will send rewards to the user based on the amount in `claimReward` function\"},\"_nextId\":{\"details\":\"The ID of the next token that will be minted. Skips 0\"},\"_nextPoolId\":{\"details\":\"The ID of the next pool that is used for the first time. Skips 0\"},\"_poolIdToPoolKey\":{\"details\":\"Pool keys by pool ID, to save on SSTOREs for position data\"},\"_poolIds\":{\"details\":\"IDs of pools assigned by this contract\"},\"_positions\":{\"details\":\"The token ID position data\"},\"_tokenDescriptor\":{\"details\":\"The address of the token descriptor contract, which handles generating token URIs for position tokens\"}},\"title\":\"NFT positions\",\"version\":1},\"userdoc\":{\"events\":{\"ClaimReward(uint256,address)\":{\"notice\":\"Emitted when Elixir Rewarder is called and notified of the reward amount\"},\"Collect(uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when tokens are collected for a position NFT\"},\"DecreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is decreased for a position NFT\"},\"IncreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is increased for a position NFT\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The domain separator used in the permit signature\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The permit typehash used in the permit signature\"},\"burn(uint256)\":{\"notice\":\"Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens must be collected first.\"},\"claimReward(uint256,address)\":{\"notice\":\"Notifies rewards manager contract the amount of unclaimed rewards and then deletes the reward debt\"},\"collect((uint256,address,uint128,uint128))\":{\"notice\":\"Collects up to a maximum amount of fees owed to a specific position to the recipient\"},\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"},\"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))\":{\"notice\":\"Decreases the amount of liquidity in a position and accounts it to the position\"},\"elixirMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IElixirPool#mint.\"},\"forgoReward(uint256)\":{\"notice\":\"Deletes reward debt of the token\"},\"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`\"},\"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))\":{\"notice\":\"Creates a new position wrapped in a NFT\"},\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"},\"positionReward(uint256)\":{\"notice\":\"Returns the position reward information associated with a given token ID.\"},\"positions(uint256)\":{\"notice\":\"Returns the position information associated with a given token ID.\"},\"refundETH()\":{\"notice\":\"Refunds any ETH balance held by this contract to the `msg.sender`\"},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"}},\"notice\":\"Wraps Elixir positions in the ERC721 non-fungible token interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/NonfungiblePositionManager.sol\":\"NonfungiblePositionManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":{\"keccak256\":\"0xc15f6629fbba11617680a3df47f3a590dcc8360b731788b2783c827c0ba3667a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ca98b55c62541f6685c762569b82b7c7a774398f406554520f874221153250f\",\"dweb:/ipfs/QmVCL8LwVC1LuarhTUVDYijd7W4cmaU5HjVJr5KgqLEdTe\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x558d30194d1a7f76eb5e983633625efd87b13ac0862792a69a305ce69003ab14\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89bca54921a13c0c863c055f18b3108582491fcc091d7188b58e05786c7f2b55\",\"dweb:/ipfs/QmfS5jM1WxULWx4FNB3CJC7KAWDpMpzRgFSGV5dp8RaCJr\"]},\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/NonfungiblePositionManager.sol\":{\"keccak256\":\"0x70dc6a4a2c9b12bc89ffc65faae667a658e20da94f7de47f1bbdecc1e0830245\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://935a16c45ec971f8aad9588dc8311169b919036541fd99d35ccf5a6d5b8a6e21\",\"dweb:/ipfs/QmeWQjH8hgwVmwGPkbQ571JJ9jfLYnimEn6cUrmGcQ4v3S\"]},\"contracts/elixir-periphery/base/ERC721Permit.sol\":{\"keccak256\":\"0xaf4d570ce580f104608e58a43b875f011de40bd7f4b96b14c420a6c8fb7e340c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://44cffafcac087f802d1cb9dc7e8489204e6ac6427ef2c68a543a1814d020a50a\",\"dweb:/ipfs/QmY4yqhsoinSAnRz116Mf6DEZuy74MsADmTkEDYehe1GUC\"]},\"contracts/elixir-periphery/base/LiquidityManagement.sol\":{\"keccak256\":\"0x25c325c22e4159295dcb237e07a343329d97b81cb1bebe8db09c5b75ca532604\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://838f93eacbaac6e37426a13c38a79046e5ec00d05f96e2d5da0910c3c6a583fe\",\"dweb:/ipfs/QmRBANsyLN8UUrqpe1ZbhmjXchuUDRmcYiBpb5nTFae2LJ\"]},\"contracts/elixir-periphery/base/Multicall.sol\":{\"keccak256\":\"0x3acc1acf20b9f218e68706d90f71b28d63fbca91b8a6b5445613e12d5c98aac6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c4414bcad1d2971596866d1dc95790954fac1ca9e772d9864785496348083839\",\"dweb:/ipfs/QmXeTSwz3446DddKoZSaY1vZ4mNsMvdF4zAeX4ANoMxhjT\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PeripheryPayments.sol\":{\"keccak256\":\"0x2fbe56fb8efa036258fb1eb651b1aa426c03e6483ec271f2fa1291d7d6030724\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0f5c8e95ec1e7ed22f7bbc35e18905ced294231e3c34b010448b1a841d466ba9\",\"dweb:/ipfs/QmZHnDNLBcMY8CFoa8dvrkdCHTXNNMsX6RcT1y1vHNEWzc\"]},\"contracts/elixir-periphery/base/PeripheryValidation.sol\":{\"keccak256\":\"0x439687955aa8549b51cabaeba892a28730e3f7756317dbc48fa562cd945fee5a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bc8a557487299a2b451f3e19d5d60f025898b7e302307af2a4fe4e3db3865b7a\",\"dweb:/ipfs/Qmb4WLpfFqguv1Jou3TfLNzErcZuLDnaqCWxnbuWjPewqJ\"]},\"contracts/elixir-periphery/base/PoolInitializer.sol\":{\"keccak256\":\"0x8fddad649086f0cb0dcd2fb7b03af5ee61c795efb358fbf70aad3a2ff5cb054a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f63312d984b53b27c8d8bb7753c8351415bea1ca55f0a2206f0f7fb43106c74e\",\"dweb:/ipfs/QmPbmpP9d1fXiCmztfvFBRuSxHbs93Aaq8MwrD7tPPHzqK\"]},\"contracts/elixir-periphery/base/SelfPermit.sol\":{\"keccak256\":\"0x93b6b25fba6b55918c18fd5d55ddb8a85336dcbb4773c3d7ab6d486960c9a665\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://fd2a053076cdd2a7fbd4ba498c9a493cd173cba860ead6139eb9e5c3fe60f067\",\"dweb:/ipfs/QmQwpbEx5aMbJAXeKGeA43qNGcCAYMz8ng1vwG5z4SCqv1\"]},\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]},\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0xf968ea5f5b29c4407b3337051b0fb2ea786b8a6e3f476d40cdde1cb9415b1735\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c92f629ddeb1a6bcec8b154e6619a492053a375db3a28b37bbcd49b35d4b171\",\"dweb:/ipfs/QmYRNQmFQ8gD3dkTQz85cEHwEkBuXW4F64HQB9MUUHHYse\"]},\"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol\":{\"keccak256\":\"0xad5664d7c455da6e2d56dc0d53b7d40354d83aac9312d367481b3428394ec8a3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3fa455da4a61b8b084edd5b27bfb1fd739eae48e1d1e72399841774a41d3163d\",\"dweb:/ipfs/QmXmeyfQXP4NPbZNanqquiaD9WZHUwvQThbezmCEFWnAQn\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]},\"contracts/elixir-periphery/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xd9b5ac195482b3cd25c2b1d2bf7f8be6f69b8352df17e23111556fc436590bb8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://dfd4975c3a69938f6fa6189fe5e4428260bd8aaa3e1f202c934edafe09d3d5d2\",\"dweb:/ipfs/QmaW1ZYYhnozmccckXLcg99ZoJCwoURdhaEPd26LmYvSZV\"]},\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x1495f5068f2b892668447889f379d87decb18c9369f4506df9d23edba9ccb4b7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6f322bead944abc1da0e75aba72c9e02b22f02c15712f49b212bb65869b406ca\",\"dweb:/ipfs/QmTZAqfg4EwuFAX61ZW4nA55sUbn3o2Qy3W55C3ghPUAWM\"]},\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xb2c39ec43afd1140b765a183017c52d02763f6ad1732cc8bd15b424cf60addf3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4991a734b128dee4821aaaca11279e2caa458128a436ee4b64ddd2483962223a\",\"dweb:/ipfs/QmbLtcN47cGXxbAua61GDp9PGz9bqru7UQPH2CJSgF1cjC\"]},\"contracts/elixir-periphery/libraries/ChainId.sol\":{\"keccak256\":\"0x6de0c960e4f3f024d7473c9e08ab84d3f2c7317117661eabd2ea0e9fdad3dfb2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e591724e2d5b0ca7c95e5e54ecf520487556a4045e770c4da9ee5930f48fd215\",\"dweb:/ipfs/QmW1HCuhWaBckYz8Kx1XmaPRn1nSuCMZLdGmaR6UJdQsLH\"]},\"contracts/elixir-periphery/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ed6cb25c14c41756086367d76eba826250da3a8621ace0c8657fce32e68fad7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06d92752a75efdd197ef39740e3e266bda1fbd0361c40bb9c014a608ade17b31\",\"dweb:/ipfs/QmRPhnmoNz9s2ZvJDomKtKMrYJXPvD6J6LGDtTQ8KeTDMY\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/libraries/PositionKey.sol\":{\"keccak256\":\"0x0a532dba371aed58c383f4e5b8d4ecc7de60eba8c14ef69e40b6e83401ccf74d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://992d7b2eb0bb01fdbd8169fea0f1c30938023267008cc8c7ab057487858a48b7\",\"dweb:/ipfs/QmZCxsgbiCsPmw4fk3ZRPcot9MSmWqndGP1TGMRsjztjcH\"]},\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"contracts/elixir-rewarder/interfaces/IElixirRewarder.sol\":{\"keccak256\":\"0x307c973fb851c774621d8922c55d848fbd00c636ba143726c2402895173dd179\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d6329299ae1b944825655112abc7480a6dbc542743f0820b1dbe5e85c8c23205\",\"dweb:/ipfs/QmTVB1d6NTDGrEyqqhGdpnPAUM5jDSqxft6ZiUZox8wZv5\"]},\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"openzeppelin-contracts-solc-0.7/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"openzeppelin-contracts-solc-0.7/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"openzeppelin-contracts-solc-0.7/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/ERC721Permit.sol":{"ERC721Permit":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","permit(address,uint256,uint256,uint8,bytes32,bytes32)":"7ac2ff7b","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"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\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"The domain seperator used in encoding of permit signature\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"stateVariables\":{\"PERMIT_TYPEHASH\":{\"details\":\"Value is equal to keccak256(\\\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\\\");\",\"return\":\"The typehash for the permit\"},\"nameHash\":{\"details\":\"The hash of the name used in the permit signature verification\"},\"versionHash\":{\"details\":\"The hash of the version string used in the permit signature verification\"}},\"title\":\"ERC721 with permit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The domain separator used in the permit signature\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The permit typehash used in the permit signature\"},\"constructor\":{\"notice\":\"Computes the nameHash and versionHash\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"}},\"notice\":\"Nonfungible tokens that support an approve via signature, i.e. permit\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/ERC721Permit.sol\":\"ERC721Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/ERC721Permit.sol\":{\"keccak256\":\"0xaf4d570ce580f104608e58a43b875f011de40bd7f4b96b14c420a6c8fb7e340c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://44cffafcac087f802d1cb9dc7e8489204e6ac6427ef2c68a543a1814d020a50a\",\"dweb:/ipfs/QmY4yqhsoinSAnRz116Mf6DEZuy74MsADmTkEDYehe1GUC\"]},\"contracts/elixir-periphery/base/PeripheryValidation.sol\":{\"keccak256\":\"0x439687955aa8549b51cabaeba892a28730e3f7756317dbc48fa562cd945fee5a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bc8a557487299a2b451f3e19d5d60f025898b7e302307af2a4fe4e3db3865b7a\",\"dweb:/ipfs/Qmb4WLpfFqguv1Jou3TfLNzErcZuLDnaqCWxnbuWjPewqJ\"]},\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xd9b5ac195482b3cd25c2b1d2bf7f8be6f69b8352df17e23111556fc436590bb8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://dfd4975c3a69938f6fa6189fe5e4428260bd8aaa3e1f202c934edafe09d3d5d2\",\"dweb:/ipfs/QmaW1ZYYhnozmccckXLcg99ZoJCwoURdhaEPd26LmYvSZV\"]},\"contracts/elixir-periphery/libraries/ChainId.sol\":{\"keccak256\":\"0x6de0c960e4f3f024d7473c9e08ab84d3f2c7317117661eabd2ea0e9fdad3dfb2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e591724e2d5b0ca7c95e5e54ecf520487556a4045e770c4da9ee5930f48fd215\",\"dweb:/ipfs/QmW1HCuhWaBckYz8Kx1XmaPRn1nSuCMZLdGmaR6UJdQsLH\"]},\"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"openzeppelin-contracts-solc-0.7/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"openzeppelin-contracts-solc-0.7/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"openzeppelin-contracts-solc-0.7/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/LiquidityManagement.sol":{"LiquidityManagement":{"abi":[{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH9()":"4aa4a4fc","elixirMintCallback(uint256,uint256,bytes)":"1507a8f4","factory()":"c45a0155","refundETH()":"12210e8a","sweepToken(address,uint256,address)":"df2ab5bb","unwrapWETH9(uint256,address)":"49404b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Owed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Owed\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"elixirMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirMintCallback(uint256,uint256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the minted liquidity. The caller of this method must be checked to be a ElixirPool deployed by the canonical ElixirFactory.\",\"params\":{\"amount0Owed\":\"The amount of token0 due to the pool for the minted liquidity\",\"amount1Owed\":\"The amount of token1 due to the pool for the minted liquidity\",\"data\":\"Any data passed through by the caller via the IElixirPoolActions#mint call\"}},\"refundETH()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}}},\"title\":\"Liquidity management functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IElixirPool#mint.\"},\"refundETH()\":{\"notice\":\"Refunds any ETH balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"}},\"notice\":\"Internal functions for safely managing liquidity in Elixir\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/LiquidityManagement.sol\":\"LiquidityManagement\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":{\"keccak256\":\"0xc15f6629fbba11617680a3df47f3a590dcc8360b731788b2783c827c0ba3667a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ca98b55c62541f6685c762569b82b7c7a774398f406554520f874221153250f\",\"dweb:/ipfs/QmVCL8LwVC1LuarhTUVDYijd7W4cmaU5HjVJr5KgqLEdTe\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/base/LiquidityManagement.sol\":{\"keccak256\":\"0x25c325c22e4159295dcb237e07a343329d97b81cb1bebe8db09c5b75ca532604\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://838f93eacbaac6e37426a13c38a79046e5ec00d05f96e2d5da0910c3c6a583fe\",\"dweb:/ipfs/QmRBANsyLN8UUrqpe1ZbhmjXchuUDRmcYiBpb5nTFae2LJ\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PeripheryPayments.sol\":{\"keccak256\":\"0x2fbe56fb8efa036258fb1eb651b1aa426c03e6483ec271f2fa1291d7d6030724\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0f5c8e95ec1e7ed22f7bbc35e18905ced294231e3c34b010448b1a841d466ba9\",\"dweb:/ipfs/QmZHnDNLBcMY8CFoa8dvrkdCHTXNNMsX6RcT1y1vHNEWzc\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xb2c39ec43afd1140b765a183017c52d02763f6ad1732cc8bd15b424cf60addf3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4991a734b128dee4821aaaca11279e2caa458128a436ee4b64ddd2483962223a\",\"dweb:/ipfs/QmbLtcN47cGXxbAua61GDp9PGz9bqru7UQPH2CJSgF1cjC\"]},\"contracts/elixir-periphery/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ed6cb25c14c41756086367d76eba826250da3a8621ace0c8657fce32e68fad7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06d92752a75efdd197ef39740e3e266bda1fbd0361c40bb9c014a608ade17b31\",\"dweb:/ipfs/QmRPhnmoNz9s2ZvJDomKtKMrYJXPvD6J6LGDtTQ8KeTDMY\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/Multicall.sol":{"Multicall":{"abi":[{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"multicall(bytes[])":"ac9650d8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}}},\"title\":\"Multicall\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"}},\"notice\":\"Enables calling multiple methods in a single call to the contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/Multicall.sol\":\"Multicall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/Multicall.sol\":{\"keccak256\":\"0x3acc1acf20b9f218e68706d90f71b28d63fbca91b8a6b5445613e12d5c98aac6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c4414bcad1d2971596866d1dc95790954fac1ca9e772d9864785496348083839\",\"dweb:/ipfs/QmXeTSwz3446DddKoZSaY1vZ4mNsMvdF4zAeX4ANoMxhjT\"]},\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/PeripheryImmutableState.sol":{"PeripheryImmutableState":{"abi":[{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH9()":"4aa4a4fc","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"WETH9\":{\"return\":\"Returns the address of WETH9\"},\"factory\":{\"return\":\"Returns the address of the Pangolin V2 factory\"}},\"title\":\"Immutable state\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Immutable state used by periphery contracts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":\"PeripheryImmutableState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/PeripheryPayments.sol":{"PeripheryPayments":{"abi":[{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH9()":"4aa4a4fc","factory()":"c45a0155","refundETH()":"12210e8a","sweepToken(address,uint256,address)":"df2ab5bb","unwrapWETH9(uint256,address)":"49404b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundETH()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundETH()\":{\"notice\":\"Refunds any ETH balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/PeripheryPayments.sol\":\"PeripheryPayments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PeripheryPayments.sol\":{\"keccak256\":\"0x2fbe56fb8efa036258fb1eb651b1aa426c03e6483ec271f2fa1291d7d6030724\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0f5c8e95ec1e7ed22f7bbc35e18905ced294231e3c34b010448b1a841d466ba9\",\"dweb:/ipfs/QmZHnDNLBcMY8CFoa8dvrkdCHTXNNMsX6RcT1y1vHNEWzc\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/PeripheryValidation.sol":{"PeripheryValidation":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/PeripheryValidation.sol\":\"PeripheryValidation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/PeripheryValidation.sol\":{\"keccak256\":\"0x439687955aa8549b51cabaeba892a28730e3f7756317dbc48fa562cd945fee5a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bc8a557487299a2b451f3e19d5d60f025898b7e302307af2a4fe4e3db3865b7a\",\"dweb:/ipfs/Qmb4WLpfFqguv1Jou3TfLNzErcZuLDnaqCWxnbuWjPewqJ\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/PoolInitializer.sol":{"PoolInitializer":{"abi":[{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"createAndInitializePoolIfNecessary","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH9()":"4aa4a4fc","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the elixir pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}}},\"title\":\"Creates and initializes V3 Pools\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/PoolInitializer.sol\":\"PoolInitializer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PoolInitializer.sol\":{\"keccak256\":\"0x8fddad649086f0cb0dcd2fb7b03af5ee61c795efb358fbf70aad3a2ff5cb054a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f63312d984b53b27c8d8bb7753c8351415bea1ca55f0a2206f0f7fb43106c74e\",\"dweb:/ipfs/QmPbmpP9d1fXiCmztfvFBRuSxHbs93Aaq8MwrD7tPPHzqK\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/SelfPermit.sol":{"SelfPermit":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"These functions are expected to be embedded in multicalls to allow EOAs to approve a contract and call a function that requires an approval in a single transaction.\",\"kind\":\"dev\",\"methods\":{\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}}},\"title\":\"Self Permit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"}},\"notice\":\"Functionality to call permit on any EIP-2612-compliant token for use in the route\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/SelfPermit.sol\":\"SelfPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/SelfPermit.sol\":{\"keccak256\":\"0x93b6b25fba6b55918c18fd5d55ddb8a85336dcbb4773c3d7ab6d486960c9a665\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://fd2a053076cdd2a7fbd4ba498c9a493cd173cba860ead6139eb9e5c3fe60f067\",\"dweb:/ipfs/QmQwpbEx5aMbJAXeKGeA43qNGcCAYMz8ng1vwG5z4SCqv1\"]},\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]},\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x1495f5068f2b892668447889f379d87decb18c9369f4506df9d23edba9ccb4b7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6f322bead944abc1da0e75aba72c9e02b22f02c15712f49b212bb65869b406ca\",\"dweb:/ipfs/QmTZAqfg4EwuFAX61ZW4nA55sUbn3o2Qy3W55C3ghPUAWM\"]},\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/IERC721Permit.sol":{"IERC721Permit":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","permit(address,uint256,uint256,uint8,bytes32,bytes32)":"7ac2ff7b","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"The domain seperator used in encoding of permit signature\"}},\"PERMIT_TYPEHASH()\":{\"returns\":{\"_0\":\"The typehash for the permit\"}},\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC721 with permit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The domain separator used in the permit signature\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The permit typehash used in the permit signature\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"}},\"notice\":\"Extension to ERC721 that includes a permit function for signature based approvals\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":\"IERC721Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/IMulticall.sol":{"IMulticall":{"abi":[{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"multicall(bytes[])":"ac9650d8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}}},\"title\":\"Multicall interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"}},\"notice\":\"Enables calling multiple methods in a single call to the contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/IMulticall.sol\":\"IMulticall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol":{"INonfungiblePositionManager":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"ClaimReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"DecreaseLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"IncreaseLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"claimReward","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Max","type":"uint128"},{"internalType":"uint128","name":"amount1Max","type":"uint128"}],"internalType":"struct INonfungiblePositionManager.CollectParams","name":"params","type":"tuple"}],"name":"collect","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"createAndInitializePoolIfNecessary","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.DecreaseLiquidityParams","name":"params","type":"tuple"}],"name":"decreaseLiquidity","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"forgoReward","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.IncreaseLiquidityParams","name":"params","type":"tuple"}],"name":"increaseLiquidity","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.MintParams","name":"params","type":"tuple"}],"name":"mint","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"positionReward","outputs":[{"internalType":"uint192","name":"rewardPerLiquidityInsideLastX64","type":"uint192"},{"internalType":"uint32","name":"rewardLastUpdated","type":"uint32"},{"internalType":"uint32","name":"rewardLastCollected","type":"uint32"},{"internalType":"uint256","name":"rewardOwed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"positions","outputs":[{"internalType":"uint96","name":"nonce","type":"uint96"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardManager_","type":"address"}],"name":"updateRewardManager","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenDescriptor_","type":"address"}],"name":"updateTokenDescriptor","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","WETH9()":"4aa4a4fc","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","claimReward(uint256,address)":"e70eb392","collect((uint256,address,uint128,uint128))":"fc6f7865","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))":"0c49ccbe","factory()":"c45a0155","forgoReward(uint256)":"29048e7b","getApproved(uint256)":"081812fc","increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))":"219f5d17","isApprovedForAll(address,address)":"e985e9c5","mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))":"88316456","name()":"06fdde03","ownerOf(uint256)":"6352211e","permit(address,uint256,uint256,uint8,bytes32,bytes32)":"7ac2ff7b","positionReward(uint256)":"75e39cec","positions(uint256)":"99fbab88","refundETH()":"12210e8a","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","sweepToken(address,uint256,address)":"df2ab5bb","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","unwrapWETH9(uint256,address)":"49404b7c","updateRewardManager(address)":"050eb2eb","updateTokenDescriptor(address)":"97f12a83"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ClaimReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"DecreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"IncreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Max\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Max\",\"type\":\"uint128\"}],\"internalType\":\"struct INonfungiblePositionManager.CollectParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.DecreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"decreaseLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"forgoReward\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.IncreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"increaseLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.MintParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positionReward\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityInsideLastX64\",\"type\":\"uint192\"},{\"internalType\":\"uint32\",\"name\":\"rewardLastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"rewardLastCollected\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"rewardOwed\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"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\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardManager_\",\"type\":\"address\"}],\"name\":\"updateRewardManager\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenDescriptor_\",\"type\":\"address\"}],\"name\":\"updateTokenDescriptor\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ClaimReward(uint256,address)\":{\"details\":\"This only notifies that the Elixir Rewarder is called. Except some edge cases (which will be documented in Elixir Rewarder), this event is a good indicator of the rewards being claimed. However, it is not certain as it depends on Elixir Rewarder implementation to decide whether to send the rewards.\",\"params\":{\"recipient\":\"The address of the account that received the reward\",\"tokenId\":\"The ID of the token for which the reward is being claimed\"}},\"Collect(uint256,address,uint256,uint256)\":{\"details\":\"The amounts reported may not be exactly equivalent to the amounts transferred, due to rounding behavior\",\"params\":{\"amount0\":\"The amount of token0 owed to the position that was collected\",\"amount1\":\"The amount of token1 owed to the position that was collected\",\"recipient\":\"The address of the account that received the collected tokens\",\"tokenId\":\"The ID of the token for which underlying tokens were collected\"}},\"DecreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount of token0 that was accounted for the decrease in liquidity\",\"amount1\":\"The amount of token1 that was accounted for the decrease in liquidity\",\"liquidity\":\"The amount by which liquidity for the NFT position was decreased\",\"tokenId\":\"The ID of the token for which liquidity was decreased\"}},\"IncreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"details\":\"Also emitted when a token is minted\",\"params\":{\"amount0\":\"The amount of token0 that was paid for the increase in liquidity\",\"amount1\":\"The amount of token1 that was paid for the increase in liquidity\",\"liquidity\":\"The amount by which liquidity for the NFT position was increased\",\"tokenId\":\"The ID of the token for which liquidity was increased\"}}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"The domain seperator used in encoding of permit signature\"}},\"PERMIT_TYPEHASH()\":{\"returns\":{\"_0\":\"The typehash for the permit\"}},\"WETH9()\":{\"returns\":{\"_0\":\"Returns the address of WETH9\"}},\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"burn(uint256)\":{\"params\":{\"tokenId\":\"The ID of the token that is being burned\"}},\"claimReward(uint256,address)\":{\"params\":{\"tokenId\":\"The ID of the NFT for which reward is being collected, recipient The account that should receive the reward tokens\"}},\"collect((uint256,address,uint128,uint128))\":{\"params\":{\"params\":\"tokenId The ID of the NFT for which tokens are being collected, recipient The account that should receive the tokens, amount0Max The maximum amount of token0 to collect, amount1Max The maximum amount of token1 to collect\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the elixir pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}},\"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))\":{\"params\":{\"params\":\"tokenId The ID of the token for which liquidity is being decreased, amount The amount by which liquidity will be decreased, amount0Min The minimum amount of token0 that should be accounted for the burned liquidity, amount1Min The minimum amount of token1 that should be accounted for the burned liquidity, deadline The time by which the transaction must be included to effect the change\"},\"returns\":{\"amount0\":\"The amount of token0 accounted to the position's tokens owed\",\"amount1\":\"The amount of token1 accounted to the position's tokens owed\"}},\"factory()\":{\"returns\":{\"_0\":\"Returns the address of the Pangolin V2 factory\"}},\"forgoReward(uint256)\":{\"details\":\"Because of (1) `burn` prevents burning the tokenId if there is any reward debt and (2) `claimReward` can be DOSed by an improper reward manager implementation or a reward token, we have this separate function to forgo rewards if user really needs to burn the tokenId and does not care about the rewards\",\"params\":{\"tokenId\":\"The ID of the NFT to forgo the rewards\"}},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"params\":\"tokenId The ID of the token for which liquidity is being increased, amount0Desired The desired amount of token0 to be spent, amount1Desired The desired amount of token1 to be spent, amount0Min The minimum amount of token0 to spend, which serves as a slippage check, amount1Min The minimum amount of token1 to spend, which serves as a slippage check, deadline The time by which the transaction must be included to effect the change\"},\"returns\":{\"amount0\":\"The amount of token0 to acheive resulting liquidity\",\"amount1\":\"The amount of token1 to acheive resulting liquidity\",\"liquidity\":\"The new liquidity amount as a result of the increase\"}},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))\":{\"details\":\"Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized a method does not exist, i.e. the pool is assumed to be initialized.\",\"params\":{\"params\":\"The params necessary to mint a position, encoded as `MintParams` in calldata\"},\"returns\":{\"amount0\":\"The amount of token0\",\"amount1\":\"The amount of token1\",\"liquidity\":\"The amount of liquidity for this position\",\"tokenId\":\"The ID of the token that represents the minted position\"}},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"positionReward(uint256)\":{\"details\":\"Throws if the token ID is not valid.\",\"params\":{\"tokenId\":\"The ID of the token that represents the position\"},\"returns\":{\"rewardLastCollected\":\"The timestamp of the last time user claimed the rewards of the position\",\"rewardLastUpdated\":\"The timestamp of the last operation that updated rewardPerLiquidityInsideLastX64\",\"rewardOwed\":\"The uncollected amount of reward token owed to the position as of the last computation\",\"rewardPerLiquidityInsideLastX64\":\"The snapshot of liquidity inside the ticks at last operation\"}},\"positions(uint256)\":{\"details\":\"Throws if the token ID is not valid.\",\"params\":{\"tokenId\":\"The ID of the token that represents the position\"},\"returns\":{\"fee\":\"The fee associated with the pool\",\"feeGrowthInside0LastX128\":\"The fee growth of token0 as of the last action on the individual position\",\"feeGrowthInside1LastX128\":\"The fee growth of token1 as of the last action on the individual position\",\"liquidity\":\"The liquidity of the position\",\"nonce\":\"The nonce for permits\",\"operator\":\"The address that is approved for spending\",\"tickLower\":\"The lower end of the tick range for the position\",\"tickUpper\":\"The higher end of the tick range for the position\",\"token0\":\"The address of the token0 for a specific pool\",\"token1\":\"The address of the token1 for a specific pool\",\"tokensOwed0\":\"The uncollected amount of token0 owed to the position as of the last computation\",\"tokensOwed1\":\"The uncollected amount of token1 owed to the position as of the last computation\"}},\"refundETH()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}},\"updateRewardManager(address)\":{\"params\":{\"rewardManager_\":\"The contract that will distribute rewards during `claimReward`\"}},\"updateTokenDescriptor(address)\":{\"params\":{\"tokenDescriptor_\":\"The address of the new token descriptor\"}}},\"title\":\"Non-fungible token for positions\",\"version\":1},\"userdoc\":{\"events\":{\"ClaimReward(uint256,address)\":{\"notice\":\"Emitted when Elixir Rewarder is called and notified of the reward amount\"},\"Collect(uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when tokens are collected for a position NFT\"},\"DecreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is decreased for a position NFT\"},\"IncreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is increased for a position NFT\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The domain separator used in the permit signature\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The permit typehash used in the permit signature\"},\"burn(uint256)\":{\"notice\":\"Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens must be collected first.\"},\"claimReward(uint256,address)\":{\"notice\":\"Notifies rewards manager contract the amount of unclaimed rewards and then deletes the reward debt\"},\"collect((uint256,address,uint128,uint128))\":{\"notice\":\"Collects up to a maximum amount of fees owed to a specific position to the recipient\"},\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"},\"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))\":{\"notice\":\"Decreases the amount of liquidity in a position and accounts it to the position\"},\"forgoReward(uint256)\":{\"notice\":\"Deletes reward debt of the token\"},\"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`\"},\"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))\":{\"notice\":\"Creates a new position wrapped in a NFT\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"},\"positionReward(uint256)\":{\"notice\":\"Returns the position reward information associated with a given token ID.\"},\"positions(uint256)\":{\"notice\":\"Returns the position information associated with a given token ID.\"},\"refundETH()\":{\"notice\":\"Refunds any ETH balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"},\"updateRewardManager(address)\":{\"notice\":\"Restricted function to update the reward manager contract address\"},\"updateTokenDescriptor(address)\":{\"notice\":\"Restricted function to update address that generates tokenURI\"}},\"notice\":\"Wraps Elixir positions in a non-fungible token interface which allows for them to be transferred and authorized.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":\"INonfungiblePositionManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0xf968ea5f5b29c4407b3337051b0fb2ea786b8a6e3f476d40cdde1cb9415b1735\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c92f629ddeb1a6bcec8b154e6619a492053a375db3a28b37bbcd49b35d4b171\",\"dweb:/ipfs/QmYRNQmFQ8gD3dkTQz85cEHwEkBuXW4F64HQB9MUUHHYse\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol":{"INonfungibleTokenPositionDescriptor":{"abi":[{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"positionManager","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"tokenURI(address,uint256)":"e9dc6375"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"tokenURI(address,uint256)\":{\"details\":\"Note this URI may be a data: URI with the JSON contents directly inlined\",\"params\":{\"positionManager\":\"The position manager for which to describe the token\",\"tokenId\":\"The ID of the token for which to produce a description, which may not be valid\"},\"returns\":{\"_0\":\"The URI of the ERC721-compliant metadata\"}}},\"title\":\"Describes position NFT tokens via URI\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"tokenURI(address,uint256)\":{\"notice\":\"Produces the URI describing a particular token ID for a position manager\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol\":\"INonfungibleTokenPositionDescriptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0xf968ea5f5b29c4407b3337051b0fb2ea786b8a6e3f476d40cdde1cb9415b1735\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c92f629ddeb1a6bcec8b154e6619a492053a375db3a28b37bbcd49b35d4b171\",\"dweb:/ipfs/QmYRNQmFQ8gD3dkTQz85cEHwEkBuXW4F64HQB9MUUHHYse\"]},\"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol\":{\"keccak256\":\"0xad5664d7c455da6e2d56dc0d53b7d40354d83aac9312d367481b3428394ec8a3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3fa455da4a61b8b084edd5b27bfb1fd739eae48e1d1e72399841774a41d3163d\",\"dweb:/ipfs/QmXmeyfQXP4NPbZNanqquiaD9WZHUwvQThbezmCEFWnAQn\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol":{"IPeripheryImmutableState":{"abi":[{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH9()":"4aa4a4fc","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"WETH9()\":{\"returns\":{\"_0\":\"Returns the address of WETH9\"}},\"factory()\":{\"returns\":{\"_0\":\"Returns the address of the Pangolin V2 factory\"}}},\"title\":\"Immutable state\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Functions that return immutable state of the router\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":\"IPeripheryImmutableState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol":{"IPeripheryPayments":{"abi":[{"inputs":[],"name":"refundETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"refundETH()":"12210e8a","sweepToken(address,uint256,address)":"df2ab5bb","unwrapWETH9(uint256,address)":"49404b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"refundETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundETH()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}}},\"title\":\"Periphery Payments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundETH()\":{\"notice\":\"Refunds any ETH balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"}},\"notice\":\"Functions to ease deposits and withdrawals of ETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":\"IPeripheryPayments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/IPoolInitializer.sol":{"IPoolInitializer":{"abi":[{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"createAndInitializePoolIfNecessary","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the elixir pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}}},\"title\":\"Creates and initializes Elixir Pools\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"}},\"notice\":\"Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that require the pool to exist.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":\"IPoolInitializer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/ISelfPermit.sol":{"ISelfPermit":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}}},\"title\":\"Self Permit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"}},\"notice\":\"Functionality to call permit on any EIP-2612-compliant token for use in the route\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":\"ISelfPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/external/IERC1271.sol":{"IERC1271":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface defined by EIP-1271\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the bytes4 magic value 0x1626ba7e when function passes. MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5). MUST allow external calls.\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"The bytes4 magic value 0x1626ba7e\"}}},\"title\":\"Interface for verifying contract-based account signatures\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Returns whether the provided signature is valid for the provided data\"}},\"notice\":\"Interface that verifies provided signature for the data\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/external/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xd9b5ac195482b3cd25c2b1d2bf7f8be6f69b8352df17e23111556fc436590bb8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://dfd4975c3a69938f6fa6189fe5e4428260bd8aaa3e1f202c934edafe09d3d5d2\",\"dweb:/ipfs/QmaW1ZYYhnozmccckXLcg99ZoJCwoURdhaEPd26LmYvSZV\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol":{"IERC20PermitAllowed":{"abi":[{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"8fcbaf0c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"details\":\"This is the permit interface used by DAI and CHAI\",\"params\":{\"allowed\":\"Boolean that sets approval amount, true for type(uint256).max and false for 0\",\"expiry\":\"The timestamp at which the permit is no longer valid\",\"holder\":\"The address of the token holder, the token owner\",\"nonce\":\"The holder's nonce, increases at each call to permit\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The address of the token spender\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}}},\"title\":\"Interface for permit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"notice\":\"Approve the spender to spend some tokens via the holder signature\"}},\"notice\":\"Interface used by DAI/CHAI for permit\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":\"IERC20PermitAllowed\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x1495f5068f2b892668447889f379d87decb18c9369f4506df9d23edba9ccb4b7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6f322bead944abc1da0e75aba72c9e02b22f02c15712f49b212bb65869b406ca\",\"dweb:/ipfs/QmTZAqfg4EwuFAX61ZW4nA55sUbn3o2Qy3W55C3ghPUAWM\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/external/IWETH9.sol":{"IWETH9":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"title\":\"Interface for WETH9\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit()\":{\"notice\":\"Deposit ether to get wrapped ether\"},\"withdraw(uint256)\":{\"notice\":\"Withdraw wrapped ether to get ether\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":\"IWETH9\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/CallbackValidation.sol":{"CallbackValidation":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201fb74a8589c9c044296b1590fe0be25795ed72af2bcc4d7a6cb4bf5182a4cb7264736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F 0xB7 0x4A DUP6 DUP10 0xC9 0xC0 DIFFICULTY 0x29 PUSH12 0x1590FE0BE25795ED72AF2BCC 0x4D PUSH27 0x6CB4BF5182A4CB7264736F6C634300070600330000000000000000 ","sourceMap":"225:1251:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201fb74a8589c9c044296b1590fe0be25795ed72af2bcc4d7a6cb4bf5182a4cb7264736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F 0xB7 0x4A DUP6 DUP10 0xC9 0xC0 DIFFICULTY 0x29 PUSH12 0x1590FE0BE25795ED72AF2BCC 0x4D PUSH27 0x6CB4BF5182A4CB7264736F6C634300070600330000000000000000 ","sourceMap":"225:1251:33:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides validation for callbacks from Elixir Pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":\"CallbackValidation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xb2c39ec43afd1140b765a183017c52d02763f6ad1732cc8bd15b424cf60addf3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4991a734b128dee4821aaaca11279e2caa458128a436ee4b64ddd2483962223a\",\"dweb:/ipfs/QmbLtcN47cGXxbAua61GDp9PGz9bqru7UQPH2CJSgF1cjC\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/ChainId.sol":{"ChainId":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201ff2568fcd91eeef1d821257e4513e67760fb355264f14bcc193f51327a11bc364736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F CALLCODE JUMP DUP16 0xCD SWAP2 0xEE 0xEF SAR DUP3 SLT JUMPI 0xE4 MLOAD RETURNDATACOPY PUSH8 0x760FB355264F14BC 0xC1 SWAP4 CREATE2 SGT 0x27 LOG1 SHL 0xC3 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"135:240:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201ff2568fcd91eeef1d821257e4513e67760fb355264f14bcc193f51327a11bc364736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F CALLCODE JUMP DUP16 0xCD SWAP2 0xEE 0xEF SAR DUP3 SLT JUMPI 0xE4 MLOAD RETURNDATACOPY PUSH8 0x760FB355264F14BC 0xC1 SWAP4 CREATE2 SGT 0x27 LOG1 SHL 0xC3 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"135:240:34:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Function for getting the current chain ID\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/ChainId.sol\":\"ChainId\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/ChainId.sol\":{\"keccak256\":\"0x6de0c960e4f3f024d7473c9e08ab84d3f2c7317117661eabd2ea0e9fdad3dfb2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e591724e2d5b0ca7c95e5e54ecf520487556a4045e770c4da9ee5930f48fd215\",\"dweb:/ipfs/QmW1HCuhWaBckYz8Kx1XmaPRn1nSuCMZLdGmaR6UJdQsLH\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/LiquidityAmounts.sol":{"LiquidityAmounts":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb3f5cf646fa3bd202a02912ed4af48c6d8b691323be43cf63fb38d07cb8a0ee64736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB EXTCODEHASH 0x5C 0xF6 CHAINID STATICCALL EXTCODESIZE 0xD2 MUL LOG0 0x29 SLT 0xED 0x4A DELEGATECALL DUP13 PUSH14 0x8B691323BE43CF63FB38D07CB8A0 0xEE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"317:6615:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb3f5cf646fa3bd202a02912ed4af48c6d8b691323be43cf63fb38d07cb8a0ee64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB EXTCODEHASH 0x5C 0xF6 CHAINID STATICCALL EXTCODESIZE 0xD2 MUL LOG0 0x29 SLT 0xED 0x4A DELEGATECALL DUP13 PUSH14 0x8B691323BE43CF63FB38D07CB8A0 0xEE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"317:6615:35:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity amount functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides functions for computing liquidity amounts from token amounts and prices\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/LiquidityAmounts.sol\":\"LiquidityAmounts\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-periphery/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ed6cb25c14c41756086367d76eba826250da3a8621ace0c8657fce32e68fad7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06d92752a75efdd197ef39740e3e266bda1fbd0361c40bb9c014a608ade17b31\",\"dweb:/ipfs/QmRPhnmoNz9s2ZvJDomKtKMrYJXPvD6J6LGDtTQ8KeTDMY\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/PoolAddress.sol":{"PoolAddress":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122068822e3946185580eaf8be92366d162d40f9e8123a6dbdc6fc41906c7b19021564736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x822E3946185580EAF8 0xBE SWAP3 CALLDATASIZE PUSH14 0x162D40F9E8123A6DBDC6FC41906C PUSH28 0x19021564736F6C634300070600330000000000000000000000000000 ","sourceMap":"178:2100:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122068822e3946185580eaf8be92366d162d40f9e8123a6dbdc6fc41906c7b19021564736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x822E3946185580EAF8 0xBE SWAP3 CALLDATASIZE PUSH14 0x162D40F9E8123A6DBDC6FC41906C PUSH28 0x19021564736F6C634300070600330000000000000000000000000000 ","sourceMap":"178:2100:36:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Provides functions for deriving a pool address from the factory, tokens, and the fee\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/PoolAddress.sol\":\"PoolAddress\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/PositionKey.sol":{"PositionKey":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d1ea1eea4b1fc62bcb3135e376196c5856e5466c1452fbfa2e643b5b4cc23ade64736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 0xEA 0x1E 0xEA 0x4B 0x1F 0xC6 0x2B 0xCB BALANCE CALLDATALOAD 0xE3 PUSH23 0x196C5856E5466C1452FBFA2E643B5B4CC23ADE64736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"74:310:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d1ea1eea4b1fc62bcb3135e376196c5856e5466c1452fbfa2e643b5b4cc23ade64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 0xEA 0x1E 0xEA 0x4B 0x1F 0xC6 0x2B 0xCB BALANCE CALLDATALOAD 0xE3 PUSH23 0x196C5856E5466C1452FBFA2E643B5B4CC23ADE64736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"74:310:37:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/PositionKey.sol\":\"PositionKey\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/PositionKey.sol\":{\"keccak256\":\"0x0a532dba371aed58c383f4e5b8d4ecc7de60eba8c14ef69e40b6e83401ccf74d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://992d7b2eb0bb01fdbd8169fea0f1c30938023267008cc8c7ab057487858a48b7\",\"dweb:/ipfs/QmZCxsgbiCsPmw4fk3ZRPcot9MSmWqndGP1TGMRsjztjcH\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/TransferHelper.sol":{"TransferHelper":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef23b2005f6177271654fa520db8a7e9f32fbdc86fdf3f9a2b2c11a5429835c664736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF 0x23 0xB2 STOP 0x5F PUSH2 0x7727 AND SLOAD STATICCALL MSTORE 0xD 0xB8 0xA7 0xE9 RETURN 0x2F 0xBD 0xC8 PUSH16 0xDF3F9A2B2C11A5429835C664736F6C63 NUMBER STOP SMOD MOD STOP CALLER ","sourceMap":"142:2462:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef23b2005f6177271654fa520db8a7e9f32fbdc86fdf3f9a2b2c11a5429835c664736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF 0x23 0xB2 STOP 0x5F PUSH2 0x7727 AND SLOAD STATICCALL MSTORE 0xD 0xB8 0xA7 0xE9 RETURN 0x2F 0xBD 0xC8 PUSH16 0xDF3F9A2B2C11A5429835C664736F6C63 NUMBER STOP SMOD MOD STOP CALLER ","sourceMap":"142:2462:38:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/test/MockTimeNonfungiblePositionManager.sol":{"MockTimeNonfungiblePositionManager":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH9","type":"address"},{"internalType":"address","name":"_tokenDescriptor","type":"address"},{"internalType":"address","name":"_elixirRewarder","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"ClaimReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"DecreaseLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"IncreaseLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"claimReward","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Max","type":"uint128"},{"internalType":"uint128","name":"amount1Max","type":"uint128"}],"internalType":"struct INonfungiblePositionManager.CollectParams","name":"params","type":"tuple"}],"name":"collect","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"createAndInitializePoolIfNecessary","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.DecreaseLiquidityParams","name":"params","type":"tuple"}],"name":"decreaseLiquidity","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"forgoReward","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.IncreaseLiquidityParams","name":"params","type":"tuple"}],"name":"increaseLiquidity","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.MintParams","name":"params","type":"tuple"}],"name":"mint","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"positionReward","outputs":[{"internalType":"uint192","name":"rewardPerLiquidityInsideLastX64","type":"uint192"},{"internalType":"uint32","name":"rewardLastUpdated","type":"uint32"},{"internalType":"uint32","name":"rewardLastCollected","type":"uint32"},{"internalType":"uint256","name":"rewardOwed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"positions","outputs":[{"internalType":"uint96","name":"nonce","type":"uint96"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setTime","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":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_elixirRewarder_","type":"address"}],"name":"updateRewardManager","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenDescriptor_","type":"address"}],"name":"updateTokenDescriptor","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:682:56","statements":[{"nodeType":"YulBlock","src":"6:3:56","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:56","statements":[{"nodeType":"YulAssignment","src":"86:22:56","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:56"},"nodeType":"YulFunctionCall","src":"95:13:56"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:56"}]},{"body":{"nodeType":"YulBlock","src":"171:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:56"},"nodeType":"YulFunctionCall","src":"173:12:56"},"nodeType":"YulExpressionStatement","src":"173:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:56"},"nodeType":"YulFunctionCall","src":"152:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:56"},"nodeType":"YulFunctionCall","src":"148:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:56"},"nodeType":"YulFunctionCall","src":"137:31:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:56"},"nodeType":"YulFunctionCall","src":"127:42:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:56"},"nodeType":"YulFunctionCall","src":"120:50:56"},"nodeType":"YulIf","src":"117:2:56"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:56","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:56","type":""}],"src":"14:179:56"},{"body":{"nodeType":"YulBlock","src":"330:350:56","statements":[{"body":{"nodeType":"YulBlock","src":"377:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"386:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"394:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"379:6:56"},"nodeType":"YulFunctionCall","src":"379:22:56"},"nodeType":"YulExpressionStatement","src":"379:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"351:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"360:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"347:3:56"},"nodeType":"YulFunctionCall","src":"347:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"372:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"343:3:56"},"nodeType":"YulFunctionCall","src":"343:33:56"},"nodeType":"YulIf","src":"340:2:56"},{"nodeType":"YulAssignment","src":"412:52:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"454:9:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"422:31:56"},"nodeType":"YulFunctionCall","src":"422:42:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"412:6:56"}]},{"nodeType":"YulAssignment","src":"473:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"519:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"530:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"515:3:56"},"nodeType":"YulFunctionCall","src":"515:18:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"483:31:56"},"nodeType":"YulFunctionCall","src":"483:51:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"473:6:56"}]},{"nodeType":"YulAssignment","src":"543:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"589:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"600:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"585:3:56"},"nodeType":"YulFunctionCall","src":"585:18:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"553:31:56"},"nodeType":"YulFunctionCall","src":"553:51:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"543:6:56"}]},{"nodeType":"YulAssignment","src":"613:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"659:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"670:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"655:3:56"},"nodeType":"YulFunctionCall","src":"655:18:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"623:31:56"},"nodeType":"YulFunctionCall","src":"623:51:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"613:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"272:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"283:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"295:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"303:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"311:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"319:6:56","type":""}],"src":"198:482:56"}]},"contents":"{\n    { }\n    function abi_decode_t_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_t_address_fromMemory(headStart)\n        value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n        value2 := abi_decode_t_address_fromMemory(add(headStart, 64))\n        value3 := abi_decode_t_address_fromMemory(add(headStart, 96))\n    }\n}","id":56,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"610100604052600d80546001600160b01b0319166001176001600160b01b0316600160b01b1790553480156200003457600080fd5b50604051620063d9380380620063d9833981016040819052620000579162000303565b8383838383836040518060400160405280601481526020017f456c6978697220506f736974696f6e73204e465400000000000000000000000081525060405180604001604052806008815260200167495849522d504f5360c01b815250604051806040016040528060018152602001603160f81b8152508282620000e86301ffc9a760e01b620001b560201b60201c565b8151620000fd9060069060208501906200023a565b508051620001139060079060208401906200023a565b50620001266380ac58cd60e01b620001b5565b62000138635b5e139f60e01b620001b5565b6200014a63780e9d6360e01b620001b5565b50508251602093840120608052805192019190912060a052506001600160601b0319606092831b811660c052911b1660e052600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055506200035f945050505050565b6001600160e01b0319808216141562000215576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002725760008555620002bd565b82601f106200028d57805160ff1916838001178555620002bd565b82800160010185558215620002bd579182015b82811115620002bd578251825591602001919060010190620002a0565b50620002cb929150620002cf565b5090565b5b80821115620002cb5760008155600101620002d0565b80516001600160a01b0381168114620002fe57600080fd5b919050565b6000806000806080858703121562000319578384fd5b6200032485620002e6565b93506200033460208601620002e6565b92506200034460408601620002e6565b91506200035460608601620002e6565b905092959194509250565b60805160a05160c05160601c60e05160601c615ff8620003e16000398061021b52806116d352806117be5280611846528061377552806137bb528061382f525080610a475280610d685280610e2f528061104f5280612a215280612c895280612e9d5280613251528061395b5250806114e25250806114c15250615ff86000f3fe60806040526004361061020b5760003560e01c80634f6ccce7116101145780634f6ccce7146104e35780636352211e146105035780636c0360eb1461052357806370a082311461053857806375e39cec146105585780637ac2ff7b14610588578063883164561461059b57806395d89b41146105be57806397f12a83146105d357806399fbab88146105e6578063a22cb4651461061e578063a4a78f0c1461063e578063ac9650d814610651578063b88d4fde14610671578063c2e3140a14610691578063c45a0155146106a4578063c87b56dd146106b9578063df2ab5bb146106d9578063e70eb392146106ec578063e985e9c5146106ff578063f3995c671461071f578063fc6f7865146107325761027b565b806301ffc9a714610280578063050eb2eb146102b657806306fdde03146102c9578063081812fc146102eb578063095ea7b3146103185780630c49ccbe1461033857806312210e8a1461035957806313ead562146103615780631507a8f41461037457806318160ddd14610394578063219f5d17146103b657806323b872dd146103d857806329048e7b146103f85780632f745c591461040b57806330adf81f1461042b5780633644e515146104405780633beb26c41461045557806342842e0e1461047557806342966c68146104955780634659a494146104a857806349404b7c146104bb5780634aa4a4fc146104ce5761027b565b3661027b57336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610279576040805162461bcd60e51b81526020600482015260096024820152684e6f7420574554483960b81b604482015290519081900360640190fd5b005b600080fd5b34801561028c57600080fd5b506102a061029b366004615436565b610745565b6040516102ad9190615a21565b60405180910390f35b6102796102c4366004615125565b610768565b3480156102d557600080fd5b506102de610792565b6040516102ad9190615a88565b3480156102f757600080fd5b5061030b610306366004615799565b610828565b6040516102ad91906158c2565b34801561032457600080fd5b50610279610333366004615301565b61087b565b61034b610346366004615565565b610951565b6040516102ad929190615bfe565b610279610d3c565b61030b61036f366004615195565b610d46565b34801561038057600080fd5b5061027961038f3660046157f8565b61103a565b3480156103a057600080fd5b506103a96110b8565b6040516102ad9190615a2c565b6103c96103c4366004615576565b6110c9565b6040516102ad93929190615b8c565b3480156103e457600080fd5b506102796103f33660046151ee565b6113a4565b610279610406366004615799565b6113fb565b34801561041757600080fd5b506103a9610426366004615301565b61144d565b34801561043757600080fd5b506103a9611478565b34801561044c57600080fd5b506103a961149c565b34801561046157600080fd5b50610279610470366004615799565b61155a565b34801561048157600080fd5b506102796104903660046151ee565b61155f565b6102796104a3366004615799565b61157a565b6102796104b636600461536d565b611635565b6102796104c93660046157b1565b6116cf565b3480156104da57600080fd5b5061030b611844565b3480156104ef57600080fd5b506103a96104fe366004615799565b611868565b34801561050f57600080fd5b5061030b61051e366004615799565b61187e565b34801561052f57600080fd5b506102de6118a6565b34801561054457600080fd5b506103a9610553366004615125565b6118ab565b34801561056457600080fd5b50610578610573366004615799565b611913565b6040516102ad9493929190615bad565b61027961059636600461536d565b611a60565b6105ae6105a9366004615631565b611df0565b6040516102ad9493929190615bda565b3480156105ca57600080fd5b506102de612379565b6102796105e1366004615125565b6123da565b3480156105f257600080fd5b50610606610601366004615799565b612404565b6040516102ad9c9b9a99989796959493929190615c0c565b34801561062a57600080fd5b506102796106393660046152d4565b612659565b61027961064c36600461536d565b61275a565b61066461065f3660046153c8565b6127f3565b6040516102ad91906159c1565b34801561067d57600080fd5b5061027961068c36600461522e565b612932565b61027961069f36600461536d565b612990565b3480156106b057600080fd5b5061030b612a1f565b3480156106c557600080fd5b506102de6106d4366004615799565b612a43565b6102796106e736600461532c565b612add565b6102796106fa3660046157b1565b612bb5565b34801561070b57600080fd5b506102a061071a36600461515d565b612d01565b61027961072d36600461536d565b612d2f565b61034b61074036600461554e565b612da1565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b61077061324f565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561081e5780601f106107f35761010080835404028352916020019161081e565b820191906000526020600020905b81548152906001019060200180831161080157829003601f168201915b5050505050905090565b6000610833826132fd565b6108585760405162461bcd60e51b815260040161084f90615ac1565b60405180910390fd5b506000908152600c6020526040902054600160601b90046001600160a01b031690565b60006108868261187e565b9050806001600160a01b0316836001600160a01b031614156108d95760405162461bcd60e51b8152600401808060200182810382526021815260200180615f716021913960400191505060405180910390fd5b806001600160a01b03166108eb61330a565b6001600160a01b0316148061090757506109078161071a61330a565b6109425760405162461bcd60e51b8152600401808060200182810382526038815260200180615e7b6038913960400191505060405180910390fd5b61094c838361330e565b505050565b600080823561095f81613384565b836080013561096d816133ad565b600061097f6040870160208801615643565b6001600160801b03161161099257600080fd5b84356000908152600c602090815260409182902060018101549092600160801b9091046001600160801b0316916109cd918901908901615643565b6001600160801b0316816001600160801b031610156109eb57600080fd5b6001828101546001600160501b03166000908152600b60209081526040808320815160608101835281546001600160a01b039081168252919095015490811692850192909252600160a01b90910462ffffff1690830152610a6c7f0000000000000000000000000000000000000000000000000000000000000000836133f8565b9050610a7884826134d7565b60018401546001600160a01b0382169063a34123a790600160501b8104600290810b91600160681b9004900b610ab460408e0160208f01615643565b6040518463ffffffff1660e01b8152600401610ad293929190615a62565b6040805180830381600087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2391906157d5565b909850965060408901358810801590610b40575088606001358710155b610b5c5760405162461bcd60e51b815260040161084f90615af4565b6001840154600090610b85903090600160501b8104600290810b91600160681b9004900b61363c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610bb69190615a2c565b60a06040518083038186803b158015610bce57600080fd5b505afa158015610be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c06919061568d565b50509250925050610c2b87600201548303876001600160801b0316600160801b613691565b6004880180546001600160801b03198116928e016001600160801b039182160181169290921790556003880154610c6c91908303908816600160801b613691565b6004880180546001600160801b03808216938e01600160801b9283900482160116029190911790556002870182905560038701819055610cb260408d0160208e01615643565b86038760010160106101000a8154816001600160801b0302191690836001600160801b031602179055508b600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48d6020016020810190610d159190615643565b8d8d604051610d2693929190615b8c565b60405180910390a2505050505050505050915091565b610d44613740565b565b6000836001600160a01b0316856001600160a01b031610610d6657600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b158015610df157600080fd5b505afa158015610e05573d6000803e3d6000fd5b505050506040513d6020811015610e1b57600080fd5b505190506001600160a01b038116610f51577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b158015610eba57600080fd5b505af1158015610ece573d6000803e3d6000fd5b505050506040513d6020811015610ee457600080fd5b50516040805163f637731d60e01b81526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b158015610f3457600080fd5b505af1158015610f48573d6000803e3d6000fd5b50505050611032565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610f8c57600080fd5b505afa158015610fa0573d6000803e3d6000fd5b505050506040513d60e0811015610fb657600080fd5b505190506001600160a01b03811661103057816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b505050505b505b949350505050565b600061104882840184615587565b90506110787f00000000000000000000000000000000000000000000000000000000000000008260000151613750565b50841561109357805151602082015161109391903388613773565b83156110b1576110b181600001516020015182602001513387613773565b5050505050565b60006110c46002613903565b905090565b60008060008360a001356110dc816133ad565b84356000908152600c602090815260408083206001808201546001600160501b0381168652600b855283862084516060808201875282546001600160a01b039081168352929094015480831682890190815262ffffff600160a01b9092048216838901908152885161014081018a528451861681529151909416818a0152925116828701523082850152600160501b8304600290810b810b608080850191909152600160681b909404810b900b60a0830152958c013560c0820152938b013560e0850152908a013561010084015289013561012083015292906111be9061390e565b6001870154939a50919850965091506000906111f1903090600160501b8104600290810b91600160681b9004900b61363c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016112229190615a2c565b60a06040518083038186803b15801561123a57600080fd5b505afa15801561124e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611272919061568d565b505092509250506112ae866002015483038760010160109054906101000a90046001600160801b03166001600160801b0316600160801b613691565b6004870180546001600160801b0380821690930183166001600160801b0319909116179055600387015460018801546112f59291840391600160801b918290041690613691565b6004870180546001600160801b03600160801b80830482169094018116909302921691909117905561132786856134d7565b60028601829055600386018190556001860180546001600160801b03600160801b80830482168e0182160291161790556040518b35907f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f9061138e908d908d908d90615b8c565b60405180910390a2505050505050509193909250565b6113b56113af61330a565b82613b49565b6113f05760405162461bcd60e51b8152600401808060200182810382526031815260200180615f926031913960400191505060405180910390fd5b61094c838383613be5565b8061140581613384565b6000828152600c6020526040902061141b613d1f565b60058201805463ffffffff92909216600160e01b026001600160e01b0390921691909117905560006006909101555050565b6001600160a01b038216600090815260016020526040812061146f9083613d3b565b90505b92915050565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611509613d47565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b601055565b61094c83838360405180602001604052806000815250612932565b8061158481613384565b6000828152600c602052604090206001810154600160801b90046001600160801b03161580156115bf575060048101546001600160801b0316155b80156115dd57506004810154600160801b90046001600160801b0316155b80156115eb57506006810154155b6115f457600080fd5b6000838152600c6020526040812081815560018101829055600281018290556003810182905560048101829055600581018290556006015561094c83613d4b565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156116af57600080fd5b505af11580156116c3573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561173e57600080fd5b505afa158015611752573d6000803e3d6000fd5b505050506040513d602081101561176857600080fd5b50519050828110156117b6576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e7420574554483960701b604482015290519081900360640190fd5b801561094c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561182257600080fd5b505af1158015611836573d6000803e3d6000fd5b5050505061094c8282613e06565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080611876600284613ef5565b509392505050565b600061147282604051806060016040528060298152602001615edd6029913960029190613f13565b606090565b60006001600160a01b0382166118f25760405162461bcd60e51b815260040180806020018281038252602a815260200180615eb3602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061147290613903565b6000818152600c6020908152604080832081516101c08101835281546001600160601b03811682526001600160a01b03600160601b909104169381019390935260018101546001600160501b038116928401839052600160501b8104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e08601526004830154808216610100870152919091041661012084015260058101546001600160c01b03811661014085015263ffffffff600160c01b82048116610160860152600160e01b90910416610180840152600601546101a083015282918291829190611a385760405162461bcd60e51b815260040161084f90615b22565b806101400151816101600151826101800151836101a001519450945094509450509193509193565b83611a6a816133ad565b6000611a7461149c565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad8989611aa081613f20565b604080516020808201969096526001600160a01b03909416848201526060840192909252608083015260a08083018b90528151808403909101815260c08301825280519084012061190160f01b60e084015260e283019490945261010280830194909452805180830390940184526101229091019052815191012090506000611b288861187e565b9050806001600160a01b0316896001600160a01b03161415611b91576040805162461bcd60e51b815260206004820152601f60248201527f4552433732315065726d69743a20617070726f76616c20746f206f776e657200604482015290519081900360640190fd5b611b9a81613f55565b15611d02576040805160208082018890528183018790526001600160f81b031960f88a901b1660608301528251604181840301815260618301808552630b135d3f60e11b90526065830186815260858401948552815160a585015281516001600160a01b03871695631626ba7e958995919260c59091019185019080838360005b83811015611c33578181015183820152602001611c1b565b50505050905090810190601f168015611c605780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015611c7e57600080fd5b505afa158015611c92573d6000803e3d6000fd5b505050506040513d6020811015611ca857600080fd5b50516001600160e01b031916630b135d3f60e11b14611cfd576040805162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611ddb565b600060018388888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611d5e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611d945750816001600160a01b0316816001600160a01b0316145b611dd9576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b505b611de5898961330e565b505050505050505050565b600080600080846101400135611e05816133ad565b604080516101408101909152600090611ed19080611e2660208b018b615125565b6001600160a01b03168152602001896020016020810190611e479190615125565b6001600160a01b03168152602001611e6560608b0160408c0161577f565b62ffffff168152306020820152604001611e8560808b0160608c0161545e565b60020b8152602001611e9d60a08b0160808c0161545e565b60020b81526020018960a0013581526020018960c0013581526020018960e00135815260200189610100013581525061390e565b92975090955093509050611f1e611ef061014089016101208a01615125565b600d80546001600160b01b0319811660016001600160b01b0392831690810190921617909155975087613f5b565b6000611f4930611f3460808b0160608c0161545e565b611f4460a08c0160808d0161545e565b61363c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401611f7a9190615a2c565b60a06040518083038186803b158015611f9257600080fd5b505afa158015611fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fca919061568d565b5050925092505060006120438560405180606001604052808e6000016020810190611ff59190615125565b6001600160a01b031681526020018e60200160208101906120169190615125565b6001600160a01b031681526020018e6040016020810190612037919061577f565b62ffffff169052614076565b9050604051806101c0016040528060006001600160601b0316815260200160006001600160a01b03168152602001826001600160501b031681526020018c6060016020810190612093919061545e565b60020b81526020016120ab60a08e0160808f0161545e565b60020b81526020018a6001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160c01b03168152602001600063ffffffff168152602001600063ffffffff1681526020016000815250600c60008c815260200190815260200160002060008201518160000160006101000a8154816001600160601b0302191690836001600160601b03160217905550602082015181600001600c6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160501b0302191690836001600160501b03160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055506101408201518160050160006101000a8154816001600160c01b0302191690836001600160c01b031602179055506101608201518160050160186101000a81548163ffffffff021916908363ffffffff16021790555061018082015181600501601c6101000a81548163ffffffff021916908363ffffffff1602179055506101a08201518160060155905050897f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f8a8a8a60405161236493929190615b8c565b60405180910390a25050505050509193509193565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561081e5780601f106107f35761010080835404028352916020019161081e565b6123e261324f565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600c6020908152604080832081516101c08101835281546001600160601b03811682526001600160a01b03600160601b909104169381019390935260018101546001600160501b038116928401839052600160501b8104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e08601526004830154808216610100870152919091041661012084015260058101546001600160c01b03811661014085015263ffffffff600160c01b82048116610160860152600160e01b90910416610180840152600601546101a083015282918291829182918291829182918291829182918291906125395760405162461bcd60e51b815260040161084f90615b22565b6000600b600083604001516001600160501b03166001600160501b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681525050905081600001518260200151826000015183602001518460400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001519d509d509d509d509d509d509d509d509d509d509d509d50505091939597999b5091939597999b565b61266161330a565b6001600160a01b0316826001600160a01b031614156126c3576040805162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015290519081900360640190fd5b80600560006126d061330a565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561271461330a565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156127ab57600080fd5b505afa1580156127bf573d6000803e3d6000fd5b505050506040513d60208110156127d557600080fd5b505110156127eb576127eb868686868686611635565b505050505050565b6060816001600160401b038111801561280b57600080fd5b5060405190808252806020026020018201604052801561283f57816020015b606081526020019060019003908161282a5790505b50905060005b8281101561292b576000803086868581811061285d57fe5b905060200281019061286f9190615ca6565b60405161287d9291906158b2565b600060405180830381855af49150503d80600081146128b8576040519150601f19603f3d011682016040523d82523d6000602084013e6128bd565b606091505b509150915081612909576044815110156128d657600080fd5b600481019050808060200190518101906128f091906154e5565b60405162461bcd60e51b815260040161084f9190615a88565b8084848151811061291657fe5b60209081029190910101525050600101612845565b5092915050565b61294361293d61330a565b83613b49565b61297e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f926031913960400191505060405180910390fd5b61298a84848484614155565b50505050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156129df57600080fd5b505afa1580156129f3573d6000803e3d6000fd5b505050506040513d6020811015612a0957600080fd5b505110156127eb576127eb868686868686612d2f565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060612a4e826132fd565b612a5757600080fd5b600e5460405163e9dc637560e01b81526001600160a01b039091169063e9dc637590612a899030908690600401615a35565b60006040518083038186803b158015612aa157600080fd5b505afa158015612ab5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261147291908101906154e5565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612b2c57600080fd5b505afa158015612b40573d6000803e3d6000fd5b505050506040513d6020811015612b5657600080fd5b5051905082811015612ba4576040805162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a103a37b5b2b760711b604482015290519081900360640190fd5b801561298a5761298a8483836141a7565b81612bbf81613384565b6001600160a01b038216612bd257600080fd5b6000838152600c6020526040812060068101549091612bef613d1f565b6000600685018190556005850180546001600160e01b0316600160e01b63ffffffff851602179055600f546001808701546001600160501b03168352600b6020908152604093849020845160608101865281546001600160a01b039081168252919093015480821692840192909252600160a01b90910462ffffff169382019390935292935016906332d5eeaf90879085908a90612cae907f0000000000000000000000000000000000000000000000000000000000000000906133f8565b600589015460405160e087901b6001600160e01b0319168152612ce79594939291600160c01b900463ffffffff16908990600401615982565b600060405180830381600087803b1580156116af57600080fd5b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156116af57600080fd5b6000808235612daf81613384565b6000612dc16060860160408701615643565b6001600160801b03161180612dee57506000612de36080860160608701615643565b6001600160801b0316115b612df757600080fd5b600080612e0a6040870160208801615125565b6001600160a01b031614612e2d57612e286040860160208701615125565b612e2f565b305b85356000908152600c602090815260408083206001808201546001600160501b03168552600b8452828520835160608101855281546001600160a01b039081168252919092015490811694820194909452600160a01b90930462ffffff169183019190915292935090612ec27f0000000000000000000000000000000000000000000000000000000000000000836133f8565b600484015460018501549192506001600160801b0380821692600160801b92839004821692900416156130b857600185015460405163a34123a760e01b81526001600160a01b0385169163a34123a791612f3991600160501b8104600290810b92600160681b909204900b90600090600401615a62565b6040805180830381600087803b158015612f5257600080fd5b505af1158015612f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8a91906157d5565b5050600185015460009081906001600160a01b0386169063514ea4bf90612fc8903090600160501b8104600290810b91600160681b9004900b61363c565b6040518263ffffffff1660e01b8152600401612fe49190615a2c565b60a06040518083038186803b158015612ffc57600080fd5b505afa158015613010573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613034919061568d565b50509250925050613070876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613691565b840193506130a9876003015482038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613691565b60028801929092556003870155015b6000806001600160801b0384166130d560608e0160408f01615643565b6001600160801b0316116130f8576130f360608d0160408e01615643565b6130fa565b835b836001600160801b03168d60600160208101906131179190615643565b6001600160801b03161161313a5761313560808e0160608f01615643565b61313c565b835b60018901546040516309e3d67b60e31b81529294509092506001600160a01b03871691634f1eb3d89161318f918c91600160501b8104600290810b92600160681b909204900b908890889060040161591b565b6040805180830381600087803b1580156131a857600080fd5b505af11580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e0919061565f565b6004890180546001600160801b03196001600160801b03918216600160801b878a0384160217168689038216179091556040519281169d50169a508c35907f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f0190610d26908b9086908690615958565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132a857600080fd5b505afa1580156132bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e09190615141565b6001600160a01b0316336001600160a01b031614610d4457600080fd5b60006114726002836142ee565b3390565b6000818152600c6020526040902080546001600160601b0316600160601b6001600160a01b03851690810291909117909155819061334b8261187e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61338e3382613b49565b6133aa5760405162461bcd60e51b815260040161084f90615a9b565b50565b804211156133aa576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b03161061342057600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6001600160601b03191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b60018201546040516351c403f960e11b81526000916001600160a01b0384169163a38807f29161352091600160501b8204600290810b92600160681b9004900b90600401615a4e565b60806040518083038186803b15801561353857600080fd5b505afa15801561354c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613570919061547a565b60058701549094506001600160c01b0380861691161092506135959150505750613638565b6005830154600160c01b900463ffffffff16156135ef57600583015460018401546135e3916001600160c01b0390811684031690600160801b90046001600160801b0316600160401b613691565b60068401805490910190555b6005830180546001600160c01b0319166001600160c01b038316179055613614613d1f565b8360050160186101000a81548163ffffffff021916908363ffffffff160217905550505b5050565b604080516001600160601b0319606086901b16602080830191909152600285810b60e890811b60348501529085900b901b60378301528251601a818403018152603a90920190925280519101205b9392505050565b60008080600019858709868602925082811090839003039050806136c757600084116136bc57600080fd5b50829004905061368a565b8084116136d357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b4715610d4457610d443347613e06565b600061375c83836133f8565b9050336001600160a01b0382161461147257600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156137b45750804710155b156138d6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561381457600080fd5b505af1158015613828573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156138a457600080fd5b505af11580156138b8573d6000803e3d6000fd5b505050506040513d60208110156138ce57600080fd5b5061298a9050565b6001600160a01b0383163014156138f7576138f28483836141a7565b61298a565b61298a848484846142fa565b60006114728261444a565b6000806000806000604051806060016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001876040015162ffffff1681525090506139807f0000000000000000000000000000000000000000000000000000000000000000826133f8565b91506000826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156139bd57600080fd5b505afa1580156139d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f591906156ee565b50505050505090506000613a0c886080015161444e565b90506000613a1d8960a0015161444e565b9050613a348383838c60c001518d60e00151614775565b9750505050816001600160a01b0316633c8a7d8d876060015188608001518960a00151896040518060400160405280888152602001336001600160a01b0316815250604051602001613a869190615b4c565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401613ab59594939291906158d6565b6040805180830381600087803b158015613ace57600080fd5b505af1158015613ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0691906157d5565b61010088015191955093508410801590613b2557508561012001518310155b613b415760405162461bcd60e51b815260040161084f90615af4565b509193509193565b6000613b54826132fd565b613b8f5760405162461bcd60e51b815260040180806020018281038252602c815260200180615e4f602c913960400191505060405180910390fd5b6000613b9a8361187e565b9050806001600160a01b0316846001600160a01b03161480613bd55750836001600160a01b0316613bca84610828565b6001600160a01b0316145b8061103257506110328185612d01565b826001600160a01b0316613bf88261187e565b6001600160a01b031614613c3d5760405162461bcd60e51b8152600401808060200182810382526029815260200180615f286029913960400191505060405180910390fd5b6001600160a01b038216613c825760405162461bcd60e51b8152600401808060200182810382526024815260200180615e056024913960400191505060405180910390fd5b613c8d83838361094c565b613c9860008261330e565b6001600160a01b0383166000908152600160205260409020613cba9082614839565b506001600160a01b0382166000908152600160205260409020613cdd9082614845565b50613cea60028284614851565b5080826001600160a01b0316846001600160a01b0316600080516020615f5183398151915260405160405180910390a4505050565b600063ffffffff4211613d3257426110c4565b5063ffffffff90565b600061146f8383614867565b4690565b6000613d568261187e565b9050613d648160008461094c565b613d6f60008361330e565b6000828152600860205260409020546002600019610100600184161502019091160415613dad576000828152600860205260408120613dad9161509d565b6001600160a01b0381166000908152600160205260409020613dcf9083614839565b50613ddb6002836148cb565b5060405182906000906001600160a01b03841690600080516020615f51833981519152908390a45050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613e525780518252601f199092019160209182019101613e33565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613eb4576040519150601f19603f3d011682016040523d82523d6000602084013e613eb9565b606091505b505090508061094c576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b6000808080613f0486866148d7565b909450925050505b9250929050565b6000611032848484614952565b6000908152600c6020526040902080546001600160601b0319811660016001600160601b039283169081019092161790915590565b3b151590565b6001600160a01b038216613fb6576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613fbf816132fd565b15614010576040805162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015290519081900360640190fd5b61401c6000838361094c565b6001600160a01b038216600090815260016020526040902061403e9082614845565b5061404b60028284614851565b5060405181906001600160a01b03841690600090600080516020615f51833981519152908290a45050565b6001600160a01b0382166000908152600a60205260409020546001600160501b0316806114725750600d805460016001600160501b03600160b01b8084048216838101909216026001600160b01b03909316929092179092556001600160a01b038085166000908152600a6020908152604080832080546001600160501b03191686179055848352600b825291829020865181549085166001600160a01b031991821617825591870151950180549287015162ffffff16600160a01b0262ffffff60a01b19969094169290911691909117939093161790915592915050565b614160848484613be5565b61416c84848484614a1c565b61298a5760405162461bcd60e51b8152600401808060200182810382526032815260200180615dd36032913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106142235780518252601f199092019160209182019101614204565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614285576040519150601f19603f3d011682016040523d82523d6000602084013e61428a565b606091505b50915091508180156142b85750805115806142b857508080602001905160208110156142b557600080fd5b50515b6110b1576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b600061146f8383614b84565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000948594938a169392918291908083835b6020831061437e5780518252601f19909201916020918201910161435f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146143e0576040519150601f19603f3d011682016040523d82523d6000602084013e6143e5565b606091505b5091509150818015614413575080511580614413575080806020019051602081101561441057600080fd5b50515b6127eb576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b5490565b60008060008360020b12614465578260020b61446d565b8260020b6000035b9050620d89e88111156144ab576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166144bf57600160801b6144d1565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b0316905060028216156144fb576ffff97272373d413259a46990580e213a0260801c5b600482161561451a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614539576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614558576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614577576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614596576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156145b5576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156145d5576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156145f5576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614615576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614635576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614655576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614675576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614695576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156146b5576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156146d6576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156146f6576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614715576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614732576b048a170391f7dc42444e8fa20260801c5b60008460020b131561474d57806000198161474957fe5b0490505b600160201b810615614760576001614763565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b03161115614795579293925b846001600160a01b0316866001600160a01b0316116147c0576147b9858585614b9c565b9050614830565b836001600160a01b0316866001600160a01b031610156148225760006147e7878686614b9c565b905060006147f6878986614bff565b9050806001600160801b0316826001600160801b0316106148175780614819565b815b92505050614830565b61482d858584614bff565b90505b95945050505050565b600061146f8383614c3c565b600061146f8383614d02565b600061103284846001600160a01b038516614d4c565b815460009082106148a95760405162461bcd60e51b8152600401808060200182810382526022815260200180615db16022913960400191505060405180910390fd5b8260000182815481106148b857fe5b9060005260206000200154905092915050565b600061146f8383614de3565b81546000908190831061491b5760405162461bcd60e51b8152600401808060200182810382526022815260200180615f066022913960400191505060405180910390fd5b600084600001848154811061492c57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816149ed5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156149b257818101518382015260200161499a565b50505050905090810190601f1680156149df5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110614a0057fe5b9060005260206000209060020201600101549150509392505050565b6000614a30846001600160a01b0316613f55565b614a3c57506001611032565b6000614b4a630a85bd0160e11b614a5161330a565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614ab8578181015183820152602001614aa0565b50505050905090810190601f168015614ae55780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001615dd3603291396001600160a01b0388169190614eb7565b90506000818060200190516020811015614b6357600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6000826001600160a01b0316846001600160a01b03161115614bbc579192915b6000614bdf856001600160a01b0316856001600160a01b0316600160601b613691565b9050614830614bfa84838888036001600160a01b0316613691565b614ec6565b6000826001600160a01b0316846001600160a01b03161115614c1f579192915b611032614bfa83600160601b8787036001600160a01b0316613691565b60008181526001830160205260408120548015614cf85783546000198083019190810190600090879083908110614c6f57fe5b9060005260206000200154905080876000018481548110614c8c57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614cbc57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611472565b6000915050611472565b6000614d0e8383614b84565b614d4457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611472565b506000611472565b600082815260018401602052604081205480614db157505060408051808201825283815260208082018481528654600181810189556000898152848120955160029093029095019182559151908201558654868452818801909252929091205561368a565b82856000016001830381548110614dc457fe5b906000526020600020906002020160010181905550600091505061368a565b60008181526001830160205260408120548015614cf85783546000198083019190810190600090879083908110614e1657fe5b9060005260206000209060020201905080876000018481548110614e3657fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614e7557fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506114729350505050565b60606110328484600085614edc565b806001600160801b038116811461076357600080fd5b606082471015614f1d5760405162461bcd60e51b8152600401808060200182810382526026815260200180615e296026913960400191505060405180910390fd5b614f2685613f55565b614f77576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614fb55780518252601f199092019160209182019101614f96565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615017576040519150601f19603f3d011682016040523d82523d6000602084013e61501c565b606091505b509150915061502c828286615037565b979650505050505050565b6060831561504657508161368a565b8251156150565782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156149b257818101518382015260200161499a565b50805460018160011615610100020316600290046000825580601f106150c357506133aa565b601f0160209004906000526020600020908101906133aa91905b808211156150f157600081556001016150dd565b5090565b803561076381615d5a565b805161ffff8116811461076357600080fd5b803562ffffff8116811461076357600080fd5b600060208284031215615136578081fd5b813561368a81615d5a565b600060208284031215615152578081fd5b815161368a81615d5a565b6000806040838503121561516f578081fd5b823561517a81615d5a565b9150602083013561518a81615d5a565b809150509250929050565b600080600080608085870312156151aa578182fd5b84356151b581615d5a565b935060208501356151c581615d5a565b92506151d360408601615112565b915060608501356151e381615d5a565b939692955090935050565b600080600060608486031215615202578081fd5b833561520d81615d5a565b9250602084013561521d81615d5a565b929592945050506040919091013590565b60008060008060808587031215615243578182fd5b843561524e81615d5a565b9350602085013561525e81615d5a565b92506040850135915060608501356001600160401b0381111561527f578182fd5b8501601f8101871361528f578182fd5b80356152a261529d82615d0d565b615cea565b8181528860208385010111156152b6578384fd5b81602084016020830137908101602001929092525092959194509250565b600080604083850312156152e6578182fd5b82356152f181615d5a565b9150602083013561518a81615d6f565b60008060408385031215615313578182fd5b823561531e81615d5a565b946020939093013593505050565b600080600060608486031215615340578081fd5b833561534b81615d5a565b925060208401359150604084013561536281615d5a565b809150509250925092565b60008060008060008060c08789031215615385578384fd5b863561539081615d5a565b9550602087013594506040870135935060608701356153ae81615da1565b9598949750929560808101359460a0909101359350915050565b600080602083850312156153da578182fd5b82356001600160401b03808211156153f0578384fd5b818501915085601f830112615403578384fd5b813581811115615411578485fd5b8660208083028501011115615424578485fd5b60209290920196919550909350505050565b600060208284031215615447578081fd5b81356001600160e01b03198116811461368a578182fd5b60006020828403121561546f578081fd5b813561368a81615d7d565b6000806000806080858703121561548f578182fd5b84518060060b811461549f578283fd5b60208601519094506154b081615d5a565b604086015190935063ffffffff811681146154c9578283fd5b60608601519092506001600160c01b03811681146151e3578182fd5b6000602082840312156154f6578081fd5b81516001600160401b0381111561550b578182fd5b8201601f8101841361551b578182fd5b805161552961529d82615d0d565b81815285602083850101111561553d578384fd5b614830826020830160208601615d2e565b60006080828403121561555f578081fd5b50919050565b600060a0828403121561555f578081fd5b600060c0828403121561555f578081fd5b60008183036080811215615599578182fd5b604051604081016001600160401b0382821081831117156155b657fe5b8160405260608412156155c7578485fd5b60a08301935081841081851117156155db57fe5b5082604052843592506155ed83615d5a565b9182526020840135916155ff83615d5a565b82606083015261561160408601615112565b60808301528152615624606085016150f5565b6020820152949350505050565b6000610160828403121561555f578081fd5b600060208284031215615654578081fd5b813561368a81615d8c565b60008060408385031215615671578182fd5b825161567c81615d8c565b602084015190925061518a81615d8c565b600080600080600060a086880312156156a4578283fd5b85516156af81615d8c565b80955050602086015193506040860151925060608601516156cf81615d8c565b60808701519092506156e081615d8c565b809150509295509295909350565b600080600080600080600060e0888a031215615708578485fd5b875161571381615d5a565b602089015190975061572481615d7d565b955061573260408901615100565b945061574060608901615100565b935061574e60808901615100565b925060a088015161575e81615da1565b60c089015190925061576f81615d6f565b8091505092959891949750929550565b600060208284031215615790578081fd5b61146f82615112565b6000602082840312156157aa578081fd5b5035919050565b600080604083850312156157c3578182fd5b82359150602083013561518a81615d5a565b600080604083850312156157e7578182fd5b505080516020909101519092909150565b6000806000806060858703121561580d578182fd5b843593506020850135925060408501356001600160401b0380821115615831578384fd5b818701915087601f830112615844578384fd5b813581811115615852578485fd5b886020828501011115615863578485fd5b95989497505060200194505050565b6000815180845261588a816020860160208601615d2e565b601f01601f19169290920160200192915050565b60020b9052565b6001600160801b03169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b0386168152600285810b602083015284900b60408201526001600160801b038316606082015260a06080820181905260009061502c90830184615872565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039390931683526001600160801b03918216602084015216604082015260600190565b6001600160a01b039687168152602081019590955260408501939093529316606083015263ffffffff928316608083015290911660a082015260c00190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015615a1457603f19888603018452615a02858351615872565b945092850192908501906001016159e6565b5092979650505050505050565b901515815260200190565b90815260200190565b6001600160a01b03929092168252602082015260400190565b600292830b8152910b602082015260400190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b60006020825261146f6020830184615872565b6020808252600c908201526b139bdd08185c1c1c9bdd995960a21b604082015260600190565b60208082526019908201527822a9219b99189d103737b732bc34b9ba32b73a103a37b5b2b760391b604082015260600190565b602080825260149082015273507269636520736c69707061676520636865636b60601b604082015260600190565b60208082526010908201526f125b9d985b1a59081d1bdad95b88125160821b604082015260600190565b815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b6001600160801b039390931683526020830191909152604082015260600190565b6001600160c01b0394909416845263ffffffff928316602085015291166040830152606082015260800190565b9384526001600160801b039290921660208401526040830152606082015260800190565b918252602082015260400190565b6001600160601b038d1681526001600160a01b038c811660208301528b811660408301528a16606082015262ffffff89166080820152600288900b60a08201526101808101615c5e60c083018961589e565b615c6b60e08301886158a5565b8561010083015284610120830152615c876101408301856158a5565b615c956101608301846158a5565b9d9c50505050505050505050505050565b6000808335601e19843603018112615cbc578283fd5b8301803591506001600160401b03821115615cd5578283fd5b602001915036819003821315613f0c57600080fd5b6040518181016001600160401b0381118282101715615d0557fe5b604052919050565b60006001600160401b03821115615d2057fe5b50601f01601f191660200190565b60005b83811015615d49578181015183820152602001615d31565b8381111561298a5750506000910152565b6001600160a01b03811681146133aa57600080fd5b80151581146133aa57600080fd5b8060020b81146133aa57600080fd5b6001600160801b03811681146133aa57600080fd5b60ff811681146133aa57600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220609504b7be8c39ea06a62c550504c1044f7991b7d98f4136b8d46336d03e2c4a64736f6c63430007060033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND PUSH1 0x1 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x63D9 CODESIZE SUB DUP1 PUSH3 0x63D9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x57 SWAP2 PUSH3 0x303 JUMP JUMPDEST DUP4 DUP4 DUP4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C6978697220506F736974696F6E73204E4654000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 ADD PUSH8 0x495849522D504F53 PUSH1 0xC0 SHL DUP2 MSTORE POP 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 DUP3 DUP3 PUSH3 0xE8 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH3 0x1B5 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 MLOAD PUSH3 0xFD SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x23A JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x113 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x23A JUMP JUMPDEST POP PUSH3 0x126 PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH3 0x1B5 JUMP JUMPDEST PUSH3 0x138 PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH3 0x1B5 JUMP JUMPDEST PUSH3 0x14A PUSH4 0x780E9D63 PUSH1 0xE0 SHL PUSH3 0x1B5 JUMP JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 SWAP4 DUP5 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xA0 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xC0 MSTORE SWAP2 SHL AND PUSH1 0xE0 MSTORE PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0xF DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP PUSH3 0x35F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x215 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x272 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x2BD JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x28D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2BD JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2BD JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2BD JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2A0 JUMP JUMPDEST POP PUSH3 0x2CB SWAP3 SWAP2 POP PUSH3 0x2CF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2CB JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2D0 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x319 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH3 0x324 DUP6 PUSH3 0x2E6 JUMP JUMPDEST SWAP4 POP PUSH3 0x334 PUSH1 0x20 DUP7 ADD PUSH3 0x2E6 JUMP JUMPDEST SWAP3 POP PUSH3 0x344 PUSH1 0x40 DUP7 ADD PUSH3 0x2E6 JUMP JUMPDEST SWAP2 POP PUSH3 0x354 PUSH1 0x60 DUP7 ADD PUSH3 0x2E6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x5FF8 PUSH3 0x3E1 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x21B MSTORE DUP1 PUSH2 0x16D3 MSTORE DUP1 PUSH2 0x17BE MSTORE DUP1 PUSH2 0x1846 MSTORE DUP1 PUSH2 0x3775 MSTORE DUP1 PUSH2 0x37BB MSTORE DUP1 PUSH2 0x382F MSTORE POP DUP1 PUSH2 0xA47 MSTORE DUP1 PUSH2 0xD68 MSTORE DUP1 PUSH2 0xE2F MSTORE DUP1 PUSH2 0x104F MSTORE DUP1 PUSH2 0x2A21 MSTORE DUP1 PUSH2 0x2C89 MSTORE DUP1 PUSH2 0x2E9D MSTORE DUP1 PUSH2 0x3251 MSTORE DUP1 PUSH2 0x395B MSTORE POP DUP1 PUSH2 0x14E2 MSTORE POP DUP1 PUSH2 0x14C1 MSTORE POP PUSH2 0x5FF8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x20B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x523 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x538 JUMPI DUP1 PUSH4 0x75E39CEC EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x7AC2FF7B EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x88316456 EQ PUSH2 0x59B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5BE JUMPI DUP1 PUSH4 0x97F12A83 EQ PUSH2 0x5D3 JUMPI DUP1 PUSH4 0x99FBAB88 EQ PUSH2 0x5E6 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x63E JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x671 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x691 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0xE70EB392 EQ PUSH2 0x6EC JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6FF JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x71F JUMPI DUP1 PUSH4 0xFC6F7865 EQ PUSH2 0x732 JUMPI PUSH2 0x27B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x50EB2EB EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xC49CCBE EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x12210E8A EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0x1507A8F4 EQ PUSH2 0x374 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x219F5D17 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3D8 JUMPI DUP1 PUSH4 0x29048E7B EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x42B JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x3BEB26C4 EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x495 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0x49404B7C EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x4CE JUMPI PUSH2 0x27B JUMP JUMPDEST CALLDATASIZE PUSH2 0x27B JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x279 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x4E6F74205745544839 PUSH1 0xB8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A0 PUSH2 0x29B CALLDATASIZE PUSH1 0x4 PUSH2 0x5436 JUMP JUMPDEST PUSH2 0x745 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x5A21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x279 PUSH2 0x2C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5125 JUMP JUMPDEST PUSH2 0x768 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x792 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x5A88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x306 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x828 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x58C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x333 CALLDATASIZE PUSH1 0x4 PUSH2 0x5301 JUMP JUMPDEST PUSH2 0x87B JUMP JUMPDEST PUSH2 0x34B PUSH2 0x346 CALLDATASIZE PUSH1 0x4 PUSH2 0x5565 JUMP JUMPDEST PUSH2 0x951 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP3 SWAP2 SWAP1 PUSH2 0x5BFE JUMP JUMPDEST PUSH2 0x279 PUSH2 0xD3C JUMP JUMPDEST PUSH2 0x30B PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x5195 JUMP JUMPDEST PUSH2 0xD46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x38F CALLDATASIZE PUSH1 0x4 PUSH2 0x57F8 JUMP JUMPDEST PUSH2 0x103A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x10B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x5A2C JUMP JUMPDEST PUSH2 0x3C9 PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5576 JUMP JUMPDEST PUSH2 0x10C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x3F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x51EE JUMP JUMPDEST PUSH2 0x13A4 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x406 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x13FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x426 CALLDATASIZE PUSH1 0x4 PUSH2 0x5301 JUMP JUMPDEST PUSH2 0x144D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x1478 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x149C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x155A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x490 CALLDATASIZE PUSH1 0x4 PUSH2 0x51EE JUMP JUMPDEST PUSH2 0x155F JUMP JUMPDEST PUSH2 0x279 PUSH2 0x4A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x157A JUMP JUMPDEST PUSH2 0x279 PUSH2 0x4B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x536D JUMP JUMPDEST PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x57B1 JUMP JUMPDEST PUSH2 0x16CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x1844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x4FE CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x1868 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x51E CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x187E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x18A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x553 CALLDATASIZE PUSH1 0x4 PUSH2 0x5125 JUMP JUMPDEST PUSH2 0x18AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x578 PUSH2 0x573 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x1913 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BAD JUMP JUMPDEST PUSH2 0x279 PUSH2 0x596 CALLDATASIZE PUSH1 0x4 PUSH2 0x536D JUMP JUMPDEST PUSH2 0x1A60 JUMP JUMPDEST PUSH2 0x5AE PUSH2 0x5A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5631 JUMP JUMPDEST PUSH2 0x1DF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x2379 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x5E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x5125 JUMP JUMPDEST PUSH2 0x23DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x606 PUSH2 0x601 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x2404 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x639 CALLDATASIZE PUSH1 0x4 PUSH2 0x52D4 JUMP JUMPDEST PUSH2 0x2659 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x64C CALLDATASIZE PUSH1 0x4 PUSH2 0x536D JUMP JUMPDEST PUSH2 0x275A JUMP JUMPDEST PUSH2 0x664 PUSH2 0x65F CALLDATASIZE PUSH1 0x4 PUSH2 0x53C8 JUMP JUMPDEST PUSH2 0x27F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x59C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x68C CALLDATASIZE PUSH1 0x4 PUSH2 0x522E JUMP JUMPDEST PUSH2 0x2932 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x69F CALLDATASIZE PUSH1 0x4 PUSH2 0x536D JUMP JUMPDEST PUSH2 0x2990 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x2A1F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x6D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x2A43 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x6E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x532C JUMP JUMPDEST PUSH2 0x2ADD JUMP JUMPDEST PUSH2 0x279 PUSH2 0x6FA CALLDATASIZE PUSH1 0x4 PUSH2 0x57B1 JUMP JUMPDEST PUSH2 0x2BB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A0 PUSH2 0x71A CALLDATASIZE PUSH1 0x4 PUSH2 0x515D JUMP JUMPDEST PUSH2 0x2D01 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x72D CALLDATASIZE PUSH1 0x4 PUSH2 0x536D JUMP JUMPDEST PUSH2 0x2D2F JUMP JUMPDEST PUSH2 0x34B PUSH2 0x740 CALLDATASIZE PUSH1 0x4 PUSH2 0x554E JUMP JUMPDEST PUSH2 0x2DA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x770 PUSH2 0x324F JUMP JUMPDEST PUSH1 0xF 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 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x81E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7F3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x81E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x801 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x833 DUP3 PUSH2 0x32FD JUMP JUMPDEST PUSH2 0x858 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5AC1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x886 DUP3 PUSH2 0x187E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x8D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F71 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8EB PUSH2 0x330A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x907 JUMPI POP PUSH2 0x907 DUP2 PUSH2 0x71A PUSH2 0x330A JUMP JUMPDEST PUSH2 0x942 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E7B PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x94C DUP4 DUP4 PUSH2 0x330E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x95F DUP2 PUSH2 0x3384 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x96D DUP2 PUSH2 0x33AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97F PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH2 0x9CD SWAP2 DUP10 ADD SWAP1 DUP10 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP6 ADD SLOAD SWAP1 DUP2 AND SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH3 0xFFFFFF AND SWAP1 DUP4 ADD MSTORE PUSH2 0xA6C PUSH32 0x0 DUP4 PUSH2 0x33F8 JUMP JUMPDEST SWAP1 POP PUSH2 0xA78 DUP5 DUP3 PUSH2 0x34D7 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA34123A7 SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0xAB4 PUSH1 0x40 DUP15 ADD PUSH1 0x20 DUP16 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A62 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAFF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB23 SWAP2 SWAP1 PUSH2 0x57D5 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD DUP9 LT DUP1 ISZERO SWAP1 PUSH2 0xB40 JUMPI POP DUP9 PUSH1 0x60 ADD CALLDATALOAD DUP8 LT ISZERO JUMPDEST PUSH2 0xB5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5AF4 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB85 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x363C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBB6 SWAP2 SWAP1 PUSH2 0x5A2C JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBE2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC06 SWAP2 SWAP1 PUSH2 0x568D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0xC2B DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND SWAP3 DUP15 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND ADD DUP2 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0x3 DUP9 ADD SLOAD PUSH2 0xC6C SWAP2 SWAP1 DUP4 SUB SWAP1 DUP9 AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP4 DUP15 ADD PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x2 DUP8 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP8 ADD DUP2 SWAP1 SSTORE PUSH2 0xCB2 PUSH1 0x40 DUP14 ADD PUSH1 0x20 DUP15 ADD PUSH2 0x5643 JUMP JUMPDEST DUP7 SUB DUP8 PUSH1 0x1 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x0 ADD CALLDATALOAD PUSH32 0x26F6A048EE9138F2C0CE266F322CB99228E8D619AE2BFF30C67F8DCF9D2377B4 DUP14 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xD15 SWAP2 SWAP1 PUSH2 0x5643 JUMP JUMPDEST DUP14 DUP14 PUSH1 0x40 MLOAD PUSH2 0xD26 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0xD44 PUSH2 0x3740 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xD66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1698EE82 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xF51 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1671295 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xECE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF637731D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP4 AND SWAP2 PUSH4 0xF637731D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF48 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1032 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1030 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF637731D DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x102B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1048 DUP3 DUP5 ADD DUP5 PUSH2 0x5587 JUMP JUMPDEST SWAP1 POP PUSH2 0x1078 PUSH32 0x0 DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x3750 JUMP JUMPDEST POP DUP5 ISZERO PUSH2 0x1093 JUMPI DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x1093 SWAP2 SWAP1 CALLER DUP9 PUSH2 0x3773 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x10B1 JUMPI PUSH2 0x10B1 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x3773 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10C4 PUSH1 0x2 PUSH2 0x3903 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x10DC DUP2 PUSH2 0x33AD JUMP JUMPDEST DUP5 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND DUP7 MSTORE PUSH1 0xB DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP5 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP8 MSTORE DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE SWAP3 SWAP1 SWAP5 ADD SLOAD DUP1 DUP4 AND DUP3 DUP10 ADD SWAP1 DUP2 MSTORE PUSH3 0xFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV DUP3 AND DUP4 DUP10 ADD SWAP1 DUP2 MSTORE DUP9 MLOAD PUSH2 0x140 DUP2 ADD DUP11 MSTORE DUP5 MLOAD DUP7 AND DUP2 MSTORE SWAP2 MLOAD SWAP1 SWAP5 AND DUP2 DUP11 ADD MSTORE SWAP3 MLOAD AND DUP3 DUP8 ADD MSTORE ADDRESS DUP3 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP4 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP5 DIV DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0xA0 DUP4 ADD MSTORE SWAP6 DUP13 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE SWAP4 DUP12 ADD CALLDATALOAD PUSH1 0xE0 DUP6 ADD MSTORE SWAP1 DUP11 ADD CALLDATALOAD PUSH2 0x100 DUP5 ADD MSTORE DUP10 ADD CALLDATALOAD PUSH2 0x120 DUP4 ADD MSTORE SWAP3 SWAP1 PUSH2 0x11BE SWAP1 PUSH2 0x390E JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD SWAP4 SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x11F1 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x363C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1222 SWAP2 SWAP1 PUSH2 0x5A2C JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x124E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1272 SWAP2 SWAP1 PUSH2 0x568D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x12AE DUP7 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP1 SWAP4 ADD DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x12F5 SWAP3 SWAP2 DUP5 SUB SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV AND SWAP1 PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND SWAP1 SWAP5 ADD DUP2 AND SWAP1 SWAP4 MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1327 DUP7 DUP6 PUSH2 0x34D7 JUMP JUMPDEST PUSH1 0x2 DUP7 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP7 ADD DUP2 SWAP1 SSTORE PUSH1 0x1 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP15 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP12 CALLDATALOAD SWAP1 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F SWAP1 PUSH2 0x138E SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH2 0x5B8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x13B5 PUSH2 0x13AF PUSH2 0x330A JUMP JUMPDEST DUP3 PUSH2 0x3B49 JUMP JUMPDEST PUSH2 0x13F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F92 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x94C DUP4 DUP4 DUP4 PUSH2 0x3BE5 JUMP JUMPDEST DUP1 PUSH2 0x1405 DUP2 PUSH2 0x3384 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x141B PUSH2 0x3D1F JUMP JUMPDEST PUSH1 0x5 DUP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 PUSH1 0x6 SWAP1 SWAP2 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x146F SWAP1 DUP4 PUSH2 0x3D3B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH32 0x0 PUSH32 0x0 PUSH2 0x1509 PUSH2 0x3D47 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x10 SSTORE JUMP JUMPDEST PUSH2 0x94C DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2932 JUMP JUMPDEST DUP1 PUSH2 0x1584 DUP2 PUSH2 0x3384 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO DUP1 ISZERO PUSH2 0x15BF JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x15DD JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x15EB JUMPI POP PUSH1 0x6 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0x15F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x5 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x6 ADD SSTORE PUSH2 0x94C DUP4 PUSH2 0x3D4B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x173E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1752 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x17B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x496E73756666696369656E74205745544839 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x94C JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1836 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x94C DUP3 DUP3 PUSH2 0x3E06 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1876 PUSH1 0x2 DUP5 PUSH2 0x3EF5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1472 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5EDD PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x18F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5EB3 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1472 SWAP1 PUSH2 0x3903 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x1C0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x68 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE SWAP1 DUP4 ADD SLOAD PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0x4 DUP4 ADD SLOAD DUP1 DUP3 AND PUSH2 0x100 DUP8 ADD MSTORE SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND PUSH2 0x160 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 SWAP2 DIV AND PUSH2 0x180 DUP5 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH2 0x1A0 DUP4 ADD MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH2 0x1A38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5B22 JUMP JUMPDEST DUP1 PUSH2 0x140 ADD MLOAD DUP2 PUSH2 0x160 ADD MLOAD DUP3 PUSH2 0x180 ADD MLOAD DUP4 PUSH2 0x1A0 ADD MLOAD SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST DUP4 PUSH2 0x1A6A DUP2 PUSH2 0x33AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A74 PUSH2 0x149C JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP10 DUP10 PUSH2 0x1AA0 DUP2 PUSH2 0x3F20 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE2 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH2 0x102 DUP1 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 MLOAD DUP1 DUP4 SUB SWAP1 SWAP5 ADD DUP5 MSTORE PUSH2 0x122 SWAP1 SWAP2 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1B28 DUP9 PUSH2 0x187E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1B91 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732315065726D69743A20617070726F76616C20746F206F776E657200 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B9A DUP2 PUSH2 0x3F55 JUMP JUMPDEST ISZERO PUSH2 0x1D02 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP9 SWAP1 MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0xF8 DUP11 SWAP1 SHL AND PUSH1 0x60 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x41 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x61 DUP4 ADD DUP1 DUP6 MSTORE PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 MSTORE PUSH1 0x65 DUP4 ADD DUP7 DUP2 MSTORE PUSH1 0x85 DUP5 ADD SWAP5 DUP6 MSTORE DUP2 MLOAD PUSH1 0xA5 DUP6 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP6 PUSH4 0x1626BA7E SWAP6 DUP10 SWAP6 SWAP2 SWAP3 PUSH1 0xC5 SWAP1 SWAP2 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C33 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1C1B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C60 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C92 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ PUSH2 0x1CFD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x155B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DDB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D5E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1D94 JUMPI POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x1DD9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x496E76616C6964207369676E6174757265 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x1DE5 DUP10 DUP10 PUSH2 0x330E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x1E05 DUP2 PUSH2 0x33AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1ED1 SWAP1 DUP1 PUSH2 0x1E26 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x5125 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1E47 SWAP2 SWAP1 PUSH2 0x5125 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E65 PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x577F JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x1E85 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x545E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E9D PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x545E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xA0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE POP PUSH2 0x390E JUMP JUMPDEST SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH2 0x1F1E PUSH2 0x1EF0 PUSH2 0x140 DUP10 ADD PUSH2 0x120 DUP11 ADD PUSH2 0x5125 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP8 POP DUP8 PUSH2 0x3F5B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F49 ADDRESS PUSH2 0x1F34 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x545E JUMP JUMPDEST PUSH2 0x1F44 PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x545E JUMP JUMPDEST PUSH2 0x363C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F7A SWAP2 SWAP1 PUSH2 0x5A2C JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FCA SWAP2 SWAP1 PUSH2 0x568D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0x2043 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP15 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1FF5 SWAP2 SWAP1 PUSH2 0x5125 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP15 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2016 SWAP2 SWAP1 PUSH2 0x5125 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP15 PUSH1 0x40 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2037 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE PUSH2 0x4076 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x1C0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2093 SWAP2 SWAP1 PUSH2 0x545E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x20AB PUSH1 0xA0 DUP15 ADD PUSH1 0x80 DUP16 ADD PUSH2 0x545E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP PUSH1 0xC PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0xC 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 PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0xA PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0xD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x1C PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1A0 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP10 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x2364 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x81E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7F3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x81E JUMP JUMPDEST PUSH2 0x23E2 PUSH2 0x324F JUMP JUMPDEST PUSH1 0xE 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 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x1C0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x68 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE SWAP1 DUP4 ADD SLOAD PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0x4 DUP4 ADD SLOAD DUP1 DUP3 AND PUSH2 0x100 DUP8 ADD MSTORE SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND PUSH2 0x160 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 SWAP2 DIV AND PUSH2 0x180 DUP5 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH2 0x1A0 DUP4 ADD MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH2 0x2539 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5B22 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0xC0 ADD MLOAD DUP11 PUSH1 0xE0 ADD MLOAD DUP12 PUSH2 0x100 ADD MLOAD DUP13 PUSH2 0x120 ADD MLOAD SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP POP POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 SWAP12 POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 SWAP12 JUMP JUMPDEST PUSH2 0x2661 PUSH2 0x330A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x26C3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x22A9219B99189D1030B8383937BB32903A379031B0B63632B9 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x26D0 PUSH2 0x330A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x2714 PUSH2 0x330A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x27EB JUMPI PUSH2 0x27EB DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1635 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x280B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x283F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x282A JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x292B JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x285D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x286F SWAP2 SWAP1 PUSH2 0x5CA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x287D SWAP3 SWAP2 SWAP1 PUSH2 0x58B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x28B8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2909 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x28D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x28F0 SWAP2 SWAP1 PUSH2 0x54E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP2 SWAP1 PUSH2 0x5A88 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2916 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x2845 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2943 PUSH2 0x293D PUSH2 0x330A JUMP JUMPDEST DUP4 PUSH2 0x3B49 JUMP JUMPDEST PUSH2 0x297E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F92 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x298A DUP5 DUP5 DUP5 DUP5 PUSH2 0x4155 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x27EB JUMPI PUSH2 0x27EB DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2D2F JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2A4E DUP3 PUSH2 0x32FD JUMP JUMPDEST PUSH2 0x2A57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xE SLOAD PUSH1 0x40 MLOAD PUSH4 0xE9DC6375 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xE9DC6375 SWAP1 PUSH2 0x2A89 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A35 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1472 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x54E5 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x2BA4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24B739BAB33334B1B4B2B73A103A37B5B2B7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x298A JUMPI PUSH2 0x298A DUP5 DUP4 DUP4 PUSH2 0x41A7 JUMP JUMPDEST DUP2 PUSH2 0x2BBF DUP2 PUSH2 0x3384 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2BD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x6 DUP2 ADD SLOAD SWAP1 SWAP2 PUSH2 0x2BEF PUSH2 0x3D1F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 DUP6 ADD DUP2 SWAP1 SSTORE PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL PUSH4 0xFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH1 0xF SLOAD PUSH1 0x1 DUP1 DUP8 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP4 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP1 KECCAK256 DUP5 MLOAD PUSH1 0x60 DUP2 ADD DUP7 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD DUP1 DUP3 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH3 0xFFFFFF AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 SWAP4 POP AND SWAP1 PUSH4 0x32D5EEAF SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH2 0x2CAE SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x33F8 JUMP JUMPDEST PUSH1 0x5 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0xE0 DUP8 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH2 0x2CE7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5982 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x2DAF DUP2 PUSH2 0x3384 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DC1 PUSH1 0x60 DUP7 ADD PUSH1 0x40 DUP8 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT DUP1 PUSH2 0x2DEE JUMPI POP PUSH1 0x0 PUSH2 0x2DE3 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST PUSH2 0x2DF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E0A PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x5125 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2E2D JUMPI PUSH2 0x2E28 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x5125 JUMP JUMPDEST PUSH2 0x2E2F JUMP JUMPDEST ADDRESS JUMPDEST DUP6 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP6 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP4 MLOAD PUSH1 0x60 DUP2 ADD DUP6 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD SWAP1 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV PUSH3 0xFFFFFF AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP4 POP SWAP1 PUSH2 0x2EC2 PUSH32 0x0 DUP4 PUSH2 0x33F8 JUMP JUMPDEST PUSH1 0x4 DUP5 ADD SLOAD PUSH1 0x1 DUP6 ADD SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP3 SWAP1 DIV AND ISZERO PUSH2 0x30B8 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xA34123A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xA34123A7 SWAP2 PUSH2 0x2F39 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP3 DIV SWAP1 SIGNEXTEND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A62 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F66 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F8A SWAP2 SWAP1 PUSH2 0x57D5 JUMP JUMPDEST POP POP PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x514EA4BF SWAP1 PUSH2 0x2FC8 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x363C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FE4 SWAP2 SWAP1 PUSH2 0x5A2C JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3010 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3034 SWAP2 SWAP1 PUSH2 0x568D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x3070 DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP9 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3691 JUMP JUMPDEST DUP5 ADD SWAP4 POP PUSH2 0x30A9 DUP8 PUSH1 0x3 ADD SLOAD DUP3 SUB DUP9 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x2 DUP9 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP8 ADD SSTORE ADD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND PUSH2 0x30D5 PUSH1 0x60 DUP15 ADD PUSH1 0x40 DUP16 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x30F8 JUMPI PUSH2 0x30F3 PUSH1 0x60 DUP14 ADD PUSH1 0x40 DUP15 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH2 0x30FA JUMP JUMPDEST DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP14 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3117 SWAP2 SWAP1 PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x313A JUMPI PUSH2 0x3135 PUSH1 0x80 DUP15 ADD PUSH1 0x60 DUP16 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH2 0x313C JUMP JUMPDEST DUP4 JUMPDEST PUSH1 0x1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x9E3D67B PUSH1 0xE3 SHL DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0x4F1EB3D8 SWAP2 PUSH2 0x318F SWAP2 DUP13 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP3 DIV SWAP1 SIGNEXTEND SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x591B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31E0 SWAP2 SWAP1 PUSH2 0x565F JUMP JUMPDEST PUSH1 0x4 DUP10 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL DUP8 DUP11 SUB DUP5 AND MUL OR AND DUP7 DUP10 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP3 DUP2 AND SWAP14 POP AND SWAP11 POP DUP13 CALLDATALOAD SWAP1 PUSH32 0x40D0EFD1A53D60ECBF40971B9DAF7DC90178C3AADC7AAB1765632738FA8B8F01 SWAP1 PUSH2 0xD26 SWAP1 DUP12 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH2 0x5958 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32E0 SWAP2 SWAP1 PUSH2 0x5141 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xD44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1472 PUSH1 0x2 DUP4 PUSH2 0x42EE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x334B DUP3 PUSH2 0x187E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x338E CALLER DUP3 PUSH2 0x3B49 JUMP JUMPDEST PUSH2 0x33AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5A9B JUMP JUMPDEST POP JUMP JUMPDEST DUP1 TIMESTAMP GT ISZERO PUSH2 0x33AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x151C985B9CD858DD1A5BDB881D1BDBC81BDB19 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x3420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x51C403F9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xA38807F2 SWAP2 PUSH2 0x3520 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND SWAP1 PUSH1 0x4 ADD PUSH2 0x5A4E JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x354C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3570 SWAP2 SWAP1 PUSH2 0x547A JUMP JUMPDEST PUSH1 0x5 DUP8 ADD SLOAD SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP7 AND SWAP2 AND LT SWAP3 POP PUSH2 0x3595 SWAP2 POP POP JUMPI POP PUSH2 0x3638 JUMP JUMPDEST PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO PUSH2 0x35EF JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH2 0x35E3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 DUP2 AND DUP5 SUB AND SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x40 SHL PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x6 DUP5 ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x5 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP4 AND OR SWAP1 SSTORE PUSH2 0x3614 PUSH2 0x3D1F JUMP JUMPDEST DUP4 PUSH1 0x5 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP7 SWAP1 SHL AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP6 DUP2 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP6 ADD MSTORE SWAP1 DUP6 SWAP1 SIGNEXTEND SWAP1 SHL PUSH1 0x37 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x1A DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x36C7 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x36BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x368A JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x36D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0xD44 JUMPI PUSH2 0xD44 CALLER SELFBALANCE PUSH2 0x3E06 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x375C DUP4 DUP4 PUSH2 0x33F8 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x1472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x37B4 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x38D6 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3828 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x38B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x298A SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x38F7 JUMPI PUSH2 0x38F2 DUP5 DUP4 DUP4 PUSH2 0x41A7 JUMP JUMPDEST PUSH2 0x298A JUMP JUMPDEST PUSH2 0x298A DUP5 DUP5 DUP5 DUP5 PUSH2 0x42FA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1472 DUP3 PUSH2 0x444A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x40 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE POP SWAP1 POP PUSH2 0x3980 PUSH32 0x0 DUP3 PUSH2 0x33F8 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x39F5 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x3A0C DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x444E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A1D DUP10 PUSH1 0xA0 ADD MLOAD PUSH2 0x444E JUMP JUMPDEST SWAP1 POP PUSH2 0x3A34 DUP4 DUP4 DUP4 DUP13 PUSH1 0xC0 ADD MLOAD DUP14 PUSH1 0xE0 ADD MLOAD PUSH2 0x4775 JUMP JUMPDEST SWAP8 POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C8A7D8D DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3A86 SWAP2 SWAP1 PUSH2 0x5B4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AB5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x58D6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3ACE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AE2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B06 SWAP2 SWAP1 PUSH2 0x57D5 JUMP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP DUP5 LT DUP1 ISZERO SWAP1 PUSH2 0x3B25 JUMPI POP DUP6 PUSH2 0x120 ADD MLOAD DUP4 LT ISZERO JUMPDEST PUSH2 0x3B41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5AF4 JUMP JUMPDEST POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B54 DUP3 PUSH2 0x32FD JUMP JUMPDEST PUSH2 0x3B8F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E4F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B9A DUP4 PUSH2 0x187E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x3BD5 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BCA DUP5 PUSH2 0x828 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x1032 JUMPI POP PUSH2 0x1032 DUP2 DUP6 PUSH2 0x2D01 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BF8 DUP3 PUSH2 0x187E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3C3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F28 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E05 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3C8D DUP4 DUP4 DUP4 PUSH2 0x94C JUMP JUMPDEST PUSH2 0x3C98 PUSH1 0x0 DUP3 PUSH2 0x330E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3CBA SWAP1 DUP3 PUSH2 0x4839 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3CDD SWAP1 DUP3 PUSH2 0x4845 JUMP JUMPDEST POP PUSH2 0x3CEA PUSH1 0x2 DUP3 DUP5 PUSH2 0x4851 JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0x3D32 JUMPI TIMESTAMP PUSH2 0x10C4 JUMP JUMPDEST POP PUSH4 0xFFFFFFFF SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP4 DUP4 PUSH2 0x4867 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D56 DUP3 PUSH2 0x187E JUMP JUMPDEST SWAP1 POP PUSH2 0x3D64 DUP2 PUSH1 0x0 DUP5 PUSH2 0x94C JUMP JUMPDEST PUSH2 0x3D6F PUSH1 0x0 DUP4 PUSH2 0x330E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP5 AND ISZERO MUL ADD SWAP1 SWAP2 AND DIV ISZERO PUSH2 0x3DAD JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3DAD SWAP2 PUSH2 0x509D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3DCF SWAP1 DUP4 PUSH2 0x4839 JUMP JUMPDEST POP PUSH2 0x3DDB PUSH1 0x2 DUP4 PUSH2 0x48CB JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3E52 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3E33 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3EB4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3EB9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x94C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x535445 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x3F04 DUP7 DUP7 PUSH2 0x48D7 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1032 DUP5 DUP5 DUP5 PUSH2 0x4952 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3FB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FBF DUP2 PUSH2 0x32FD JUMP JUMPDEST ISZERO PUSH2 0x4010 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH28 0x115490CDCC8C4E881D1BDAD95B88185B1C9958591E481B5A5B9D1959 PUSH1 0x22 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x401C PUSH1 0x0 DUP4 DUP4 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x403E SWAP1 DUP3 PUSH2 0x4845 JUMP JUMPDEST POP PUSH2 0x404B PUSH1 0x2 DUP3 DUP5 PUSH2 0x4851 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP1 PUSH2 0x1472 JUMPI POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB PUSH1 0x1 PUSH1 0xB0 SHL DUP1 DUP5 DIV DUP3 AND DUP4 DUP2 ADD SWAP1 SWAP3 AND MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB NOT AND DUP7 OR SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD SWAP1 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP3 SSTORE SWAP2 DUP8 ADD MLOAD SWAP6 ADD DUP1 SLOAD SWAP3 DUP8 ADD MLOAD PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT SWAP7 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP4 SWAP1 SWAP4 AND OR SWAP1 SWAP2 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4160 DUP5 DUP5 DUP5 PUSH2 0x3BE5 JUMP JUMPDEST PUSH2 0x416C DUP5 DUP5 DUP5 DUP5 PUSH2 0x4A1C JUMP JUMPDEST PUSH2 0x298A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DD3 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4223 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4204 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4285 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x428A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x42B8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x42B8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x10B1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x14D5 PUSH1 0xF2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP4 DUP4 PUSH2 0x4B84 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x437E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x435F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x43E0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43E5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4413 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4413 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x27EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x29AA23 PUSH1 0xE9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x4465 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x446D JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x44AB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x44BF JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x44D1 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x44FB JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x451A JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x4539 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x4558 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x4577 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x4596 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x45B5 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x45D5 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x45F5 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x4615 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x4635 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x4655 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x4675 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x4695 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x46B5 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x46D6 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x46F6 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x4715 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x4732 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x474D JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x4749 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP2 MOD ISZERO PUSH2 0x4760 JUMPI PUSH1 0x1 PUSH2 0x4763 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4795 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x47C0 JUMPI PUSH2 0x47B9 DUP6 DUP6 DUP6 PUSH2 0x4B9C JUMP JUMPDEST SWAP1 POP PUSH2 0x4830 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4822 JUMPI PUSH1 0x0 PUSH2 0x47E7 DUP8 DUP7 DUP7 PUSH2 0x4B9C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x47F6 DUP8 DUP10 DUP7 PUSH2 0x4BFF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x4817 JUMPI DUP1 PUSH2 0x4819 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x4830 JUMP JUMPDEST PUSH2 0x482D DUP6 DUP6 DUP5 PUSH2 0x4BFF JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP4 DUP4 PUSH2 0x4C3C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP4 DUP4 PUSH2 0x4D02 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1032 DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x4D4C JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x48A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DB1 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x48B8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP4 DUP4 PUSH2 0x4DE3 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x491B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F06 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x492C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x49ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x49B2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x499A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x49DF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x4A00 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A30 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3F55 JUMP JUMPDEST PUSH2 0x4A3C JUMPI POP PUSH1 0x1 PUSH2 0x1032 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B4A PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x4A51 PUSH2 0x330A JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4AB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4AA0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4AE5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND 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 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5DD3 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x4EB7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4BBC JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x4BDF DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3691 JUMP JUMPDEST SWAP1 POP PUSH2 0x4830 PUSH2 0x4BFA DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3691 JUMP JUMPDEST PUSH2 0x4EC6 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4C1F JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x1032 PUSH2 0x4BFA DUP4 PUSH1 0x1 PUSH1 0x60 SHL DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CF8 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4C6F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4C8C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x4CBC JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x1472 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1472 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D0E DUP4 DUP4 PUSH2 0x4B84 JUMP JUMPDEST PUSH2 0x4D44 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1472 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1472 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x4DB1 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x368A JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x4DC4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0x368A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CF8 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4E16 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4E36 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP5 SLOAD PUSH1 0x2 SWAP1 SWAP4 MUL ADD SWAP2 DUP3 SSTORE PUSH1 0x1 SWAP4 DUP5 ADD SLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE DUP4 SLOAD DUP3 MSTORE DUP10 DUP4 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x4E75 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 PUSH1 0x2 PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 DUP5 MUL ADD DUP3 DUP2 SSTORE PUSH1 0x1 SWAP1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP3 SWAP1 SWAP4 SSTORE DUP9 DUP2 MSTORE DUP10 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP5 POP PUSH2 0x1472 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1032 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x4EDC JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4F1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E29 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4F26 DUP6 PUSH2 0x3F55 JUMP JUMPDEST PUSH2 0x4F77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4FB5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4F96 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5017 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x501C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x502C DUP3 DUP3 DUP7 PUSH2 0x5037 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x5046 JUMPI POP DUP2 PUSH2 0x368A JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x5056 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x49B2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x499A JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x50C3 JUMPI POP PUSH2 0x33AA JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x33AA SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x50F1 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x50DD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x763 DUP2 PUSH2 0x5D5A JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5136 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x368A DUP2 PUSH2 0x5D5A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5152 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x368A DUP2 PUSH2 0x5D5A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x516F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x517A DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x518A DUP2 PUSH2 0x5D5A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x51AA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x51B5 DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x51C5 DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP3 POP PUSH2 0x51D3 PUSH1 0x40 DUP7 ADD PUSH2 0x5112 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x51E3 DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5202 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x520D DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x521D DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5243 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x524E DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x525E DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x527F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x528F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x52A2 PUSH2 0x529D DUP3 PUSH2 0x5D0D JUMP JUMPDEST PUSH2 0x5CEA JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x52B6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52E6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x52F1 DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x518A DUP2 PUSH2 0x5D6F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5313 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x531E DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5340 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x534B DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x5362 DUP2 PUSH2 0x5D5A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5385 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5390 DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x53AE DUP2 PUSH2 0x5DA1 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x53DA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x53F0 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5403 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5411 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x5424 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5447 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x368A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x546F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x368A DUP2 PUSH2 0x5D7D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x548F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x549F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x54B0 DUP2 PUSH2 0x5D5A JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x54C9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x51E3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54F6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x550B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x551B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5529 PUSH2 0x529D DUP3 PUSH2 0x5D0D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x553D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x4830 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5D2E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555F JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x5599 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x55B6 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE PUSH1 0x60 DUP5 SLT ISZERO PUSH2 0x55C7 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP4 POP DUP2 DUP5 LT DUP2 DUP6 GT OR ISZERO PUSH2 0x55DB JUMPI INVALID JUMPDEST POP DUP3 PUSH1 0x40 MSTORE DUP5 CALLDATALOAD SWAP3 POP PUSH2 0x55ED DUP4 PUSH2 0x5D5A JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 PUSH2 0x55FF DUP4 PUSH2 0x5D5A JUMP JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x5611 PUSH1 0x40 DUP7 ADD PUSH2 0x5112 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x5624 PUSH1 0x60 DUP6 ADD PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5654 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x368A DUP2 PUSH2 0x5D8C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5671 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x567C DUP2 PUSH2 0x5D8C JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x518A DUP2 PUSH2 0x5D8C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x56A4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x56AF DUP2 PUSH2 0x5D8C JUMP JUMPDEST DUP1 SWAP6 POP POP PUSH1 0x20 DUP7 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP7 ADD MLOAD SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD PUSH2 0x56CF DUP2 PUSH2 0x5D8C JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x56E0 DUP2 PUSH2 0x5D8C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x5708 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x5713 DUP2 PUSH2 0x5D5A JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH2 0x5724 DUP2 PUSH2 0x5D7D JUMP JUMPDEST SWAP6 POP PUSH2 0x5732 PUSH1 0x40 DUP10 ADD PUSH2 0x5100 JUMP JUMPDEST SWAP5 POP PUSH2 0x5740 PUSH1 0x60 DUP10 ADD PUSH2 0x5100 JUMP JUMPDEST SWAP4 POP PUSH2 0x574E PUSH1 0x80 DUP10 ADD PUSH2 0x5100 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH2 0x575E DUP2 PUSH2 0x5DA1 JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x576F DUP2 PUSH2 0x5D6F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5790 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x146F DUP3 PUSH2 0x5112 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x57AA JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x57C3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x518A DUP2 PUSH2 0x5D5A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x57E7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x580D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x5831 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5844 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5852 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5863 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x588A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5D2E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x2 DUP6 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP5 SWAP1 SIGNEXTEND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x502C SWAP1 DUP4 ADD DUP5 PUSH2 0x5872 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x60 DUP5 ADD MSTORE AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5A14 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x5A02 DUP6 DUP4 MLOAD PUSH2 0x5872 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x59E6 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP3 DUP4 SIGNEXTEND DUP2 MSTORE SWAP2 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND DUP2 MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x146F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5872 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x139BDD08185C1C1C9BDD9959 PUSH1 0xA2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH25 0x22A9219B99189D103737B732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x39 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH20 0x507269636520736C69707061676520636865636B PUSH1 0x60 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH16 0x125B9D985B1A59081D1BDAD95B881251 PUSH1 0x82 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP3 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD PUSH3 0xFFFFFF AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP3 ADD MLOAD SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 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 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP14 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x40 DUP4 ADD MSTORE DUP11 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH3 0xFFFFFF DUP10 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x2 DUP9 SWAP1 SIGNEXTEND PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x180 DUP2 ADD PUSH2 0x5C5E PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x589E JUMP JUMPDEST PUSH2 0x5C6B PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x58A5 JUMP JUMPDEST DUP6 PUSH2 0x100 DUP4 ADD MSTORE DUP5 PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x5C87 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x58A5 JUMP JUMPDEST PUSH2 0x5C95 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x58A5 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5CBC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5CD5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3F0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5D05 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5D20 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5D49 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5D31 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x298A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x33AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x33AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x33AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x33AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x33AA JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F722063616C6C45524337 ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E73666572206F6620746F6B656E2074686174 KECCAK256 PUSH10 0x73206E6F74206F776EDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x58221220609504B7BE8C39EA06A62C550504C104 0x4F PUSH26 0x91B7D98F4136B8D46336D03E2C4A64736F6C6343000706003300 ","sourceMap":"135:581:39:-:0;;;2464:27:13;;;-1:-1:-1;;;;;;2464:27:13;2490:1;2464:27;-1:-1:-1;;;;;2577:30:13;-1:-1:-1;;;2577:30:13;;;237:299:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;427:8;450:6;471:16;502:15;3140:8:13;3150:6;1070:241:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1070:241:14;;;;;;;;;;;;;;;;-1:-1:-1;;;1070:241:14;;;1191:5;1198:7;751:40:42;427:10;770:20;;751:18;;;:40;;:::i;:::-;3636:13:46;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3659:17:46;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3764:40:46;-1:-1:-1;;;3764:18:46;:40::i;:::-;3814:49;-1:-1:-1;;;3814:18:46;:49::i;:::-;3873:51;-1:-1:-1;;;3873:18:46;:51::i;:::-;-1:-1:-1;;1229:23:14;;::::1;::::0;;::::1;::::0;1218:34:::1;::::0;1277:26;;;::::1;::::0;;;;1263:40:::1;::::0;-1:-1:-1;;;;;;;536:18:17;;;;;;;;565:14;;;;;3169:16:13::2;:36:::0;;-1:-1:-1;;;;;3169:36:13;;::::2;-1:-1:-1::0;;;;;;3169:36:13;;::::2;;::::0;;;3216:15:::2;:34:::0;;;;;::::2;::::0;::::2;;::::0;;-1:-1:-1;135:581:39;;-1:-1:-1;;;;;135:581:39;1490:198:42;-1:-1:-1;;;;;;1573:25:42;;;;;1565:66;;;;;-1:-1:-1;;;1565:66:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1641:33:42;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1641:40:42;1677:4;1641:40;;;1490:198::o;135:581:39:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:581:39;;;-1:-1:-1;135:581:39;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:179:56;95:13;;-1:-1:-1;;;;;137:31:56;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:482::-;;;;;372:3;360:9;351:7;347:23;343:33;340:2;;;394:6;386;379:22;340:2;422:42;454:9;422:42;:::i;:::-;412:52;;483:51;530:2;519:9;515:18;483:51;:::i;:::-;473:61;;553:51;600:2;589:9;585:18;553:51;:::i;:::-;543:61;;623:51;670:2;659:9;655:18;623:51;:::i;:::-;613:61;;330:350;;;;;;;:::o;:::-;135:581:39;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:26778:56","statements":[{"nodeType":"YulBlock","src":"6:3:56","statements":[]},{"body":{"nodeType":"YulBlock","src":"65:87:56","statements":[{"nodeType":"YulAssignment","src":"75:29:56","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"97:6:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"84:12:56"},"nodeType":"YulFunctionCall","src":"84:20:56"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"75:5:56"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"140:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"113:26:56"},"nodeType":"YulFunctionCall","src":"113:33:56"},"nodeType":"YulExpressionStatement","src":"113:33:56"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"44:6:56","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"55:5:56","type":""}],"src":"14:138:56"},{"body":{"nodeType":"YulBlock","src":"218:104:56","statements":[{"nodeType":"YulAssignment","src":"228:22:56","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"243:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"237:5:56"},"nodeType":"YulFunctionCall","src":"237:13:56"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:56"}]},{"body":{"nodeType":"YulBlock","src":"300:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"309:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"312:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"302:6:56"},"nodeType":"YulFunctionCall","src":"302:12:56"},"nodeType":"YulExpressionStatement","src":"302:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"272:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"283:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"290:6:56","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"279:3:56"},"nodeType":"YulFunctionCall","src":"279:18:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"269:2:56"},"nodeType":"YulFunctionCall","src":"269:29:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"262:6:56"},"nodeType":"YulFunctionCall","src":"262:37:56"},"nodeType":"YulIf","src":"259:2:56"}]},"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"197:6:56","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"208:5:56","type":""}],"src":"157:165:56"},{"body":{"nodeType":"YulBlock","src":"377:113:56","statements":[{"nodeType":"YulAssignment","src":"387:29:56","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"409:6:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"396:12:56"},"nodeType":"YulFunctionCall","src":"396:20:56"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"387:5:56"}]},{"body":{"nodeType":"YulBlock","src":"468:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"477:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"480:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"470:6:56"},"nodeType":"YulFunctionCall","src":"470:12:56"},"nodeType":"YulExpressionStatement","src":"470:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"438:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"449:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"456:8:56","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"445:3:56"},"nodeType":"YulFunctionCall","src":"445:20:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"435:2:56"},"nodeType":"YulFunctionCall","src":"435:31:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"428:6:56"},"nodeType":"YulFunctionCall","src":"428:39:56"},"nodeType":"YulIf","src":"425:2:56"}]},"name":"abi_decode_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"356:6:56","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"367:5:56","type":""}],"src":"327:163:56"},{"body":{"nodeType":"YulBlock","src":"565:189:56","statements":[{"body":{"nodeType":"YulBlock","src":"611:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"620:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"628:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"613:6:56"},"nodeType":"YulFunctionCall","src":"613:22:56"},"nodeType":"YulExpressionStatement","src":"613:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"586:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"595:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"582:3:56"},"nodeType":"YulFunctionCall","src":"582:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"607:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"578:3:56"},"nodeType":"YulFunctionCall","src":"578:32:56"},"nodeType":"YulIf","src":"575:2:56"},{"nodeType":"YulVariableDeclaration","src":"646:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"672:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"659:12:56"},"nodeType":"YulFunctionCall","src":"659:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"650:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"718:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"691:26:56"},"nodeType":"YulFunctionCall","src":"691:33:56"},"nodeType":"YulExpressionStatement","src":"691:33:56"},{"nodeType":"YulAssignment","src":"733:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"743:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"733:6:56"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"531:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"542:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"554:6:56","type":""}],"src":"495:259:56"},{"body":{"nodeType":"YulBlock","src":"840:182:56","statements":[{"body":{"nodeType":"YulBlock","src":"886:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"895:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"903:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"888:6:56"},"nodeType":"YulFunctionCall","src":"888:22:56"},"nodeType":"YulExpressionStatement","src":"888:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"861:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"870:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"857:3:56"},"nodeType":"YulFunctionCall","src":"857:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"882:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"853:3:56"},"nodeType":"YulFunctionCall","src":"853:32:56"},"nodeType":"YulIf","src":"850:2:56"},{"nodeType":"YulVariableDeclaration","src":"921:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"940:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"934:5:56"},"nodeType":"YulFunctionCall","src":"934:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"925:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"986:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"959:26:56"},"nodeType":"YulFunctionCall","src":"959:33:56"},"nodeType":"YulExpressionStatement","src":"959:33:56"},{"nodeType":"YulAssignment","src":"1001:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"1011:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1001:6:56"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"806:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"817:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"829:6:56","type":""}],"src":"759:263:56"},{"body":{"nodeType":"YulBlock","src":"1114:315:56","statements":[{"body":{"nodeType":"YulBlock","src":"1160:26:56","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1169:6:56"},{"name":"value1","nodeType":"YulIdentifier","src":"1177:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1162:6:56"},"nodeType":"YulFunctionCall","src":"1162:22:56"},"nodeType":"YulExpressionStatement","src":"1162:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1135:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"1144:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1131:3:56"},"nodeType":"YulFunctionCall","src":"1131:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"1156:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1127:3:56"},"nodeType":"YulFunctionCall","src":"1127:32:56"},"nodeType":"YulIf","src":"1124:2:56"},{"nodeType":"YulVariableDeclaration","src":"1195:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1221:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1208:12:56"},"nodeType":"YulFunctionCall","src":"1208:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1199:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1267:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1240:26:56"},"nodeType":"YulFunctionCall","src":"1240:33:56"},"nodeType":"YulExpressionStatement","src":"1240:33:56"},{"nodeType":"YulAssignment","src":"1282:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"1292:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1282:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1306:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1338:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1334:3:56"},"nodeType":"YulFunctionCall","src":"1334:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1321:12:56"},"nodeType":"YulFunctionCall","src":"1321:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1310:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1389:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1362:26:56"},"nodeType":"YulFunctionCall","src":"1362:35:56"},"nodeType":"YulExpressionStatement","src":"1362:35:56"},{"nodeType":"YulAssignment","src":"1406:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1416:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1406:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1072:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1083:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1095:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1103:6:56","type":""}],"src":"1027:402:56"},{"body":{"nodeType":"YulBlock","src":"1554:500:56","statements":[{"body":{"nodeType":"YulBlock","src":"1601:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1610:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"1618:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1603:6:56"},"nodeType":"YulFunctionCall","src":"1603:22:56"},"nodeType":"YulExpressionStatement","src":"1603:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1575:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"1584:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1571:3:56"},"nodeType":"YulFunctionCall","src":"1571:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"1596:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1567:3:56"},"nodeType":"YulFunctionCall","src":"1567:33:56"},"nodeType":"YulIf","src":"1564:2:56"},{"nodeType":"YulVariableDeclaration","src":"1636:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1662:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1649:12:56"},"nodeType":"YulFunctionCall","src":"1649:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1640:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1708:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1681:26:56"},"nodeType":"YulFunctionCall","src":"1681:33:56"},"nodeType":"YulExpressionStatement","src":"1681:33:56"},{"nodeType":"YulAssignment","src":"1723:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"1733:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1723:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1747:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1779:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1790:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1775:3:56"},"nodeType":"YulFunctionCall","src":"1775:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1762:12:56"},"nodeType":"YulFunctionCall","src":"1762:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1751:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1830:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1803:26:56"},"nodeType":"YulFunctionCall","src":"1803:35:56"},"nodeType":"YulExpressionStatement","src":"1803:35:56"},{"nodeType":"YulAssignment","src":"1847:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1857:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1847:6:56"}]},{"nodeType":"YulAssignment","src":"1873:49:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1907:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1918:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1903:3:56"},"nodeType":"YulFunctionCall","src":"1903:18:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"1883:19:56"},"nodeType":"YulFunctionCall","src":"1883:39:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1873:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1931:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1963:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1974:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1959:3:56"},"nodeType":"YulFunctionCall","src":"1959:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1946:12:56"},"nodeType":"YulFunctionCall","src":"1946:32:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"1935:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"2014:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1987:26:56"},"nodeType":"YulFunctionCall","src":"1987:35:56"},"nodeType":"YulExpressionStatement","src":"1987:35:56"},{"nodeType":"YulAssignment","src":"2031:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"2041:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2031:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint24t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1496:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1507:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1519:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1527:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1535:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1543:6:56","type":""}],"src":"1434:620:56"},{"body":{"nodeType":"YulBlock","src":"2163:366:56","statements":[{"body":{"nodeType":"YulBlock","src":"2209:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2218:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"2226:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2211:6:56"},"nodeType":"YulFunctionCall","src":"2211:22:56"},"nodeType":"YulExpressionStatement","src":"2211:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2184:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"2193:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2180:3:56"},"nodeType":"YulFunctionCall","src":"2180:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"2205:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2176:3:56"},"nodeType":"YulFunctionCall","src":"2176:32:56"},"nodeType":"YulIf","src":"2173:2:56"},{"nodeType":"YulVariableDeclaration","src":"2244:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2270:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2257:12:56"},"nodeType":"YulFunctionCall","src":"2257:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2248:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2316:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2289:26:56"},"nodeType":"YulFunctionCall","src":"2289:33:56"},"nodeType":"YulExpressionStatement","src":"2289:33:56"},{"nodeType":"YulAssignment","src":"2331:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"2341:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2331:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"2355:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2387:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2398:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:56"},"nodeType":"YulFunctionCall","src":"2383:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2370:12:56"},"nodeType":"YulFunctionCall","src":"2370:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2359:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2438:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2411:26:56"},"nodeType":"YulFunctionCall","src":"2411:35:56"},"nodeType":"YulExpressionStatement","src":"2411:35:56"},{"nodeType":"YulAssignment","src":"2455:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2465:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2455:6:56"}]},{"nodeType":"YulAssignment","src":"2481:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2508:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2519:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2504:3:56"},"nodeType":"YulFunctionCall","src":"2504:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2491:12:56"},"nodeType":"YulFunctionCall","src":"2491:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2481:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2113:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2124:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2136:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2144:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2152:6:56","type":""}],"src":"2059:470:56"},{"body":{"nodeType":"YulBlock","src":"2664:936:56","statements":[{"body":{"nodeType":"YulBlock","src":"2711:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2720:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"2728:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2713:6:56"},"nodeType":"YulFunctionCall","src":"2713:22:56"},"nodeType":"YulExpressionStatement","src":"2713:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2685:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"2694:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2681:3:56"},"nodeType":"YulFunctionCall","src":"2681:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"2706:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2677:3:56"},"nodeType":"YulFunctionCall","src":"2677:33:56"},"nodeType":"YulIf","src":"2674:2:56"},{"nodeType":"YulVariableDeclaration","src":"2746:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2772:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2759:12:56"},"nodeType":"YulFunctionCall","src":"2759:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2750:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2818:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2791:26:56"},"nodeType":"YulFunctionCall","src":"2791:33:56"},"nodeType":"YulExpressionStatement","src":"2791:33:56"},{"nodeType":"YulAssignment","src":"2833:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"2843:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2833:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"2857:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2889:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2900:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2885:3:56"},"nodeType":"YulFunctionCall","src":"2885:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2872:12:56"},"nodeType":"YulFunctionCall","src":"2872:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2861:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2940:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2913:26:56"},"nodeType":"YulFunctionCall","src":"2913:35:56"},"nodeType":"YulExpressionStatement","src":"2913:35:56"},{"nodeType":"YulAssignment","src":"2957:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2967:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2957:6:56"}]},{"nodeType":"YulAssignment","src":"2983:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3010:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"3021:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3006:3:56"},"nodeType":"YulFunctionCall","src":"3006:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2993:12:56"},"nodeType":"YulFunctionCall","src":"2993:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2983:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"3034:46:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3065:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"3076:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3061:3:56"},"nodeType":"YulFunctionCall","src":"3061:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3048:12:56"},"nodeType":"YulFunctionCall","src":"3048:32:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3038:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"3123:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"3132:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3140:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3125:6:56"},"nodeType":"YulFunctionCall","src":"3125:22:56"},"nodeType":"YulExpressionStatement","src":"3125:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3095:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"3103:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3092:2:56"},"nodeType":"YulFunctionCall","src":"3092:30:56"},"nodeType":"YulIf","src":"3089:2:56"},{"nodeType":"YulVariableDeclaration","src":"3158:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3172:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"3183:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3168:3:56"},"nodeType":"YulFunctionCall","src":"3168:22:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3162:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"3238:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"3247:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3255:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3240:6:56"},"nodeType":"YulFunctionCall","src":"3240:22:56"},"nodeType":"YulExpressionStatement","src":"3240:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3217:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"3221:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3213:3:56"},"nodeType":"YulFunctionCall","src":"3213:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3228:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3209:3:56"},"nodeType":"YulFunctionCall","src":"3209:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3202:6:56"},"nodeType":"YulFunctionCall","src":"3202:35:56"},"nodeType":"YulIf","src":"3199:2:56"},{"nodeType":"YulVariableDeclaration","src":"3273:26:56","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3296:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3283:12:56"},"nodeType":"YulFunctionCall","src":"3283:16:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3277:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3308:62:56","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3366:2:56"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"3336:29:56"},"nodeType":"YulFunctionCall","src":"3336:33:56"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"3321:14:56"},"nodeType":"YulFunctionCall","src":"3321:49:56"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"3312:5:56","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3386:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3393:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3379:6:56"},"nodeType":"YulFunctionCall","src":"3379:17:56"},"nodeType":"YulExpressionStatement","src":"3379:17:56"},{"body":{"nodeType":"YulBlock","src":"3442:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"3451:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3459:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3444:6:56"},"nodeType":"YulFunctionCall","src":"3444:22:56"},"nodeType":"YulExpressionStatement","src":"3444:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3419:2:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3423:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3415:3:56"},"nodeType":"YulFunctionCall","src":"3415:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"3428:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3411:3:56"},"nodeType":"YulFunctionCall","src":"3411:20:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3433:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3408:2:56"},"nodeType":"YulFunctionCall","src":"3408:33:56"},"nodeType":"YulIf","src":"3405:2:56"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3494:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"3501:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3490:3:56"},"nodeType":"YulFunctionCall","src":"3490:14:56"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3510:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"3514:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3506:3:56"},"nodeType":"YulFunctionCall","src":"3506:11:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3519:2:56"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3477:12:56"},"nodeType":"YulFunctionCall","src":"3477:45:56"},"nodeType":"YulExpressionStatement","src":"3477:45:56"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3546:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3553:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3542:3:56"},"nodeType":"YulFunctionCall","src":"3542:14:56"},{"kind":"number","nodeType":"YulLiteral","src":"3558:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3538:3:56"},"nodeType":"YulFunctionCall","src":"3538:23:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3563:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3531:6:56"},"nodeType":"YulFunctionCall","src":"3531:39:56"},"nodeType":"YulExpressionStatement","src":"3531:39:56"},{"nodeType":"YulAssignment","src":"3579:15:56","value":{"name":"array","nodeType":"YulIdentifier","src":"3589:5:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3579:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2606:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2617:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2629:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2637:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2645:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2653:6:56","type":""}],"src":"2534:1066:56"},{"body":{"nodeType":"YulBlock","src":"3689:312:56","statements":[{"body":{"nodeType":"YulBlock","src":"3735:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3744:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"3752:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3737:6:56"},"nodeType":"YulFunctionCall","src":"3737:22:56"},"nodeType":"YulExpressionStatement","src":"3737:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3710:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"3719:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3706:3:56"},"nodeType":"YulFunctionCall","src":"3706:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"3731:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3702:3:56"},"nodeType":"YulFunctionCall","src":"3702:32:56"},"nodeType":"YulIf","src":"3699:2:56"},{"nodeType":"YulVariableDeclaration","src":"3770:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3796:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3783:12:56"},"nodeType":"YulFunctionCall","src":"3783:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3774:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3842:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"3815:26:56"},"nodeType":"YulFunctionCall","src":"3815:33:56"},"nodeType":"YulExpressionStatement","src":"3815:33:56"},{"nodeType":"YulAssignment","src":"3857:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"3867:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3857:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"3881:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3913:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"3924:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3909:3:56"},"nodeType":"YulFunctionCall","src":"3909:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3896:12:56"},"nodeType":"YulFunctionCall","src":"3896:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3885:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3961:7:56"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"3937:23:56"},"nodeType":"YulFunctionCall","src":"3937:32:56"},"nodeType":"YulExpressionStatement","src":"3937:32:56"},{"nodeType":"YulAssignment","src":"3978:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3988:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3978:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3647:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3658:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3670:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3678:6:56","type":""}],"src":"3605:396:56"},{"body":{"nodeType":"YulBlock","src":"4093:240:56","statements":[{"body":{"nodeType":"YulBlock","src":"4139:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4148:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"4156:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4141:6:56"},"nodeType":"YulFunctionCall","src":"4141:22:56"},"nodeType":"YulExpressionStatement","src":"4141:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4114:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"4123:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4110:3:56"},"nodeType":"YulFunctionCall","src":"4110:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"4135:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4106:3:56"},"nodeType":"YulFunctionCall","src":"4106:32:56"},"nodeType":"YulIf","src":"4103:2:56"},{"nodeType":"YulVariableDeclaration","src":"4174:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4200:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4187:12:56"},"nodeType":"YulFunctionCall","src":"4187:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4178:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4246:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4219:26:56"},"nodeType":"YulFunctionCall","src":"4219:33:56"},"nodeType":"YulExpressionStatement","src":"4219:33:56"},{"nodeType":"YulAssignment","src":"4261:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"4271:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4261:6:56"}]},{"nodeType":"YulAssignment","src":"4285:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4312:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4323:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4308:3:56"},"nodeType":"YulFunctionCall","src":"4308:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4295:12:56"},"nodeType":"YulFunctionCall","src":"4295:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4285:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4051:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4062:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4074:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4082:6:56","type":""}],"src":"4006:327:56"},{"body":{"nodeType":"YulBlock","src":"4442:366:56","statements":[{"body":{"nodeType":"YulBlock","src":"4488:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4497:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"4505:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4490:6:56"},"nodeType":"YulFunctionCall","src":"4490:22:56"},"nodeType":"YulExpressionStatement","src":"4490:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4463:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"4472:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4459:3:56"},"nodeType":"YulFunctionCall","src":"4459:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"4484:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4455:3:56"},"nodeType":"YulFunctionCall","src":"4455:32:56"},"nodeType":"YulIf","src":"4452:2:56"},{"nodeType":"YulVariableDeclaration","src":"4523:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4549:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4536:12:56"},"nodeType":"YulFunctionCall","src":"4536:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4527:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4595:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4568:26:56"},"nodeType":"YulFunctionCall","src":"4568:33:56"},"nodeType":"YulExpressionStatement","src":"4568:33:56"},{"nodeType":"YulAssignment","src":"4610:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"4620:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4610:6:56"}]},{"nodeType":"YulAssignment","src":"4634:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4661:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4672:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4657:3:56"},"nodeType":"YulFunctionCall","src":"4657:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4644:12:56"},"nodeType":"YulFunctionCall","src":"4644:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4634:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"4685:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4717:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4728:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4713:3:56"},"nodeType":"YulFunctionCall","src":"4713:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4700:12:56"},"nodeType":"YulFunctionCall","src":"4700:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4689:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"4768:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4741:26:56"},"nodeType":"YulFunctionCall","src":"4741:35:56"},"nodeType":"YulExpressionStatement","src":"4741:35:56"},{"nodeType":"YulAssignment","src":"4785:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"4795:7:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4785:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4392:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4403:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4415:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4423:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4431:6:56","type":""}],"src":"4338:470:56"},{"body":{"nodeType":"YulBlock","src":"4966:520:56","statements":[{"body":{"nodeType":"YulBlock","src":"5013:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5022:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"5030:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5015:6:56"},"nodeType":"YulFunctionCall","src":"5015:22:56"},"nodeType":"YulExpressionStatement","src":"5015:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4987:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"4996:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4983:3:56"},"nodeType":"YulFunctionCall","src":"4983:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"5008:3:56","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4979:3:56"},"nodeType":"YulFunctionCall","src":"4979:33:56"},"nodeType":"YulIf","src":"4976:2:56"},{"nodeType":"YulVariableDeclaration","src":"5048:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5074:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5061:12:56"},"nodeType":"YulFunctionCall","src":"5061:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5052:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5120:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5093:26:56"},"nodeType":"YulFunctionCall","src":"5093:33:56"},"nodeType":"YulExpressionStatement","src":"5093:33:56"},{"nodeType":"YulAssignment","src":"5135:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"5145:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5135:6:56"}]},{"nodeType":"YulAssignment","src":"5159:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5186:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5197:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5182:3:56"},"nodeType":"YulFunctionCall","src":"5182:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5169:12:56"},"nodeType":"YulFunctionCall","src":"5169:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5159:6:56"}]},{"nodeType":"YulAssignment","src":"5210:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5237:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5248:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5233:3:56"},"nodeType":"YulFunctionCall","src":"5233:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5220:12:56"},"nodeType":"YulFunctionCall","src":"5220:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5210:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"5261:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5293:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5304:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5289:3:56"},"nodeType":"YulFunctionCall","src":"5289:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5276:12:56"},"nodeType":"YulFunctionCall","src":"5276:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"5265:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5342:7:56"}],"functionName":{"name":"validator_revert_t_uint8","nodeType":"YulIdentifier","src":"5317:24:56"},"nodeType":"YulFunctionCall","src":"5317:33:56"},"nodeType":"YulExpressionStatement","src":"5317:33:56"},{"nodeType":"YulAssignment","src":"5359:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"5369:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5359:6:56"}]},{"nodeType":"YulAssignment","src":"5385:43:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5412:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5423:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5408:3:56"},"nodeType":"YulFunctionCall","src":"5408:19:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5395:12:56"},"nodeType":"YulFunctionCall","src":"5395:33:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5385:6:56"}]},{"nodeType":"YulAssignment","src":"5437:43:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5464:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5475:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5460:3:56"},"nodeType":"YulFunctionCall","src":"5460:19:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5447:12:56"},"nodeType":"YulFunctionCall","src":"5447:33:56"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"5437:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4892:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4903:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4915:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4923:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4931:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4939:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4947:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"4955:6:56","type":""}],"src":"4813:673:56"},{"body":{"nodeType":"YulBlock","src":"5607:561:56","statements":[{"body":{"nodeType":"YulBlock","src":"5653:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5662:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5670:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5655:6:56"},"nodeType":"YulFunctionCall","src":"5655:22:56"},"nodeType":"YulExpressionStatement","src":"5655:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5628:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"5637:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5624:3:56"},"nodeType":"YulFunctionCall","src":"5624:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"5649:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5620:3:56"},"nodeType":"YulFunctionCall","src":"5620:32:56"},"nodeType":"YulIf","src":"5617:2:56"},{"nodeType":"YulVariableDeclaration","src":"5688:37:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5715:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5702:12:56"},"nodeType":"YulFunctionCall","src":"5702:23:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5692:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5734:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"5744:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5738:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5789:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5798:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5806:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5791:6:56"},"nodeType":"YulFunctionCall","src":"5791:22:56"},"nodeType":"YulExpressionStatement","src":"5791:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5777:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"5785:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5774:2:56"},"nodeType":"YulFunctionCall","src":"5774:14:56"},"nodeType":"YulIf","src":"5771:2:56"},{"nodeType":"YulVariableDeclaration","src":"5824:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5838:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"5849:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5834:3:56"},"nodeType":"YulFunctionCall","src":"5834:22:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5828:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5904:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5913:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5921:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5906:6:56"},"nodeType":"YulFunctionCall","src":"5906:22:56"},"nodeType":"YulExpressionStatement","src":"5906:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5883:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"5887:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5879:3:56"},"nodeType":"YulFunctionCall","src":"5879:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5894:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5875:3:56"},"nodeType":"YulFunctionCall","src":"5875:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5868:6:56"},"nodeType":"YulFunctionCall","src":"5868:35:56"},"nodeType":"YulIf","src":"5865:2:56"},{"nodeType":"YulVariableDeclaration","src":"5939:30:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5966:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5953:12:56"},"nodeType":"YulFunctionCall","src":"5953:16:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5943:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5996:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6005:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6013:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5998:6:56"},"nodeType":"YulFunctionCall","src":"5998:22:56"},"nodeType":"YulExpressionStatement","src":"5998:22:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5984:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"5992:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5981:2:56"},"nodeType":"YulFunctionCall","src":"5981:14:56"},"nodeType":"YulIf","src":"5978:2:56"},{"body":{"nodeType":"YulBlock","src":"6081:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6090:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6098:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6083:6:56"},"nodeType":"YulFunctionCall","src":"6083:22:56"},"nodeType":"YulExpressionStatement","src":"6083:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6045:2:56"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6053:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"6061:2:56","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6049:3:56"},"nodeType":"YulFunctionCall","src":"6049:15:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6041:3:56"},"nodeType":"YulFunctionCall","src":"6041:24:56"},{"kind":"number","nodeType":"YulLiteral","src":"6067:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6037:3:56"},"nodeType":"YulFunctionCall","src":"6037:33:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6072:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6034:2:56"},"nodeType":"YulFunctionCall","src":"6034:46:56"},"nodeType":"YulIf","src":"6031:2:56"},{"nodeType":"YulAssignment","src":"6116:21:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6130:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"6134:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6126:3:56"},"nodeType":"YulFunctionCall","src":"6126:11:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6116:6:56"}]},{"nodeType":"YulAssignment","src":"6146:16:56","value":{"name":"length","nodeType":"YulIdentifier","src":"6156:6:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6146:6:56"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5565:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5576:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5588:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5596:6:56","type":""}],"src":"5491:677:56"},{"body":{"nodeType":"YulBlock","src":"6242:237:56","statements":[{"body":{"nodeType":"YulBlock","src":"6288:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6297:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6305:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6290:6:56"},"nodeType":"YulFunctionCall","src":"6290:22:56"},"nodeType":"YulExpressionStatement","src":"6290:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6263:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6272:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6259:3:56"},"nodeType":"YulFunctionCall","src":"6259:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6284:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6255:3:56"},"nodeType":"YulFunctionCall","src":"6255:32:56"},"nodeType":"YulIf","src":"6252:2:56"},{"nodeType":"YulVariableDeclaration","src":"6323:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6349:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6336:12:56"},"nodeType":"YulFunctionCall","src":"6336:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6327:5:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"6423:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6432:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6440:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6425:6:56"},"nodeType":"YulFunctionCall","src":"6425:22:56"},"nodeType":"YulExpressionStatement","src":"6425:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6381:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6392:5:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6403:3:56","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6408:10:56","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6399:3:56"},"nodeType":"YulFunctionCall","src":"6399:20:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6388:3:56"},"nodeType":"YulFunctionCall","src":"6388:32:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6378:2:56"},"nodeType":"YulFunctionCall","src":"6378:43:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6371:6:56"},"nodeType":"YulFunctionCall","src":"6371:51:56"},"nodeType":"YulIf","src":"6368:2:56"},{"nodeType":"YulAssignment","src":"6458:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"6468:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6458:6:56"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6208:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6219:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6231:6:56","type":""}],"src":"6173:306:56"},{"body":{"nodeType":"YulBlock","src":"6552:187:56","statements":[{"body":{"nodeType":"YulBlock","src":"6598:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6607:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6615:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6600:6:56"},"nodeType":"YulFunctionCall","src":"6600:22:56"},"nodeType":"YulExpressionStatement","src":"6600:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6573:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6569:3:56"},"nodeType":"YulFunctionCall","src":"6569:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6594:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6565:3:56"},"nodeType":"YulFunctionCall","src":"6565:32:56"},"nodeType":"YulIf","src":"6562:2:56"},{"nodeType":"YulVariableDeclaration","src":"6633:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6659:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6646:12:56"},"nodeType":"YulFunctionCall","src":"6646:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6637:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6703:5:56"}],"functionName":{"name":"validator_revert_t_int24","nodeType":"YulIdentifier","src":"6678:24:56"},"nodeType":"YulFunctionCall","src":"6678:31:56"},"nodeType":"YulExpressionStatement","src":"6678:31:56"},{"nodeType":"YulAssignment","src":"6718:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"6728:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6718:6:56"}]}]},"name":"abi_decode_tuple_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6518:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6529:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6541:6:56","type":""}],"src":"6484:255:56"},{"body":{"nodeType":"YulBlock","src":"6873:665:56","statements":[{"body":{"nodeType":"YulBlock","src":"6920:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"6929:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"6937:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6922:6:56"},"nodeType":"YulFunctionCall","src":"6922:22:56"},"nodeType":"YulExpressionStatement","src":"6922:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6894:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6903:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6890:3:56"},"nodeType":"YulFunctionCall","src":"6890:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6915:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6886:3:56"},"nodeType":"YulFunctionCall","src":"6886:33:56"},"nodeType":"YulIf","src":"6883:2:56"},{"nodeType":"YulVariableDeclaration","src":"6955:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6974:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6968:5:56"},"nodeType":"YulFunctionCall","src":"6968:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6959:5:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"7036:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"7045:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"7053:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7038:6:56"},"nodeType":"YulFunctionCall","src":"7038:22:56"},"nodeType":"YulExpressionStatement","src":"7038:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7006:5:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7024:1:56","type":"","value":"6"},{"name":"value","nodeType":"YulIdentifier","src":"7027:5:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"7013:10:56"},"nodeType":"YulFunctionCall","src":"7013:20:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7003:2:56"},"nodeType":"YulFunctionCall","src":"7003:31:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6996:6:56"},"nodeType":"YulFunctionCall","src":"6996:39:56"},"nodeType":"YulIf","src":"6993:2:56"},{"nodeType":"YulAssignment","src":"7071:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"7081:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7071:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"7095:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7120:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"7131:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7116:3:56"},"nodeType":"YulFunctionCall","src":"7116:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7110:5:56"},"nodeType":"YulFunctionCall","src":"7110:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"7099:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"7171:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"7144:26:56"},"nodeType":"YulFunctionCall","src":"7144:35:56"},"nodeType":"YulExpressionStatement","src":"7144:35:56"},{"nodeType":"YulAssignment","src":"7188:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"7198:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7188:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"7214:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7239:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"7250:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7235:3:56"},"nodeType":"YulFunctionCall","src":"7235:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7229:5:56"},"nodeType":"YulFunctionCall","src":"7229:25:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"7218:7:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"7312:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"7321:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"7329:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7314:6:56"},"nodeType":"YulFunctionCall","src":"7314:22:56"},"nodeType":"YulExpressionStatement","src":"7314:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"7276:7:56"},{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"7289:7:56"},{"kind":"number","nodeType":"YulLiteral","src":"7298:10:56","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7285:3:56"},"nodeType":"YulFunctionCall","src":"7285:24:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7273:2:56"},"nodeType":"YulFunctionCall","src":"7273:37:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7266:6:56"},"nodeType":"YulFunctionCall","src":"7266:45:56"},"nodeType":"YulIf","src":"7263:2:56"},{"nodeType":"YulAssignment","src":"7347:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"7357:7:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7347:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"7373:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7398:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"7409:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7394:3:56"},"nodeType":"YulFunctionCall","src":"7394:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7388:5:56"},"nodeType":"YulFunctionCall","src":"7388:25:56"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"7377:7:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"7480:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"7489:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"7497:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7482:6:56"},"nodeType":"YulFunctionCall","src":"7482:22:56"},"nodeType":"YulExpressionStatement","src":"7482:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"7435:7:56"},{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"7448:7:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7465:3:56","type":"","value":"192"},{"kind":"number","nodeType":"YulLiteral","src":"7470:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7461:3:56"},"nodeType":"YulFunctionCall","src":"7461:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"7474:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7457:3:56"},"nodeType":"YulFunctionCall","src":"7457:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7444:3:56"},"nodeType":"YulFunctionCall","src":"7444:33:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7432:2:56"},"nodeType":"YulFunctionCall","src":"7432:46:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7425:6:56"},"nodeType":"YulFunctionCall","src":"7425:54:56"},"nodeType":"YulIf","src":"7422:2:56"},{"nodeType":"YulAssignment","src":"7515:17:56","value":{"name":"value_3","nodeType":"YulIdentifier","src":"7525:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7515:6:56"}]}]},"name":"abi_decode_tuple_t_int56t_uint160t_uint32t_uint192_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6815:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6826:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6838:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6846:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6854:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6862:6:56","type":""}],"src":"6744:794:56"},{"body":{"nodeType":"YulBlock","src":"7634:585:56","statements":[{"body":{"nodeType":"YulBlock","src":"7680:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7689:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7697:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7682:6:56"},"nodeType":"YulFunctionCall","src":"7682:22:56"},"nodeType":"YulExpressionStatement","src":"7682:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7655:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"7664:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7651:3:56"},"nodeType":"YulFunctionCall","src":"7651:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"7676:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7647:3:56"},"nodeType":"YulFunctionCall","src":"7647:32:56"},"nodeType":"YulIf","src":"7644:2:56"},{"nodeType":"YulVariableDeclaration","src":"7715:30:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7735:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7729:5:56"},"nodeType":"YulFunctionCall","src":"7729:16:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7719:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"7788:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7797:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7805:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7790:6:56"},"nodeType":"YulFunctionCall","src":"7790:22:56"},"nodeType":"YulExpressionStatement","src":"7790:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7760:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"7768:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7757:2:56"},"nodeType":"YulFunctionCall","src":"7757:30:56"},"nodeType":"YulIf","src":"7754:2:56"},{"nodeType":"YulVariableDeclaration","src":"7823:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7837:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"7848:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7833:3:56"},"nodeType":"YulFunctionCall","src":"7833:22:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7827:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"7903:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7912:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7920:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7905:6:56"},"nodeType":"YulFunctionCall","src":"7905:22:56"},"nodeType":"YulExpressionStatement","src":"7905:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7882:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"7886:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7878:3:56"},"nodeType":"YulFunctionCall","src":"7878:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7893:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7874:3:56"},"nodeType":"YulFunctionCall","src":"7874:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7867:6:56"},"nodeType":"YulFunctionCall","src":"7867:35:56"},"nodeType":"YulIf","src":"7864:2:56"},{"nodeType":"YulVariableDeclaration","src":"7938:19:56","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7954:2:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7948:5:56"},"nodeType":"YulFunctionCall","src":"7948:9:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7942:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7966:62:56","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8024:2:56"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"7994:29:56"},"nodeType":"YulFunctionCall","src":"7994:33:56"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"7979:14:56"},"nodeType":"YulFunctionCall","src":"7979:49:56"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"7970:5:56","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8044:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"8051:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8037:6:56"},"nodeType":"YulFunctionCall","src":"8037:17:56"},"nodeType":"YulExpressionStatement","src":"8037:17:56"},{"body":{"nodeType":"YulBlock","src":"8100:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8109:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8117:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8102:6:56"},"nodeType":"YulFunctionCall","src":"8102:22:56"},"nodeType":"YulExpressionStatement","src":"8102:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"8077:2:56"},{"name":"_2","nodeType":"YulIdentifier","src":"8081:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8073:3:56"},"nodeType":"YulFunctionCall","src":"8073:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"8086:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8069:3:56"},"nodeType":"YulFunctionCall","src":"8069:20:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8091:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8066:2:56"},"nodeType":"YulFunctionCall","src":"8066:33:56"},"nodeType":"YulIf","src":"8063:2:56"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"8161:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"8165:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8157:3:56"},"nodeType":"YulFunctionCall","src":"8157:11:56"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8174:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"8181:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8170:3:56"},"nodeType":"YulFunctionCall","src":"8170:14:56"},{"name":"_2","nodeType":"YulIdentifier","src":"8186:2:56"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"8135:21:56"},"nodeType":"YulFunctionCall","src":"8135:54:56"},"nodeType":"YulExpressionStatement","src":"8135:54:56"},{"nodeType":"YulAssignment","src":"8198:15:56","value":{"name":"array","nodeType":"YulIdentifier","src":"8208:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8198:6:56"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7600:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7611:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7623:6:56","type":""}],"src":"7543:676:56"},{"body":{"nodeType":"YulBlock","src":"8327:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"8374:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8383:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8391:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8376:6:56"},"nodeType":"YulFunctionCall","src":"8376:22:56"},"nodeType":"YulExpressionStatement","src":"8376:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8348:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"8357:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8344:3:56"},"nodeType":"YulFunctionCall","src":"8344:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"8369:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8340:3:56"},"nodeType":"YulFunctionCall","src":"8340:33:56"},"nodeType":"YulIf","src":"8337:2:56"},{"nodeType":"YulAssignment","src":"8409:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"8419:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8409:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_CollectParams_$4005_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8293:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8304:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8316:6:56","type":""}],"src":"8224:210:56"},{"body":{"nodeType":"YulBlock","src":"8552:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"8599:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8608:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8616:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8601:6:56"},"nodeType":"YulFunctionCall","src":"8601:22:56"},"nodeType":"YulExpressionStatement","src":"8601:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8573:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"8582:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8569:3:56"},"nodeType":"YulFunctionCall","src":"8569:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"8594:3:56","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8565:3:56"},"nodeType":"YulFunctionCall","src":"8565:33:56"},"nodeType":"YulIf","src":"8562:2:56"},{"nodeType":"YulAssignment","src":"8634:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"8644:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8634:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8518:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8529:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8541:6:56","type":""}],"src":"8439:220:56"},{"body":{"nodeType":"YulBlock","src":"8777:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"8824:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8833:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8841:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8826:6:56"},"nodeType":"YulFunctionCall","src":"8826:22:56"},"nodeType":"YulExpressionStatement","src":"8826:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8798:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"8807:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8794:3:56"},"nodeType":"YulFunctionCall","src":"8794:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"8819:3:56","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8790:3:56"},"nodeType":"YulFunctionCall","src":"8790:33:56"},"nodeType":"YulIf","src":"8787:2:56"},{"nodeType":"YulAssignment","src":"8859:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"8869:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8859:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8743:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8754:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8766:6:56","type":""}],"src":"8664:220:56"},{"body":{"nodeType":"YulBlock","src":"8993:1008:56","statements":[{"nodeType":"YulVariableDeclaration","src":"9003:33:56","value":{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9017:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"9026:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9013:3:56"},"nodeType":"YulFunctionCall","src":"9013:23:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9007:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"9061:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9070:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"9078:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9063:6:56"},"nodeType":"YulFunctionCall","src":"9063:22:56"},"nodeType":"YulExpressionStatement","src":"9063:22:56"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"9052:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"9056:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9048:3:56"},"nodeType":"YulFunctionCall","src":"9048:12:56"},"nodeType":"YulIf","src":"9045:2:56"},{"nodeType":"YulVariableDeclaration","src":"9096:25:56","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9116:4:56","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9110:5:56"},"nodeType":"YulFunctionCall","src":"9110:11:56"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"9100:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9130:35:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9152:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"9160:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9148:3:56"},"nodeType":"YulFunctionCall","src":"9148:17:56"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"9134:10:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9174:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"9184:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"9178:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"9261:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"9263:7:56"},"nodeType":"YulFunctionCall","src":"9263:9:56"},"nodeType":"YulExpressionStatement","src":"9263:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9220:10:56"},{"name":"_2","nodeType":"YulIdentifier","src":"9232:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9217:2:56"},"nodeType":"YulFunctionCall","src":"9217:18:56"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9240:10:56"},{"name":"memPtr","nodeType":"YulIdentifier","src":"9252:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9237:2:56"},"nodeType":"YulFunctionCall","src":"9237:22:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"9214:2:56"},"nodeType":"YulFunctionCall","src":"9214:46:56"},"nodeType":"YulIf","src":"9211:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9290:4:56","type":"","value":"0x40"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9296:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9283:6:56"},"nodeType":"YulFunctionCall","src":"9283:24:56"},"nodeType":"YulExpressionStatement","src":"9283:24:56"},{"body":{"nodeType":"YulBlock","src":"9333:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9342:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"9350:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9335:6:56"},"nodeType":"YulFunctionCall","src":"9335:22:56"},"nodeType":"YulExpressionStatement","src":"9335:22:56"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"9323:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"9327:4:56","type":"","value":"0x60"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9319:3:56"},"nodeType":"YulFunctionCall","src":"9319:13:56"},"nodeType":"YulIf","src":"9316:2:56"},{"nodeType":"YulVariableDeclaration","src":"9368:36:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9392:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"9400:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9388:3:56"},"nodeType":"YulFunctionCall","src":"9388:16:56"},"variables":[{"name":"newFreePtr_1","nodeType":"YulTypedName","src":"9372:12:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"9471:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"9473:7:56"},"nodeType":"YulFunctionCall","src":"9473:9:56"},"nodeType":"YulExpressionStatement","src":"9473:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"9422:12:56"},{"name":"_2","nodeType":"YulIdentifier","src":"9436:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9419:2:56"},"nodeType":"YulFunctionCall","src":"9419:20:56"},{"arguments":[{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"9444:12:56"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9458:10:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9441:2:56"},"nodeType":"YulFunctionCall","src":"9441:28:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"9416:2:56"},"nodeType":"YulFunctionCall","src":"9416:54:56"},"nodeType":"YulIf","src":"9413:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9500:4:56","type":"","value":"0x40"},{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"9506:12:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9493:6:56"},"nodeType":"YulFunctionCall","src":"9493:26:56"},"nodeType":"YulExpressionStatement","src":"9493:26:56"},{"nodeType":"YulVariableDeclaration","src":"9528:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9554:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9541:12:56"},"nodeType":"YulFunctionCall","src":"9541:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9532:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9600:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9573:26:56"},"nodeType":"YulFunctionCall","src":"9573:33:56"},"nodeType":"YulExpressionStatement","src":"9573:33:56"},{"expression":{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9622:10:56"},{"name":"value","nodeType":"YulIdentifier","src":"9634:5:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9615:6:56"},"nodeType":"YulFunctionCall","src":"9615:25:56"},"nodeType":"YulExpressionStatement","src":"9615:25:56"},{"nodeType":"YulVariableDeclaration","src":"9649:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9681:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"9692:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9677:3:56"},"nodeType":"YulFunctionCall","src":"9677:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9664:12:56"},"nodeType":"YulFunctionCall","src":"9664:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9653:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9732:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9705:26:56"},"nodeType":"YulFunctionCall","src":"9705:35:56"},"nodeType":"YulExpressionStatement","src":"9705:35:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9760:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"9768:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9756:3:56"},"nodeType":"YulFunctionCall","src":"9756:17:56"},{"name":"value_1","nodeType":"YulIdentifier","src":"9775:7:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9749:6:56"},"nodeType":"YulFunctionCall","src":"9749:34:56"},"nodeType":"YulExpressionStatement","src":"9749:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9803:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"9811:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9799:3:56"},"nodeType":"YulFunctionCall","src":"9799:16:56"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9841:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"9852:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9837:3:56"},"nodeType":"YulFunctionCall","src":"9837:20:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"9817:19:56"},"nodeType":"YulFunctionCall","src":"9817:41:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9792:6:56"},"nodeType":"YulFunctionCall","src":"9792:67:56"},"nodeType":"YulExpressionStatement","src":"9792:67:56"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9875:6:56"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9883:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9868:6:56"},"nodeType":"YulFunctionCall","src":"9868:26:56"},"nodeType":"YulExpressionStatement","src":"9868:26:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9914:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"9922:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9910:3:56"},"nodeType":"YulFunctionCall","src":"9910:15:56"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9952:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"9963:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9948:3:56"},"nodeType":"YulFunctionCall","src":"9948:20:56"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9927:20:56"},"nodeType":"YulFunctionCall","src":"9927:42:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9903:6:56"},"nodeType":"YulFunctionCall","src":"9903:67:56"},"nodeType":"YulExpressionStatement","src":"9903:67:56"},{"nodeType":"YulAssignment","src":"9979:16:56","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"9989:6:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9979:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_MintCallbackData_$2945_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8959:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8970:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8982:6:56","type":""}],"src":"8889:1112:56"},{"body":{"nodeType":"YulBlock","src":"10106:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"10153:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10162:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"10170:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10155:6:56"},"nodeType":"YulFunctionCall","src":"10155:22:56"},"nodeType":"YulExpressionStatement","src":"10155:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10127:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"10136:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10123:3:56"},"nodeType":"YulFunctionCall","src":"10123:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"10148:3:56","type":"","value":"352"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10119:3:56"},"nodeType":"YulFunctionCall","src":"10119:33:56"},"nodeType":"YulIf","src":"10116:2:56"},{"nodeType":"YulAssignment","src":"10188:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"10198:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10188:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_MintParams_$3936_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10072:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10083:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10095:6:56","type":""}],"src":"10006:207:56"},{"body":{"nodeType":"YulBlock","src":"10288:189:56","statements":[{"body":{"nodeType":"YulBlock","src":"10334:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10343:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"10351:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10336:6:56"},"nodeType":"YulFunctionCall","src":"10336:22:56"},"nodeType":"YulExpressionStatement","src":"10336:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10309:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"10318:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10305:3:56"},"nodeType":"YulFunctionCall","src":"10305:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"10330:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10301:3:56"},"nodeType":"YulFunctionCall","src":"10301:32:56"},"nodeType":"YulIf","src":"10298:2:56"},{"nodeType":"YulVariableDeclaration","src":"10369:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10395:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10382:12:56"},"nodeType":"YulFunctionCall","src":"10382:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10373:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10441:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10414:26:56"},"nodeType":"YulFunctionCall","src":"10414:33:56"},"nodeType":"YulExpressionStatement","src":"10414:33:56"},{"nodeType":"YulAssignment","src":"10456:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"10466:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10456:6:56"}]}]},"name":"abi_decode_tuple_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10254:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10265:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10277:6:56","type":""}],"src":"10218:259:56"},{"body":{"nodeType":"YulBlock","src":"10580:301:56","statements":[{"body":{"nodeType":"YulBlock","src":"10626:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10635:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"10643:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10628:6:56"},"nodeType":"YulFunctionCall","src":"10628:22:56"},"nodeType":"YulExpressionStatement","src":"10628:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10601:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"10610:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10597:3:56"},"nodeType":"YulFunctionCall","src":"10597:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"10622:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10593:3:56"},"nodeType":"YulFunctionCall","src":"10593:32:56"},"nodeType":"YulIf","src":"10590:2:56"},{"nodeType":"YulVariableDeclaration","src":"10661:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10680:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10674:5:56"},"nodeType":"YulFunctionCall","src":"10674:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10665:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10726:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10699:26:56"},"nodeType":"YulFunctionCall","src":"10699:33:56"},"nodeType":"YulExpressionStatement","src":"10699:33:56"},{"nodeType":"YulAssignment","src":"10741:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"10751:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10741:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"10765:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10790:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10801:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10786:3:56"},"nodeType":"YulFunctionCall","src":"10786:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10780:5:56"},"nodeType":"YulFunctionCall","src":"10780:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"10769:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"10841:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10814:26:56"},"nodeType":"YulFunctionCall","src":"10814:35:56"},"nodeType":"YulExpressionStatement","src":"10814:35:56"},{"nodeType":"YulAssignment","src":"10858:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"10868:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10858:6:56"}]}]},"name":"abi_decode_tuple_t_uint128t_uint128_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10538:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10549:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10561:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10569:6:56","type":""}],"src":"10482:399:56"},{"body":{"nodeType":"YulBlock","src":"11035:510:56","statements":[{"body":{"nodeType":"YulBlock","src":"11082:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11091:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"11099:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11084:6:56"},"nodeType":"YulFunctionCall","src":"11084:22:56"},"nodeType":"YulExpressionStatement","src":"11084:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11056:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"11065:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11052:3:56"},"nodeType":"YulFunctionCall","src":"11052:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"11077:3:56","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11048:3:56"},"nodeType":"YulFunctionCall","src":"11048:33:56"},"nodeType":"YulIf","src":"11045:2:56"},{"nodeType":"YulVariableDeclaration","src":"11117:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11136:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11130:5:56"},"nodeType":"YulFunctionCall","src":"11130:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11121:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11182:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"11155:26:56"},"nodeType":"YulFunctionCall","src":"11155:33:56"},"nodeType":"YulExpressionStatement","src":"11155:33:56"},{"nodeType":"YulAssignment","src":"11197:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"11207:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11197:6:56"}]},{"nodeType":"YulAssignment","src":"11221:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11241:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11252:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11237:3:56"},"nodeType":"YulFunctionCall","src":"11237:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11231:5:56"},"nodeType":"YulFunctionCall","src":"11231:25:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"11221:6:56"}]},{"nodeType":"YulAssignment","src":"11265:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11285:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11296:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11281:3:56"},"nodeType":"YulFunctionCall","src":"11281:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11275:5:56"},"nodeType":"YulFunctionCall","src":"11275:25:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"11265:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"11309:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11334:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11345:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11330:3:56"},"nodeType":"YulFunctionCall","src":"11330:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11324:5:56"},"nodeType":"YulFunctionCall","src":"11324:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"11313:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"11385:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"11358:26:56"},"nodeType":"YulFunctionCall","src":"11358:35:56"},"nodeType":"YulExpressionStatement","src":"11358:35:56"},{"nodeType":"YulAssignment","src":"11402:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"11412:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"11402:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"11428:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11453:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11464:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11449:3:56"},"nodeType":"YulFunctionCall","src":"11449:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11443:5:56"},"nodeType":"YulFunctionCall","src":"11443:26:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"11432:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"11505:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"11478:26:56"},"nodeType":"YulFunctionCall","src":"11478:35:56"},"nodeType":"YulExpressionStatement","src":"11478:35:56"},{"nodeType":"YulAssignment","src":"11522:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"11532:7:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"11522:6:56"}]}]},"name":"abi_decode_tuple_t_uint128t_uint256t_uint256t_uint128t_uint128_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10969:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10980:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10992:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11000:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11008:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"11016:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"11024:6:56","type":""}],"src":"10886:659:56"},{"body":{"nodeType":"YulBlock","src":"11723:743:56","statements":[{"body":{"nodeType":"YulBlock","src":"11770:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11779:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"11787:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11772:6:56"},"nodeType":"YulFunctionCall","src":"11772:22:56"},"nodeType":"YulExpressionStatement","src":"11772:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11744:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"11753:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11740:3:56"},"nodeType":"YulFunctionCall","src":"11740:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"11765:3:56","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11736:3:56"},"nodeType":"YulFunctionCall","src":"11736:33:56"},"nodeType":"YulIf","src":"11733:2:56"},{"nodeType":"YulVariableDeclaration","src":"11805:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11824:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11818:5:56"},"nodeType":"YulFunctionCall","src":"11818:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11809:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11870:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"11843:26:56"},"nodeType":"YulFunctionCall","src":"11843:33:56"},"nodeType":"YulExpressionStatement","src":"11843:33:56"},{"nodeType":"YulAssignment","src":"11885:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"11895:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11885:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"11909:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11934:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11945:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11930:3:56"},"nodeType":"YulFunctionCall","src":"11930:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11924:5:56"},"nodeType":"YulFunctionCall","src":"11924:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"11913:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"11983:7:56"}],"functionName":{"name":"validator_revert_t_int24","nodeType":"YulIdentifier","src":"11958:24:56"},"nodeType":"YulFunctionCall","src":"11958:33:56"},"nodeType":"YulExpressionStatement","src":"11958:33:56"},{"nodeType":"YulAssignment","src":"12000:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"12010:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12000:6:56"}]},{"nodeType":"YulAssignment","src":"12026:60:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12071:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12082:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12067:3:56"},"nodeType":"YulFunctionCall","src":"12067:18:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"12036:30:56"},"nodeType":"YulFunctionCall","src":"12036:50:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"12026:6:56"}]},{"nodeType":"YulAssignment","src":"12095:60:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12140:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12151:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12136:3:56"},"nodeType":"YulFunctionCall","src":"12136:18:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"12105:30:56"},"nodeType":"YulFunctionCall","src":"12105:50:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"12095:6:56"}]},{"nodeType":"YulAssignment","src":"12164:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12209:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12220:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12205:3:56"},"nodeType":"YulFunctionCall","src":"12205:19:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"12174:30:56"},"nodeType":"YulFunctionCall","src":"12174:51:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"12164:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"12234:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12259:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12270:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12255:3:56"},"nodeType":"YulFunctionCall","src":"12255:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12249:5:56"},"nodeType":"YulFunctionCall","src":"12249:26:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"12238:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"12309:7:56"}],"functionName":{"name":"validator_revert_t_uint8","nodeType":"YulIdentifier","src":"12284:24:56"},"nodeType":"YulFunctionCall","src":"12284:33:56"},"nodeType":"YulExpressionStatement","src":"12284:33:56"},{"nodeType":"YulAssignment","src":"12326:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"12336:7:56"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"12326:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"12352:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12377:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12388:3:56","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12373:3:56"},"nodeType":"YulFunctionCall","src":"12373:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12367:5:56"},"nodeType":"YulFunctionCall","src":"12367:26:56"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"12356:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"12426:7:56"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"12402:23:56"},"nodeType":"YulFunctionCall","src":"12402:32:56"},"nodeType":"YulExpressionStatement","src":"12402:32:56"},{"nodeType":"YulAssignment","src":"12443:17:56","value":{"name":"value_3","nodeType":"YulIdentifier","src":"12453:7:56"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"12443:6:56"}]}]},"name":"abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11641:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11652:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11664:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11672:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11680:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"11688:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"11696:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"11704:6:56","type":""},{"name":"value6","nodeType":"YulTypedName","src":"11712:6:56","type":""}],"src":"11550:916:56"},{"body":{"nodeType":"YulBlock","src":"12540:127:56","statements":[{"body":{"nodeType":"YulBlock","src":"12586:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12595:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"12603:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12588:6:56"},"nodeType":"YulFunctionCall","src":"12588:22:56"},"nodeType":"YulExpressionStatement","src":"12588:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12561:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"12570:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12557:3:56"},"nodeType":"YulFunctionCall","src":"12557:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"12582:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12553:3:56"},"nodeType":"YulFunctionCall","src":"12553:32:56"},"nodeType":"YulIf","src":"12550:2:56"},{"nodeType":"YulAssignment","src":"12621:40:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12651:9:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"12631:19:56"},"nodeType":"YulFunctionCall","src":"12631:30:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12621:6:56"}]}]},"name":"abi_decode_tuple_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12506:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12517:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12529:6:56","type":""}],"src":"12471:196:56"},{"body":{"nodeType":"YulBlock","src":"12742:120:56","statements":[{"body":{"nodeType":"YulBlock","src":"12788:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12797:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"12805:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12790:6:56"},"nodeType":"YulFunctionCall","src":"12790:22:56"},"nodeType":"YulExpressionStatement","src":"12790:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12763:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"12772:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12759:3:56"},"nodeType":"YulFunctionCall","src":"12759:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"12784:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12755:3:56"},"nodeType":"YulFunctionCall","src":"12755:32:56"},"nodeType":"YulIf","src":"12752:2:56"},{"nodeType":"YulAssignment","src":"12823:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12846:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12833:12:56"},"nodeType":"YulFunctionCall","src":"12833:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12823:6:56"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12708:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12719:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12731:6:56","type":""}],"src":"12672:190:56"},{"body":{"nodeType":"YulBlock","src":"12954:240:56","statements":[{"body":{"nodeType":"YulBlock","src":"13000:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13009:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"13017:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13002:6:56"},"nodeType":"YulFunctionCall","src":"13002:22:56"},"nodeType":"YulExpressionStatement","src":"13002:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12975:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"12984:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12971:3:56"},"nodeType":"YulFunctionCall","src":"12971:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"12996:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12967:3:56"},"nodeType":"YulFunctionCall","src":"12967:32:56"},"nodeType":"YulIf","src":"12964:2:56"},{"nodeType":"YulAssignment","src":"13035:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13058:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13045:12:56"},"nodeType":"YulFunctionCall","src":"13045:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13035:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"13077:45:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13107:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"13118:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13103:3:56"},"nodeType":"YulFunctionCall","src":"13103:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13090:12:56"},"nodeType":"YulFunctionCall","src":"13090:32:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"13081:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13158:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"13131:26:56"},"nodeType":"YulFunctionCall","src":"13131:33:56"},"nodeType":"YulExpressionStatement","src":"13131:33:56"},{"nodeType":"YulAssignment","src":"13173:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"13183:5:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13173:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12912:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12923:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12935:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12943:6:56","type":""}],"src":"12867:327:56"},{"body":{"nodeType":"YulBlock","src":"13297:157:56","statements":[{"body":{"nodeType":"YulBlock","src":"13343:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13352:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"13360:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13345:6:56"},"nodeType":"YulFunctionCall","src":"13345:22:56"},"nodeType":"YulExpressionStatement","src":"13345:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13318:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"13327:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13314:3:56"},"nodeType":"YulFunctionCall","src":"13314:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"13339:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13310:3:56"},"nodeType":"YulFunctionCall","src":"13310:32:56"},"nodeType":"YulIf","src":"13307:2:56"},{"nodeType":"YulAssignment","src":"13378:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13394:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13388:5:56"},"nodeType":"YulFunctionCall","src":"13388:16:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13378:6:56"}]},{"nodeType":"YulAssignment","src":"13413:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13433:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"13444:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13429:3:56"},"nodeType":"YulFunctionCall","src":"13429:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13423:5:56"},"nodeType":"YulFunctionCall","src":"13423:25:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13413:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13255:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13266:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13278:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13286:6:56","type":""}],"src":"13199:255:56"},{"body":{"nodeType":"YulBlock","src":"13582:654:56","statements":[{"body":{"nodeType":"YulBlock","src":"13628:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13637:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"13645:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13630:6:56"},"nodeType":"YulFunctionCall","src":"13630:22:56"},"nodeType":"YulExpressionStatement","src":"13630:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13603:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"13612:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13599:3:56"},"nodeType":"YulFunctionCall","src":"13599:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"13624:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13595:3:56"},"nodeType":"YulFunctionCall","src":"13595:32:56"},"nodeType":"YulIf","src":"13592:2:56"},{"nodeType":"YulAssignment","src":"13663:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13686:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13673:12:56"},"nodeType":"YulFunctionCall","src":"13673:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13663:6:56"}]},{"nodeType":"YulAssignment","src":"13705:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13732:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"13743:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13728:3:56"},"nodeType":"YulFunctionCall","src":"13728:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13715:12:56"},"nodeType":"YulFunctionCall","src":"13715:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13705:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"13756:46:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13787:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"13798:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13783:3:56"},"nodeType":"YulFunctionCall","src":"13783:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13770:12:56"},"nodeType":"YulFunctionCall","src":"13770:32:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13760:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13811:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"13821:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13815:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"13866:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13875:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"13883:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13868:6:56"},"nodeType":"YulFunctionCall","src":"13868:22:56"},"nodeType":"YulExpressionStatement","src":"13868:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13854:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"13862:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13851:2:56"},"nodeType":"YulFunctionCall","src":"13851:14:56"},"nodeType":"YulIf","src":"13848:2:56"},{"nodeType":"YulVariableDeclaration","src":"13901:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13915:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"13926:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13911:3:56"},"nodeType":"YulFunctionCall","src":"13911:22:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"13905:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"13981:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13990:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"13998:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13983:6:56"},"nodeType":"YulFunctionCall","src":"13983:22:56"},"nodeType":"YulExpressionStatement","src":"13983:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"13960:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"13964:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13956:3:56"},"nodeType":"YulFunctionCall","src":"13956:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13971:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13952:3:56"},"nodeType":"YulFunctionCall","src":"13952:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13945:6:56"},"nodeType":"YulFunctionCall","src":"13945:35:56"},"nodeType":"YulIf","src":"13942:2:56"},{"nodeType":"YulVariableDeclaration","src":"14016:30:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"14043:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14030:12:56"},"nodeType":"YulFunctionCall","src":"14030:16:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14020:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"14073:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"14082:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"14090:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14075:6:56"},"nodeType":"YulFunctionCall","src":"14075:22:56"},"nodeType":"YulExpressionStatement","src":"14075:22:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14061:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"14069:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14058:2:56"},"nodeType":"YulFunctionCall","src":"14058:14:56"},"nodeType":"YulIf","src":"14055:2:56"},{"body":{"nodeType":"YulBlock","src":"14149:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"14158:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"14166:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14151:6:56"},"nodeType":"YulFunctionCall","src":"14151:22:56"},"nodeType":"YulExpressionStatement","src":"14151:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"14122:2:56"},{"name":"length","nodeType":"YulIdentifier","src":"14126:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14118:3:56"},"nodeType":"YulFunctionCall","src":"14118:15:56"},{"kind":"number","nodeType":"YulLiteral","src":"14135:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14114:3:56"},"nodeType":"YulFunctionCall","src":"14114:24:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14140:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14111:2:56"},"nodeType":"YulFunctionCall","src":"14111:37:56"},"nodeType":"YulIf","src":"14108:2:56"},{"nodeType":"YulAssignment","src":"14184:21:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"14198:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"14202:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14194:3:56"},"nodeType":"YulFunctionCall","src":"14194:11:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"14184:6:56"}]},{"nodeType":"YulAssignment","src":"14214:16:56","value":{"name":"length","nodeType":"YulIdentifier","src":"14224:6:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"14214:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13524:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13535:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13547:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13555:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"13563:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"13571:6:56","type":""}],"src":"13459:777:56"},{"body":{"nodeType":"YulBlock","src":"14292:208:56","statements":[{"nodeType":"YulVariableDeclaration","src":"14302:26:56","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14322:5:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14316:5:56"},"nodeType":"YulFunctionCall","src":"14316:12:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14306:6:56","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14344:3:56"},{"name":"length","nodeType":"YulIdentifier","src":"14349:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14337:6:56"},"nodeType":"YulFunctionCall","src":"14337:19:56"},"nodeType":"YulExpressionStatement","src":"14337:19:56"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14391:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"14398:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14387:3:56"},"nodeType":"YulFunctionCall","src":"14387:16:56"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14409:3:56"},{"kind":"number","nodeType":"YulLiteral","src":"14414:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14405:3:56"},"nodeType":"YulFunctionCall","src":"14405:14:56"},{"name":"length","nodeType":"YulIdentifier","src":"14421:6:56"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"14365:21:56"},"nodeType":"YulFunctionCall","src":"14365:63:56"},"nodeType":"YulExpressionStatement","src":"14365:63:56"},{"nodeType":"YulAssignment","src":"14437:57:56","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14452:3:56"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14465:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"14473:2:56","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14461:3:56"},"nodeType":"YulFunctionCall","src":"14461:15:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14482:2:56","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"14478:3:56"},"nodeType":"YulFunctionCall","src":"14478:7:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14457:3:56"},"nodeType":"YulFunctionCall","src":"14457:29:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14448:3:56"},"nodeType":"YulFunctionCall","src":"14448:39:56"},{"kind":"number","nodeType":"YulLiteral","src":"14489:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14444:3:56"},"nodeType":"YulFunctionCall","src":"14444:50:56"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14437:3:56"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14269:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14276:3:56","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14284:3:56","type":""}],"src":"14241:259:56"},{"body":{"nodeType":"YulBlock","src":"14549:49:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14566:3:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14582:1:56","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"14585:5:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"14571:10:56"},"nodeType":"YulFunctionCall","src":"14571:20:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14559:6:56"},"nodeType":"YulFunctionCall","src":"14559:33:56"},"nodeType":"YulExpressionStatement","src":"14559:33:56"}]},"name":"abi_encode_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14533:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14540:3:56","type":""}],"src":"14505:93:56"},{"body":{"nodeType":"YulBlock","src":"14649:60:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14666:3:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14675:5:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14690:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"14695:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14686:3:56"},"nodeType":"YulFunctionCall","src":"14686:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"14699:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14682:3:56"},"nodeType":"YulFunctionCall","src":"14682:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14671:3:56"},"nodeType":"YulFunctionCall","src":"14671:31:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14659:6:56"},"nodeType":"YulFunctionCall","src":"14659:44:56"},"nodeType":"YulExpressionStatement","src":"14659:44:56"}]},"name":"abi_encode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14633:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14640:3:56","type":""}],"src":"14603:106:56"},{"body":{"nodeType":"YulBlock","src":"14861:126:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14884:3:56"},{"name":"value0","nodeType":"YulIdentifier","src":"14889:6:56"},{"name":"value1","nodeType":"YulIdentifier","src":"14897:6:56"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"14871:12:56"},"nodeType":"YulFunctionCall","src":"14871:33:56"},"nodeType":"YulExpressionStatement","src":"14871:33:56"},{"nodeType":"YulVariableDeclaration","src":"14913:26:56","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14927:3:56"},{"name":"value1","nodeType":"YulIdentifier","src":"14932:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14923:3:56"},"nodeType":"YulFunctionCall","src":"14923:16:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"14917:2:56","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"14955:2:56"},{"name":"end","nodeType":"YulIdentifier","src":"14959:3:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14948:6:56"},"nodeType":"YulFunctionCall","src":"14948:15:56"},"nodeType":"YulExpressionStatement","src":"14948:15:56"},{"nodeType":"YulAssignment","src":"14972:9:56","value":{"name":"_1","nodeType":"YulIdentifier","src":"14979:2:56"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14972:3:56"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14829:3:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14834:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14842:6:56","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14853:3:56","type":""}],"src":"14714:273:56"},{"body":{"nodeType":"YulBlock","src":"15093:102:56","statements":[{"nodeType":"YulAssignment","src":"15103:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15115:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15126:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15111:3:56"},"nodeType":"YulFunctionCall","src":"15111:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15103:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15145:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15160:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15176:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"15181:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15172:3:56"},"nodeType":"YulFunctionCall","src":"15172:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"15185:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15168:3:56"},"nodeType":"YulFunctionCall","src":"15168:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15156:3:56"},"nodeType":"YulFunctionCall","src":"15156:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15138:6:56"},"nodeType":"YulFunctionCall","src":"15138:51:56"},"nodeType":"YulExpressionStatement","src":"15138:51:56"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15062:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15073:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15084:4:56","type":""}],"src":"14992:203:56"},{"body":{"nodeType":"YulBlock","src":"15423:357:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15440:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15455:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15471:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"15476:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15467:3:56"},"nodeType":"YulFunctionCall","src":"15467:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"15480:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15463:3:56"},"nodeType":"YulFunctionCall","src":"15463:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15451:3:56"},"nodeType":"YulFunctionCall","src":"15451:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15433:6:56"},"nodeType":"YulFunctionCall","src":"15433:51:56"},"nodeType":"YulExpressionStatement","src":"15433:51:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15504:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15515:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15500:3:56"},"nodeType":"YulFunctionCall","src":"15500:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15531:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"15534:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"15520:10:56"},"nodeType":"YulFunctionCall","src":"15520:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15493:6:56"},"nodeType":"YulFunctionCall","src":"15493:49:56"},"nodeType":"YulExpressionStatement","src":"15493:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15562:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15573:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15558:3:56"},"nodeType":"YulFunctionCall","src":"15558:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15589:1:56","type":"","value":"2"},{"name":"value2","nodeType":"YulIdentifier","src":"15592:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"15578:10:56"},"nodeType":"YulFunctionCall","src":"15578:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15551:6:56"},"nodeType":"YulFunctionCall","src":"15551:49:56"},"nodeType":"YulExpressionStatement","src":"15551:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15620:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15631:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15616:3:56"},"nodeType":"YulFunctionCall","src":"15616:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"15640:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15656:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"15661:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15652:3:56"},"nodeType":"YulFunctionCall","src":"15652:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"15665:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15648:3:56"},"nodeType":"YulFunctionCall","src":"15648:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15636:3:56"},"nodeType":"YulFunctionCall","src":"15636:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15609:6:56"},"nodeType":"YulFunctionCall","src":"15609:60:56"},"nodeType":"YulExpressionStatement","src":"15609:60:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15689:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15700:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15685:3:56"},"nodeType":"YulFunctionCall","src":"15685:19:56"},{"kind":"number","nodeType":"YulLiteral","src":"15706:3:56","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15678:6:56"},"nodeType":"YulFunctionCall","src":"15678:32:56"},"nodeType":"YulExpressionStatement","src":"15678:32:56"},{"nodeType":"YulAssignment","src":"15719:55:56","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"15746:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15758:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15769:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15754:3:56"},"nodeType":"YulFunctionCall","src":"15754:19:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"15727:18:56"},"nodeType":"YulFunctionCall","src":"15727:47:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15719:4:56"}]}]},"name":"abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_bytes_memory_ptr__to_t_address_t_int24_t_int24_t_uint128_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15360:9:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"15371:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"15379:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15387:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15395:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15403:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15414:4:56","type":""}],"src":"15200:580:56"},{"body":{"nodeType":"YulBlock","src":"15990:362:56","statements":[{"nodeType":"YulAssignment","src":"16000:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16012:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16023:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16008:3:56"},"nodeType":"YulFunctionCall","src":"16008:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16000:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16043:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16058:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16074:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"16079:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16070:3:56"},"nodeType":"YulFunctionCall","src":"16070:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"16083:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16066:3:56"},"nodeType":"YulFunctionCall","src":"16066:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16054:3:56"},"nodeType":"YulFunctionCall","src":"16054:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16036:6:56"},"nodeType":"YulFunctionCall","src":"16036:51:56"},"nodeType":"YulExpressionStatement","src":"16036:51:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16107:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16118:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16103:3:56"},"nodeType":"YulFunctionCall","src":"16103:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16134:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"16137:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"16123:10:56"},"nodeType":"YulFunctionCall","src":"16123:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16096:6:56"},"nodeType":"YulFunctionCall","src":"16096:49:56"},"nodeType":"YulExpressionStatement","src":"16096:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16165:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16176:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16161:3:56"},"nodeType":"YulFunctionCall","src":"16161:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16192:1:56","type":"","value":"2"},{"name":"value2","nodeType":"YulIdentifier","src":"16195:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"16181:10:56"},"nodeType":"YulFunctionCall","src":"16181:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16154:6:56"},"nodeType":"YulFunctionCall","src":"16154:49:56"},"nodeType":"YulExpressionStatement","src":"16154:49:56"},{"nodeType":"YulVariableDeclaration","src":"16212:29:56","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16230:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"16235:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16226:3:56"},"nodeType":"YulFunctionCall","src":"16226:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"16239:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16222:3:56"},"nodeType":"YulFunctionCall","src":"16222:19:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16216:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16261:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16272:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16257:3:56"},"nodeType":"YulFunctionCall","src":"16257:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"16281:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16289:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16277:3:56"},"nodeType":"YulFunctionCall","src":"16277:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16250:6:56"},"nodeType":"YulFunctionCall","src":"16250:43:56"},"nodeType":"YulExpressionStatement","src":"16250:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16313:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16324:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16309:3:56"},"nodeType":"YulFunctionCall","src":"16309:19:56"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"16334:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16342:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16330:3:56"},"nodeType":"YulFunctionCall","src":"16330:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16302:6:56"},"nodeType":"YulFunctionCall","src":"16302:44:56"},"nodeType":"YulExpressionStatement","src":"16302:44:56"}]},"name":"abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_uint128__to_t_address_t_int24_t_int24_t_uint128_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15927:9:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"15938:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"15946:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15954:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15962:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15970:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15981:4:56","type":""}],"src":"15785:567:56"},{"body":{"nodeType":"YulBlock","src":"16514:244:56","statements":[{"nodeType":"YulAssignment","src":"16524:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16536:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16547:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16532:3:56"},"nodeType":"YulFunctionCall","src":"16532:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16524:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16566:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16581:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16597:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"16602:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16593:3:56"},"nodeType":"YulFunctionCall","src":"16593:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"16606:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16589:3:56"},"nodeType":"YulFunctionCall","src":"16589:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16577:3:56"},"nodeType":"YulFunctionCall","src":"16577:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16559:6:56"},"nodeType":"YulFunctionCall","src":"16559:51:56"},"nodeType":"YulExpressionStatement","src":"16559:51:56"},{"nodeType":"YulVariableDeclaration","src":"16619:29:56","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16637:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"16642:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16633:3:56"},"nodeType":"YulFunctionCall","src":"16633:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"16646:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16629:3:56"},"nodeType":"YulFunctionCall","src":"16629:19:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16623:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16668:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16679:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16664:3:56"},"nodeType":"YulFunctionCall","src":"16664:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"16688:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16696:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16684:3:56"},"nodeType":"YulFunctionCall","src":"16684:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16657:6:56"},"nodeType":"YulFunctionCall","src":"16657:43:56"},"nodeType":"YulExpressionStatement","src":"16657:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16720:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16731:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16716:3:56"},"nodeType":"YulFunctionCall","src":"16716:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"16740:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16748:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16736:3:56"},"nodeType":"YulFunctionCall","src":"16736:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16709:6:56"},"nodeType":"YulFunctionCall","src":"16709:43:56"},"nodeType":"YulExpressionStatement","src":"16709:43:56"}]},"name":"abi_encode_tuple_t_address_t_uint128_t_uint128__to_t_address_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16467:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16478:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16486:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16494:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16505:4:56","type":""}],"src":"16357:401:56"},{"body":{"nodeType":"YulBlock","src":"17000:397:56","statements":[{"nodeType":"YulAssignment","src":"17010:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17022:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17033:3:56","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17018:3:56"},"nodeType":"YulFunctionCall","src":"17018:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17010:4:56"}]},{"nodeType":"YulVariableDeclaration","src":"17046:29:56","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17064:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"17069:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"17060:3:56"},"nodeType":"YulFunctionCall","src":"17060:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"17073:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17056:3:56"},"nodeType":"YulFunctionCall","src":"17056:19:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"17050:2:56","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17091:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17106:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17114:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17102:3:56"},"nodeType":"YulFunctionCall","src":"17102:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17084:6:56"},"nodeType":"YulFunctionCall","src":"17084:34:56"},"nodeType":"YulExpressionStatement","src":"17084:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17138:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17149:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17134:3:56"},"nodeType":"YulFunctionCall","src":"17134:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"17154:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17127:6:56"},"nodeType":"YulFunctionCall","src":"17127:34:56"},"nodeType":"YulExpressionStatement","src":"17127:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17181:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17192:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17177:3:56"},"nodeType":"YulFunctionCall","src":"17177:18:56"},{"name":"value2","nodeType":"YulIdentifier","src":"17197:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17170:6:56"},"nodeType":"YulFunctionCall","src":"17170:34:56"},"nodeType":"YulExpressionStatement","src":"17170:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17224:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17235:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17220:3:56"},"nodeType":"YulFunctionCall","src":"17220:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"17244:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17252:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17240:3:56"},"nodeType":"YulFunctionCall","src":"17240:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17213:6:56"},"nodeType":"YulFunctionCall","src":"17213:43:56"},"nodeType":"YulExpressionStatement","src":"17213:43:56"},{"nodeType":"YulVariableDeclaration","src":"17265:20:56","value":{"kind":"number","nodeType":"YulLiteral","src":"17275:10:56","type":"","value":"0xffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"17269:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17305:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17316:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17301:3:56"},"nodeType":"YulFunctionCall","src":"17301:19:56"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"17326:6:56"},{"name":"_2","nodeType":"YulIdentifier","src":"17334:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17322:3:56"},"nodeType":"YulFunctionCall","src":"17322:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17294:6:56"},"nodeType":"YulFunctionCall","src":"17294:44:56"},"nodeType":"YulExpressionStatement","src":"17294:44:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17358:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17369:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17354:3:56"},"nodeType":"YulFunctionCall","src":"17354:19:56"},{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"17379:6:56"},{"name":"_2","nodeType":"YulIdentifier","src":"17387:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17375:3:56"},"nodeType":"YulFunctionCall","src":"17375:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17347:6:56"},"nodeType":"YulFunctionCall","src":"17347:44:56"},"nodeType":"YulExpressionStatement","src":"17347:44:56"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256_t_address_t_uint32_t_uint32__to_t_address_t_uint256_t_uint256_t_address_t_uint32_t_uint32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16929:9:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"16940:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"16948:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"16956:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16964:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16972:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16980:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16991:4:56","type":""}],"src":"16763:634:56"},{"body":{"nodeType":"YulBlock","src":"17571:637:56","statements":[{"nodeType":"YulVariableDeclaration","src":"17581:12:56","value":{"kind":"number","nodeType":"YulLiteral","src":"17591:2:56","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"17585:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17602:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17620:9:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17631:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17616:3:56"},"nodeType":"YulFunctionCall","src":"17616:18:56"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"17606:6:56","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17650:9:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17661:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17643:6:56"},"nodeType":"YulFunctionCall","src":"17643:21:56"},"nodeType":"YulExpressionStatement","src":"17643:21:56"},{"nodeType":"YulVariableDeclaration","src":"17673:17:56","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"17684:6:56"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"17677:3:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17699:27:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17719:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17713:5:56"},"nodeType":"YulFunctionCall","src":"17713:13:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"17703:6:56","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"17742:6:56"},{"name":"length","nodeType":"YulIdentifier","src":"17750:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17735:6:56"},"nodeType":"YulFunctionCall","src":"17735:22:56"},"nodeType":"YulExpressionStatement","src":"17735:22:56"},{"nodeType":"YulAssignment","src":"17766:25:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17777:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17788:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17773:3:56"},"nodeType":"YulFunctionCall","src":"17773:18:56"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17766:3:56"}]},{"nodeType":"YulVariableDeclaration","src":"17800:54:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17822:9:56"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"17837:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17845:2:56"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"17833:3:56"},"nodeType":"YulFunctionCall","src":"17833:15:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17818:3:56"},"nodeType":"YulFunctionCall","src":"17818:31:56"},{"kind":"number","nodeType":"YulLiteral","src":"17851:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17814:3:56"},"nodeType":"YulFunctionCall","src":"17814:40:56"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"17804:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17863:29:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17881:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"17889:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17877:3:56"},"nodeType":"YulFunctionCall","src":"17877:15:56"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"17867:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17901:13:56","value":{"name":"tail","nodeType":"YulIdentifier","src":"17910:4:56"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"17905:1:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"17972:207:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17993:3:56"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"18006:6:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"18014:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18002:3:56"},"nodeType":"YulFunctionCall","src":"18002:22:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18030:2:56","type":"","value":"63"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"18026:3:56"},"nodeType":"YulFunctionCall","src":"18026:7:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17998:3:56"},"nodeType":"YulFunctionCall","src":"17998:36:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17986:6:56"},"nodeType":"YulFunctionCall","src":"17986:49:56"},"nodeType":"YulExpressionStatement","src":"17986:49:56"},{"nodeType":"YulAssignment","src":"18048:51:56","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"18083:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18077:5:56"},"nodeType":"YulFunctionCall","src":"18077:13:56"},{"name":"tail_2","nodeType":"YulIdentifier","src":"18092:6:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"18058:18:56"},"nodeType":"YulFunctionCall","src":"18058:41:56"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"18048:6:56"}]},{"nodeType":"YulAssignment","src":"18112:25:56","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"18126:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"18134:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18122:3:56"},"nodeType":"YulFunctionCall","src":"18122:15:56"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"18112:6:56"}]},{"nodeType":"YulAssignment","src":"18150:19:56","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18161:3:56"},{"name":"_1","nodeType":"YulIdentifier","src":"18166:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18157:3:56"},"nodeType":"YulFunctionCall","src":"18157:12:56"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18150:3:56"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17934:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"17937:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"17931:2:56"},"nodeType":"YulFunctionCall","src":"17931:13:56"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"17945:18:56","statements":[{"nodeType":"YulAssignment","src":"17947:14:56","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17956:1:56"},{"kind":"number","nodeType":"YulLiteral","src":"17959:1:56","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17952:3:56"},"nodeType":"YulFunctionCall","src":"17952:9:56"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"17947:1:56"}]}]},"pre":{"nodeType":"YulBlock","src":"17927:3:56","statements":[]},"src":"17923:256:56"},{"nodeType":"YulAssignment","src":"18188:14:56","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"18196:6:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18188:4:56"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17540:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17551:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17562:4:56","type":""}],"src":"17402:806:56"},{"body":{"nodeType":"YulBlock","src":"18308:92:56","statements":[{"nodeType":"YulAssignment","src":"18318:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18330:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18341:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18326:3:56"},"nodeType":"YulFunctionCall","src":"18326:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18318:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18360:9:56"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18385:6:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18378:6:56"},"nodeType":"YulFunctionCall","src":"18378:14:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18371:6:56"},"nodeType":"YulFunctionCall","src":"18371:22:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18353:6:56"},"nodeType":"YulFunctionCall","src":"18353:41:56"},"nodeType":"YulExpressionStatement","src":"18353:41:56"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18277:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18288:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18299:4:56","type":""}],"src":"18213:187:56"},{"body":{"nodeType":"YulBlock","src":"18506:76:56","statements":[{"nodeType":"YulAssignment","src":"18516:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18528:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18539:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18524:3:56"},"nodeType":"YulFunctionCall","src":"18524:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18516:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18558:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"18569:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18551:6:56"},"nodeType":"YulFunctionCall","src":"18551:25:56"},"nodeType":"YulExpressionStatement","src":"18551:25:56"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18475:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18486:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18497:4:56","type":""}],"src":"18405:177:56"},{"body":{"nodeType":"YulBlock","src":"18751:145:56","statements":[{"nodeType":"YulAssignment","src":"18761:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18773:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18784:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18769:3:56"},"nodeType":"YulFunctionCall","src":"18769:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18761:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18803:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18818:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18834:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"18839:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"18830:3:56"},"nodeType":"YulFunctionCall","src":"18830:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"18843:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18826:3:56"},"nodeType":"YulFunctionCall","src":"18826:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18814:3:56"},"nodeType":"YulFunctionCall","src":"18814:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18796:6:56"},"nodeType":"YulFunctionCall","src":"18796:51:56"},"nodeType":"YulExpressionStatement","src":"18796:51:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18867:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18878:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18863:3:56"},"nodeType":"YulFunctionCall","src":"18863:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"18883:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18856:6:56"},"nodeType":"YulFunctionCall","src":"18856:34:56"},"nodeType":"YulExpressionStatement","src":"18856:34:56"}]},"name":"abi_encode_tuple_t_contract$_NonfungiblePositionManager_$2720_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18712:9:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18723:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18731:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18742:4:56","type":""}],"src":"18587:309:56"},{"body":{"nodeType":"YulBlock","src":"19022:149:56","statements":[{"nodeType":"YulAssignment","src":"19032:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19044:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19055:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19040:3:56"},"nodeType":"YulFunctionCall","src":"19040:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19032:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19074:9:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19096:1:56","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"19099:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19085:10:56"},"nodeType":"YulFunctionCall","src":"19085:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19067:6:56"},"nodeType":"YulFunctionCall","src":"19067:40:56"},"nodeType":"YulExpressionStatement","src":"19067:40:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19127:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19138:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19123:3:56"},"nodeType":"YulFunctionCall","src":"19123:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19154:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"19157:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19143:10:56"},"nodeType":"YulFunctionCall","src":"19143:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19116:6:56"},"nodeType":"YulFunctionCall","src":"19116:49:56"},"nodeType":"YulExpressionStatement","src":"19116:49:56"}]},"name":"abi_encode_tuple_t_int24_t_int24__to_t_int24_t_int24__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18983:9:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18994:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19002:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19013:4:56","type":""}],"src":"18901:270:56"},{"body":{"nodeType":"YulBlock","src":"19333:218:56","statements":[{"nodeType":"YulAssignment","src":"19343:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19355:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19366:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19351:3:56"},"nodeType":"YulFunctionCall","src":"19351:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19343:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19385:9:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19407:1:56","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"19410:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19396:10:56"},"nodeType":"YulFunctionCall","src":"19396:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19378:6:56"},"nodeType":"YulFunctionCall","src":"19378:40:56"},"nodeType":"YulExpressionStatement","src":"19378:40:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19438:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19449:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19434:3:56"},"nodeType":"YulFunctionCall","src":"19434:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19465:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"19468:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19454:10:56"},"nodeType":"YulFunctionCall","src":"19454:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19427:6:56"},"nodeType":"YulFunctionCall","src":"19427:49:56"},"nodeType":"YulExpressionStatement","src":"19427:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19496:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19507:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19492:3:56"},"nodeType":"YulFunctionCall","src":"19492:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"19516:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19532:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"19537:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"19528:3:56"},"nodeType":"YulFunctionCall","src":"19528:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"19541:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19524:3:56"},"nodeType":"YulFunctionCall","src":"19524:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"19512:3:56"},"nodeType":"YulFunctionCall","src":"19512:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19485:6:56"},"nodeType":"YulFunctionCall","src":"19485:60:56"},"nodeType":"YulExpressionStatement","src":"19485:60:56"}]},"name":"abi_encode_tuple_t_int24_t_int24_t_rational_0_by_1__to_t_int24_t_int24_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19286:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"19297:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19305:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19313:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19324:4:56","type":""}],"src":"19176:375:56"},{"body":{"nodeType":"YulBlock","src":"19705:218:56","statements":[{"nodeType":"YulAssignment","src":"19715:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19727:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19738:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19723:3:56"},"nodeType":"YulFunctionCall","src":"19723:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19715:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19757:9:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19779:1:56","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"19782:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19768:10:56"},"nodeType":"YulFunctionCall","src":"19768:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19750:6:56"},"nodeType":"YulFunctionCall","src":"19750:40:56"},"nodeType":"YulExpressionStatement","src":"19750:40:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19810:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19821:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19806:3:56"},"nodeType":"YulFunctionCall","src":"19806:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19837:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"19840:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"19826:10:56"},"nodeType":"YulFunctionCall","src":"19826:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19799:6:56"},"nodeType":"YulFunctionCall","src":"19799:49:56"},"nodeType":"YulExpressionStatement","src":"19799:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19868:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19879:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19864:3:56"},"nodeType":"YulFunctionCall","src":"19864:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"19888:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19904:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"19909:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"19900:3:56"},"nodeType":"YulFunctionCall","src":"19900:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"19913:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19896:3:56"},"nodeType":"YulFunctionCall","src":"19896:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"19884:3:56"},"nodeType":"YulFunctionCall","src":"19884:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19857:6:56"},"nodeType":"YulFunctionCall","src":"19857:60:56"},"nodeType":"YulExpressionStatement","src":"19857:60:56"}]},"name":"abi_encode_tuple_t_int24_t_int24_t_uint128__to_t_int24_t_int24_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19658:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"19669:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19677:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19685:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19696:4:56","type":""}],"src":"19556:367:56"},{"body":{"nodeType":"YulBlock","src":"20049:100:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20066:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20077:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20059:6:56"},"nodeType":"YulFunctionCall","src":"20059:21:56"},"nodeType":"YulExpressionStatement","src":"20059:21:56"},{"nodeType":"YulAssignment","src":"20089:54:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20116:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20128:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20139:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20124:3:56"},"nodeType":"YulFunctionCall","src":"20124:18:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"20097:18:56"},"nodeType":"YulFunctionCall","src":"20097:46:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20089:4:56"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20018:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20029:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20040:4:56","type":""}],"src":"19928:221:56"},{"body":{"nodeType":"YulBlock","src":"20328:162:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20345:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20356:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20338:6:56"},"nodeType":"YulFunctionCall","src":"20338:21:56"},"nodeType":"YulExpressionStatement","src":"20338:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20379:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20390:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20375:3:56"},"nodeType":"YulFunctionCall","src":"20375:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"20395:2:56","type":"","value":"12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20368:6:56"},"nodeType":"YulFunctionCall","src":"20368:30:56"},"nodeType":"YulExpressionStatement","src":"20368:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20418:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20429:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20414:3:56"},"nodeType":"YulFunctionCall","src":"20414:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"20434:14:56","type":"","value":"Not approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20407:6:56"},"nodeType":"YulFunctionCall","src":"20407:42:56"},"nodeType":"YulExpressionStatement","src":"20407:42:56"},{"nodeType":"YulAssignment","src":"20458:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20470:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20481:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20466:3:56"},"nodeType":"YulFunctionCall","src":"20466:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20458:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_70356c467a9713064077b7fa0ff1a074c93b1f7c48415be181b9cd799b628361__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20305:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20319:4:56","type":""}],"src":"20154:336:56"},{"body":{"nodeType":"YulBlock","src":"20669:175:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20686:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20697:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20679:6:56"},"nodeType":"YulFunctionCall","src":"20679:21:56"},"nodeType":"YulExpressionStatement","src":"20679:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20720:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20731:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20716:3:56"},"nodeType":"YulFunctionCall","src":"20716:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"20736:2:56","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20709:6:56"},"nodeType":"YulFunctionCall","src":"20709:30:56"},"nodeType":"YulExpressionStatement","src":"20709:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20759:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20770:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20755:3:56"},"nodeType":"YulFunctionCall","src":"20755:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"20775:27:56","type":"","value":"ERC721: nonexistent token"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20748:6:56"},"nodeType":"YulFunctionCall","src":"20748:55:56"},"nodeType":"YulExpressionStatement","src":"20748:55:56"},{"nodeType":"YulAssignment","src":"20812:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20824:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20835:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20820:3:56"},"nodeType":"YulFunctionCall","src":"20820:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20812:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_a34d5d5fb66a7aa1196581d4b63842b184b648ae201438341d04b3396c6896a9__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20646:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20660:4:56","type":""}],"src":"20495:349:56"},{"body":{"nodeType":"YulBlock","src":"21023:170:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21040:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21051:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21033:6:56"},"nodeType":"YulFunctionCall","src":"21033:21:56"},"nodeType":"YulExpressionStatement","src":"21033:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21074:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21085:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21070:3:56"},"nodeType":"YulFunctionCall","src":"21070:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"21090:2:56","type":"","value":"20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21063:6:56"},"nodeType":"YulFunctionCall","src":"21063:30:56"},"nodeType":"YulExpressionStatement","src":"21063:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21113:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21124:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21109:3:56"},"nodeType":"YulFunctionCall","src":"21109:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"21129:22:56","type":"","value":"Price slippage check"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21102:6:56"},"nodeType":"YulFunctionCall","src":"21102:50:56"},"nodeType":"YulExpressionStatement","src":"21102:50:56"},{"nodeType":"YulAssignment","src":"21161:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21173:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21184:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21169:3:56"},"nodeType":"YulFunctionCall","src":"21169:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21161:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21000:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21014:4:56","type":""}],"src":"20849:344:56"},{"body":{"nodeType":"YulBlock","src":"21372:166:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21389:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21400:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21382:6:56"},"nodeType":"YulFunctionCall","src":"21382:21:56"},"nodeType":"YulExpressionStatement","src":"21382:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21423:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21434:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21419:3:56"},"nodeType":"YulFunctionCall","src":"21419:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"21439:2:56","type":"","value":"16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21412:6:56"},"nodeType":"YulFunctionCall","src":"21412:30:56"},"nodeType":"YulExpressionStatement","src":"21412:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21462:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21473:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21458:3:56"},"nodeType":"YulFunctionCall","src":"21458:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"21478:18:56","type":"","value":"Invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21451:6:56"},"nodeType":"YulFunctionCall","src":"21451:46:56"},"nodeType":"YulExpressionStatement","src":"21451:46:56"},{"nodeType":"YulAssignment","src":"21506:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21518:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21529:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21514:3:56"},"nodeType":"YulFunctionCall","src":"21514:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21506:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_b44e5a2e76d616f71f124d91f8560c46215c55a45ba6a1b6e492edf2295dcc48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21349:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21363:4:56","type":""}],"src":"21198:340:56"},{"body":{"nodeType":"YulBlock","src":"21712:373:56","statements":[{"nodeType":"YulAssignment","src":"21722:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21734:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21745:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21730:3:56"},"nodeType":"YulFunctionCall","src":"21730:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21722:4:56"}]},{"nodeType":"YulVariableDeclaration","src":"21758:23:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21774:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21768:5:56"},"nodeType":"YulFunctionCall","src":"21768:13:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"21762:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"21790:29:56","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21808:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"21813:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"21804:3:56"},"nodeType":"YulFunctionCall","src":"21804:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"21817:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21800:3:56"},"nodeType":"YulFunctionCall","src":"21800:19:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"21794:2:56","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21835:9:56"},{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"21856:2:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21850:5:56"},"nodeType":"YulFunctionCall","src":"21850:9:56"},{"name":"_2","nodeType":"YulIdentifier","src":"21861:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21846:3:56"},"nodeType":"YulFunctionCall","src":"21846:18:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21828:6:56"},"nodeType":"YulFunctionCall","src":"21828:37:56"},"nodeType":"YulExpressionStatement","src":"21828:37:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21885:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21896:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21881:3:56"},"nodeType":"YulFunctionCall","src":"21881:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"21917:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"21921:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21913:3:56"},"nodeType":"YulFunctionCall","src":"21913:13:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21907:5:56"},"nodeType":"YulFunctionCall","src":"21907:20:56"},{"name":"_2","nodeType":"YulIdentifier","src":"21929:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21903:3:56"},"nodeType":"YulFunctionCall","src":"21903:29:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21874:6:56"},"nodeType":"YulFunctionCall","src":"21874:59:56"},"nodeType":"YulExpressionStatement","src":"21874:59:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21953:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21964:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21949:3:56"},"nodeType":"YulFunctionCall","src":"21949:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"21985:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"21989:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21981:3:56"},"nodeType":"YulFunctionCall","src":"21981:13:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21975:5:56"},"nodeType":"YulFunctionCall","src":"21975:20:56"},{"kind":"number","nodeType":"YulLiteral","src":"21997:8:56","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21971:3:56"},"nodeType":"YulFunctionCall","src":"21971:35:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21942:6:56"},"nodeType":"YulFunctionCall","src":"21942:65:56"},"nodeType":"YulExpressionStatement","src":"21942:65:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22027:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22038:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22023:3:56"},"nodeType":"YulFunctionCall","src":"22023:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22059:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"22067:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22055:3:56"},"nodeType":"YulFunctionCall","src":"22055:17:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22049:5:56"},"nodeType":"YulFunctionCall","src":"22049:24:56"},{"name":"_2","nodeType":"YulIdentifier","src":"22075:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22045:3:56"},"nodeType":"YulFunctionCall","src":"22045:33:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22016:6:56"},"nodeType":"YulFunctionCall","src":"22016:63:56"},"nodeType":"YulExpressionStatement","src":"22016:63:56"}]},"name":"abi_encode_tuple_t_struct$_MintCallbackData_$2945_memory_ptr__to_t_struct$_MintCallbackData_$2945_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21681:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21692:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21703:4:56","type":""}],"src":"21543:542:56"},{"body":{"nodeType":"YulBlock","src":"22247:188:56","statements":[{"nodeType":"YulAssignment","src":"22257:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22269:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22280:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22265:3:56"},"nodeType":"YulFunctionCall","src":"22265:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22257:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22299:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22314:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22330:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"22335:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"22326:3:56"},"nodeType":"YulFunctionCall","src":"22326:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"22339:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22322:3:56"},"nodeType":"YulFunctionCall","src":"22322:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22310:3:56"},"nodeType":"YulFunctionCall","src":"22310:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22292:6:56"},"nodeType":"YulFunctionCall","src":"22292:51:56"},"nodeType":"YulExpressionStatement","src":"22292:51:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22363:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22374:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22359:3:56"},"nodeType":"YulFunctionCall","src":"22359:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"22379:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22352:6:56"},"nodeType":"YulFunctionCall","src":"22352:34:56"},"nodeType":"YulExpressionStatement","src":"22352:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22406:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22417:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22402:3:56"},"nodeType":"YulFunctionCall","src":"22402:18:56"},{"name":"value2","nodeType":"YulIdentifier","src":"22422:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22395:6:56"},"nodeType":"YulFunctionCall","src":"22395:34:56"},"nodeType":"YulExpressionStatement","src":"22395:34:56"}]},"name":"abi_encode_tuple_t_uint128_t_uint256_t_uint256__to_t_uint128_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22200:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22211:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22219:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22227:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22238:4:56","type":""}],"src":"22090:345:56"},{"body":{"nodeType":"YulBlock","src":"22621:279:56","statements":[{"nodeType":"YulAssignment","src":"22631:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22643:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22654:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22639:3:56"},"nodeType":"YulFunctionCall","src":"22639:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22631:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22674:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22689:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22705:3:56","type":"","value":"192"},{"kind":"number","nodeType":"YulLiteral","src":"22710:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"22701:3:56"},"nodeType":"YulFunctionCall","src":"22701:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"22714:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22697:3:56"},"nodeType":"YulFunctionCall","src":"22697:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22685:3:56"},"nodeType":"YulFunctionCall","src":"22685:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22667:6:56"},"nodeType":"YulFunctionCall","src":"22667:51:56"},"nodeType":"YulExpressionStatement","src":"22667:51:56"},{"nodeType":"YulVariableDeclaration","src":"22727:20:56","value":{"kind":"number","nodeType":"YulLiteral","src":"22737:10:56","type":"","value":"0xffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"22731:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22767:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22778:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22763:3:56"},"nodeType":"YulFunctionCall","src":"22763:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"22787:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"22795:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22783:3:56"},"nodeType":"YulFunctionCall","src":"22783:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22756:6:56"},"nodeType":"YulFunctionCall","src":"22756:43:56"},"nodeType":"YulExpressionStatement","src":"22756:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22819:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22830:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22815:3:56"},"nodeType":"YulFunctionCall","src":"22815:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"22839:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"22847:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22835:3:56"},"nodeType":"YulFunctionCall","src":"22835:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22808:6:56"},"nodeType":"YulFunctionCall","src":"22808:43:56"},"nodeType":"YulExpressionStatement","src":"22808:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22871:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22882:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22867:3:56"},"nodeType":"YulFunctionCall","src":"22867:18:56"},{"name":"value3","nodeType":"YulIdentifier","src":"22887:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22860:6:56"},"nodeType":"YulFunctionCall","src":"22860:34:56"},"nodeType":"YulExpressionStatement","src":"22860:34:56"}]},"name":"abi_encode_tuple_t_uint192_t_uint32_t_uint32_t_uint256__to_t_uint192_t_uint32_t_uint32_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22566:9:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"22577:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22585:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22593:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22601:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22612:4:56","type":""}],"src":"22440:460:56"},{"body":{"nodeType":"YulBlock","src":"23006:76:56","statements":[{"nodeType":"YulAssignment","src":"23016:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23028:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23039:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23024:3:56"},"nodeType":"YulFunctionCall","src":"23024:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23016:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23058:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"23069:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23051:6:56"},"nodeType":"YulFunctionCall","src":"23051:25:56"},"nodeType":"YulExpressionStatement","src":"23051:25:56"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22975:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22986:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22997:4:56","type":""}],"src":"22905:177:56"},{"body":{"nodeType":"YulBlock","src":"23272:232:56","statements":[{"nodeType":"YulAssignment","src":"23282:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23294:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23305:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23290:3:56"},"nodeType":"YulFunctionCall","src":"23290:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23282:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23325:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"23336:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23318:6:56"},"nodeType":"YulFunctionCall","src":"23318:25:56"},"nodeType":"YulExpressionStatement","src":"23318:25:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23363:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23374:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23359:3:56"},"nodeType":"YulFunctionCall","src":"23359:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"23383:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23399:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"23404:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"23395:3:56"},"nodeType":"YulFunctionCall","src":"23395:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"23408:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23391:3:56"},"nodeType":"YulFunctionCall","src":"23391:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"23379:3:56"},"nodeType":"YulFunctionCall","src":"23379:32:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23352:6:56"},"nodeType":"YulFunctionCall","src":"23352:60:56"},"nodeType":"YulExpressionStatement","src":"23352:60:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23432:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23443:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23428:3:56"},"nodeType":"YulFunctionCall","src":"23428:18:56"},{"name":"value2","nodeType":"YulIdentifier","src":"23448:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23421:6:56"},"nodeType":"YulFunctionCall","src":"23421:34:56"},"nodeType":"YulExpressionStatement","src":"23421:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23475:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23486:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23471:3:56"},"nodeType":"YulFunctionCall","src":"23471:18:56"},{"name":"value3","nodeType":"YulIdentifier","src":"23491:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23464:6:56"},"nodeType":"YulFunctionCall","src":"23464:34:56"},"nodeType":"YulExpressionStatement","src":"23464:34:56"}]},"name":"abi_encode_tuple_t_uint256_t_uint128_t_uint256_t_uint256__to_t_uint256_t_uint128_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23217:9:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"23228:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"23236:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23244:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"23252:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23263:4:56","type":""}],"src":"23087:417:56"},{"body":{"nodeType":"YulBlock","src":"23638:119:56","statements":[{"nodeType":"YulAssignment","src":"23648:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23660:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23671:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23656:3:56"},"nodeType":"YulFunctionCall","src":"23656:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23648:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23690:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"23701:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23683:6:56"},"nodeType":"YulFunctionCall","src":"23683:25:56"},"nodeType":"YulExpressionStatement","src":"23683:25:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23728:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23739:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23724:3:56"},"nodeType":"YulFunctionCall","src":"23724:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"23744:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23717:6:56"},"nodeType":"YulFunctionCall","src":"23717:34:56"},"nodeType":"YulExpressionStatement","src":"23717:34:56"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23599:9:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23610:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"23618:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23629:4:56","type":""}],"src":"23509:248:56"},{"body":{"nodeType":"YulBlock","src":"24161:734:56","statements":[{"nodeType":"YulAssignment","src":"24171:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24183:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24194:3:56","type":"","value":"384"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24179:3:56"},"nodeType":"YulFunctionCall","src":"24179:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24171:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24214:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"24229:6:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24245:2:56","type":"","value":"96"},{"kind":"number","nodeType":"YulLiteral","src":"24249:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"24241:3:56"},"nodeType":"YulFunctionCall","src":"24241:10:56"},{"kind":"number","nodeType":"YulLiteral","src":"24253:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24237:3:56"},"nodeType":"YulFunctionCall","src":"24237:18:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24225:3:56"},"nodeType":"YulFunctionCall","src":"24225:31:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24207:6:56"},"nodeType":"YulFunctionCall","src":"24207:50:56"},"nodeType":"YulExpressionStatement","src":"24207:50:56"},{"nodeType":"YulVariableDeclaration","src":"24266:29:56","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24284:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"24289:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"24280:3:56"},"nodeType":"YulFunctionCall","src":"24280:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"24293:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24276:3:56"},"nodeType":"YulFunctionCall","src":"24276:19:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"24270:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24315:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24326:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24311:3:56"},"nodeType":"YulFunctionCall","src":"24311:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"24335:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"24343:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24331:3:56"},"nodeType":"YulFunctionCall","src":"24331:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24304:6:56"},"nodeType":"YulFunctionCall","src":"24304:43:56"},"nodeType":"YulExpressionStatement","src":"24304:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24367:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24378:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24363:3:56"},"nodeType":"YulFunctionCall","src":"24363:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"24387:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"24395:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24383:3:56"},"nodeType":"YulFunctionCall","src":"24383:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24356:6:56"},"nodeType":"YulFunctionCall","src":"24356:43:56"},"nodeType":"YulExpressionStatement","src":"24356:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24419:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24430:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24415:3:56"},"nodeType":"YulFunctionCall","src":"24415:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"24439:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"24447:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24435:3:56"},"nodeType":"YulFunctionCall","src":"24435:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24408:6:56"},"nodeType":"YulFunctionCall","src":"24408:43:56"},"nodeType":"YulExpressionStatement","src":"24408:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24471:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24482:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24467:3:56"},"nodeType":"YulFunctionCall","src":"24467:19:56"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"24492:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"24500:8:56","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24488:3:56"},"nodeType":"YulFunctionCall","src":"24488:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24460:6:56"},"nodeType":"YulFunctionCall","src":"24460:50:56"},"nodeType":"YulExpressionStatement","src":"24460:50:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24530:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24541:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24526:3:56"},"nodeType":"YulFunctionCall","src":"24526:19:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24558:1:56","type":"","value":"2"},{"name":"value5","nodeType":"YulIdentifier","src":"24561:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"24547:10:56"},"nodeType":"YulFunctionCall","src":"24547:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24519:6:56"},"nodeType":"YulFunctionCall","src":"24519:50:56"},"nodeType":"YulExpressionStatement","src":"24519:50:56"},{"expression":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"24597:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24609:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24620:3:56","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24605:3:56"},"nodeType":"YulFunctionCall","src":"24605:19:56"}],"functionName":{"name":"abi_encode_t_int24","nodeType":"YulIdentifier","src":"24578:18:56"},"nodeType":"YulFunctionCall","src":"24578:47:56"},"nodeType":"YulExpressionStatement","src":"24578:47:56"},{"expression":{"arguments":[{"name":"value7","nodeType":"YulIdentifier","src":"24655:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24667:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24678:3:56","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24663:3:56"},"nodeType":"YulFunctionCall","src":"24663:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"24634:20:56"},"nodeType":"YulFunctionCall","src":"24634:49:56"},"nodeType":"YulExpressionStatement","src":"24634:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24703:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24714:3:56","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24699:3:56"},"nodeType":"YulFunctionCall","src":"24699:19:56"},{"name":"value8","nodeType":"YulIdentifier","src":"24720:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24692:6:56"},"nodeType":"YulFunctionCall","src":"24692:35:56"},"nodeType":"YulExpressionStatement","src":"24692:35:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24747:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24758:3:56","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24743:3:56"},"nodeType":"YulFunctionCall","src":"24743:19:56"},{"name":"value9","nodeType":"YulIdentifier","src":"24764:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24736:6:56"},"nodeType":"YulFunctionCall","src":"24736:35:56"},"nodeType":"YulExpressionStatement","src":"24736:35:56"},{"expression":{"arguments":[{"name":"value10","nodeType":"YulIdentifier","src":"24801:7:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24814:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24825:3:56","type":"","value":"320"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24810:3:56"},"nodeType":"YulFunctionCall","src":"24810:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"24780:20:56"},"nodeType":"YulFunctionCall","src":"24780:50:56"},"nodeType":"YulExpressionStatement","src":"24780:50:56"},{"expression":{"arguments":[{"name":"value11","nodeType":"YulIdentifier","src":"24860:7:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24873:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"24884:3:56","type":"","value":"352"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24869:3:56"},"nodeType":"YulFunctionCall","src":"24869:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"24839:20:56"},"nodeType":"YulFunctionCall","src":"24839:50:56"},"nodeType":"YulExpressionStatement","src":"24839:50:56"}]},"name":"abi_encode_tuple_t_uint96_t_address_t_address_t_address_t_uint24_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint128_t_uint128__to_t_uint96_t_address_t_address_t_address_t_uint24_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint128_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24040:9:56","type":""},{"name":"value11","nodeType":"YulTypedName","src":"24051:7:56","type":""},{"name":"value10","nodeType":"YulTypedName","src":"24060:7:56","type":""},{"name":"value9","nodeType":"YulTypedName","src":"24069:6:56","type":""},{"name":"value8","nodeType":"YulTypedName","src":"24077:6:56","type":""},{"name":"value7","nodeType":"YulTypedName","src":"24085:6:56","type":""},{"name":"value6","nodeType":"YulTypedName","src":"24093:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"24101:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"24109:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"24117:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"24125:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"24133:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"24141:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24152:4:56","type":""}],"src":"23762:1133:56"},{"body":{"nodeType":"YulBlock","src":"24994:439:56","statements":[{"nodeType":"YulVariableDeclaration","src":"25004:51:56","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"25043:11:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"25030:12:56"},"nodeType":"YulFunctionCall","src":"25030:25:56"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"25008:18:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"25144:22:56","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"25153:4:56"},{"name":"addr","nodeType":"YulIdentifier","src":"25159:4:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25146:6:56"},"nodeType":"YulFunctionCall","src":"25146:18:56"},"nodeType":"YulExpressionStatement","src":"25146:18:56"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"25078:18:56"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"25106:12:56"},"nodeType":"YulFunctionCall","src":"25106:14:56"},{"name":"base_ref","nodeType":"YulIdentifier","src":"25122:8:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25102:3:56"},"nodeType":"YulFunctionCall","src":"25102:29:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25137:2:56","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"25133:3:56"},"nodeType":"YulFunctionCall","src":"25133:7:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25098:3:56"},"nodeType":"YulFunctionCall","src":"25098:43:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25074:3:56"},"nodeType":"YulFunctionCall","src":"25074:68:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25067:6:56"},"nodeType":"YulFunctionCall","src":"25067:76:56"},"nodeType":"YulIf","src":"25064:2:56"},{"nodeType":"YulVariableDeclaration","src":"25175:47:56","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"25193:8:56"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"25203:18:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25189:3:56"},"nodeType":"YulFunctionCall","src":"25189:33:56"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"25179:6:56","type":""}]},{"nodeType":"YulAssignment","src":"25231:30:56","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"25254:6:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"25241:12:56"},"nodeType":"YulFunctionCall","src":"25241:20:56"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"25231:6:56"}]},{"body":{"nodeType":"YulBlock","src":"25304:22:56","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"25313:4:56"},{"name":"addr","nodeType":"YulIdentifier","src":"25319:4:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25306:6:56"},"nodeType":"YulFunctionCall","src":"25306:18:56"},"nodeType":"YulExpressionStatement","src":"25306:18:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25276:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"25284:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"25273:2:56"},"nodeType":"YulFunctionCall","src":"25273:30:56"},"nodeType":"YulIf","src":"25270:2:56"},{"nodeType":"YulAssignment","src":"25335:25:56","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"25347:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"25355:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25343:3:56"},"nodeType":"YulFunctionCall","src":"25343:17:56"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"25335:4:56"}]},{"body":{"nodeType":"YulBlock","src":"25411:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25420:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25423:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25413:6:56"},"nodeType":"YulFunctionCall","src":"25413:12:56"},"nodeType":"YulExpressionStatement","src":"25413:12:56"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"25376:4:56"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"25386:12:56"},"nodeType":"YulFunctionCall","src":"25386:14:56"},{"name":"length","nodeType":"YulIdentifier","src":"25402:6:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25382:3:56"},"nodeType":"YulFunctionCall","src":"25382:27:56"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"25372:3:56"},"nodeType":"YulFunctionCall","src":"25372:38:56"},"nodeType":"YulIf","src":"25369:2:56"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"24951:8:56","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"24961:11:56","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"24977:4:56","type":""},{"name":"length","nodeType":"YulTypedName","src":"24983:6:56","type":""}],"src":"24900:533:56"},{"body":{"nodeType":"YulBlock","src":"25482:198:56","statements":[{"nodeType":"YulAssignment","src":"25492:19:56","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25508:2:56","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"25502:5:56"},"nodeType":"YulFunctionCall","src":"25502:9:56"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"25492:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"25520:35:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"25542:6:56"},{"name":"size","nodeType":"YulIdentifier","src":"25550:4:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25538:3:56"},"nodeType":"YulFunctionCall","src":"25538:17:56"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"25524:10:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"25630:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"25632:7:56"},"nodeType":"YulFunctionCall","src":"25632:9:56"},"nodeType":"YulExpressionStatement","src":"25632:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"25573:10:56"},{"kind":"number","nodeType":"YulLiteral","src":"25585:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"25570:2:56"},"nodeType":"YulFunctionCall","src":"25570:34:56"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"25609:10:56"},{"name":"memPtr","nodeType":"YulIdentifier","src":"25621:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"25606:2:56"},"nodeType":"YulFunctionCall","src":"25606:22:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"25567:2:56"},"nodeType":"YulFunctionCall","src":"25567:62:56"},"nodeType":"YulIf","src":"25564:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25659:2:56","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"25663:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25652:6:56"},"nodeType":"YulFunctionCall","src":"25652:22:56"},"nodeType":"YulExpressionStatement","src":"25652:22:56"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"25462:4:56","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"25471:6:56","type":""}],"src":"25438:242:56"},{"body":{"nodeType":"YulBlock","src":"25744:122:56","statements":[{"body":{"nodeType":"YulBlock","src":"25788:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"25790:7:56"},"nodeType":"YulFunctionCall","src":"25790:9:56"},"nodeType":"YulExpressionStatement","src":"25790:9:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25760:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"25768:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"25757:2:56"},"nodeType":"YulFunctionCall","src":"25757:30:56"},"nodeType":"YulIf","src":"25754:2:56"},{"nodeType":"YulAssignment","src":"25810:50:56","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25830:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"25838:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25826:3:56"},"nodeType":"YulFunctionCall","src":"25826:17:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25849:2:56","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"25845:3:56"},"nodeType":"YulFunctionCall","src":"25845:7:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"25822:3:56"},"nodeType":"YulFunctionCall","src":"25822:31:56"},{"kind":"number","nodeType":"YulLiteral","src":"25855:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25818:3:56"},"nodeType":"YulFunctionCall","src":"25818:42:56"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"25810:4:56"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"25724:6:56","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"25735:4:56","type":""}],"src":"25685:181:56"},{"body":{"nodeType":"YulBlock","src":"25924:205:56","statements":[{"nodeType":"YulVariableDeclaration","src":"25934:10:56","value":{"kind":"number","nodeType":"YulLiteral","src":"25943:1:56","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"25938:1:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"26003:63:56","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"26028:3:56"},{"name":"i","nodeType":"YulIdentifier","src":"26033:1:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26024:3:56"},"nodeType":"YulFunctionCall","src":"26024:11:56"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"26047:3:56"},{"name":"i","nodeType":"YulIdentifier","src":"26052:1:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26043:3:56"},"nodeType":"YulFunctionCall","src":"26043:11:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26037:5:56"},"nodeType":"YulFunctionCall","src":"26037:18:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26017:6:56"},"nodeType":"YulFunctionCall","src":"26017:39:56"},"nodeType":"YulExpressionStatement","src":"26017:39:56"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"25964:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"25967:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"25961:2:56"},"nodeType":"YulFunctionCall","src":"25961:13:56"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"25975:19:56","statements":[{"nodeType":"YulAssignment","src":"25977:15:56","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"25986:1:56"},{"kind":"number","nodeType":"YulLiteral","src":"25989:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25982:3:56"},"nodeType":"YulFunctionCall","src":"25982:10:56"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"25977:1:56"}]}]},"pre":{"nodeType":"YulBlock","src":"25957:3:56","statements":[]},"src":"25953:113:56"},{"body":{"nodeType":"YulBlock","src":"26092:31:56","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"26105:3:56"},{"name":"length","nodeType":"YulIdentifier","src":"26110:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26101:3:56"},"nodeType":"YulFunctionCall","src":"26101:16:56"},{"kind":"number","nodeType":"YulLiteral","src":"26119:1:56","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26094:6:56"},"nodeType":"YulFunctionCall","src":"26094:27:56"},"nodeType":"YulExpressionStatement","src":"26094:27:56"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"26081:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"26084:6:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"26078:2:56"},"nodeType":"YulFunctionCall","src":"26078:13:56"},"nodeType":"YulIf","src":"26075:2:56"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"25902:3:56","type":""},{"name":"dst","nodeType":"YulTypedName","src":"25907:3:56","type":""},{"name":"length","nodeType":"YulTypedName","src":"25912:6:56","type":""}],"src":"25871:258:56"},{"body":{"nodeType":"YulBlock","src":"26181:86:56","statements":[{"body":{"nodeType":"YulBlock","src":"26245:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26254:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26257:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26247:6:56"},"nodeType":"YulFunctionCall","src":"26247:12:56"},"nodeType":"YulExpressionStatement","src":"26247:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26204:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26215:5:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26230:3:56","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"26235:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"26226:3:56"},"nodeType":"YulFunctionCall","src":"26226:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"26239:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26222:3:56"},"nodeType":"YulFunctionCall","src":"26222:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"26211:3:56"},"nodeType":"YulFunctionCall","src":"26211:31:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"26201:2:56"},"nodeType":"YulFunctionCall","src":"26201:42:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26194:6:56"},"nodeType":"YulFunctionCall","src":"26194:50:56"},"nodeType":"YulIf","src":"26191:2:56"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26170:5:56","type":""}],"src":"26134:133:56"},{"body":{"nodeType":"YulBlock","src":"26316:76:56","statements":[{"body":{"nodeType":"YulBlock","src":"26370:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26379:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26382:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26372:6:56"},"nodeType":"YulFunctionCall","src":"26372:12:56"},"nodeType":"YulExpressionStatement","src":"26372:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26339:5:56"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26360:5:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26353:6:56"},"nodeType":"YulFunctionCall","src":"26353:13:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26346:6:56"},"nodeType":"YulFunctionCall","src":"26346:21:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"26336:2:56"},"nodeType":"YulFunctionCall","src":"26336:32:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26329:6:56"},"nodeType":"YulFunctionCall","src":"26329:40:56"},"nodeType":"YulIf","src":"26326:2:56"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26305:5:56","type":""}],"src":"26272:120:56"},{"body":{"nodeType":"YulBlock","src":"26442:75:56","statements":[{"body":{"nodeType":"YulBlock","src":"26495:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26504:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26507:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26497:6:56"},"nodeType":"YulFunctionCall","src":"26497:12:56"},"nodeType":"YulExpressionStatement","src":"26497:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26465:5:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26483:1:56","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"26486:5:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"26472:10:56"},"nodeType":"YulFunctionCall","src":"26472:20:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"26462:2:56"},"nodeType":"YulFunctionCall","src":"26462:31:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26455:6:56"},"nodeType":"YulFunctionCall","src":"26455:39:56"},"nodeType":"YulIf","src":"26452:2:56"}]},"name":"validator_revert_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26431:5:56","type":""}],"src":"26397:120:56"},{"body":{"nodeType":"YulBlock","src":"26569:86:56","statements":[{"body":{"nodeType":"YulBlock","src":"26633:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26642:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26645:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26635:6:56"},"nodeType":"YulFunctionCall","src":"26635:12:56"},"nodeType":"YulExpressionStatement","src":"26635:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26592:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26603:5:56"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26618:3:56","type":"","value":"128"},{"kind":"number","nodeType":"YulLiteral","src":"26623:1:56","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"26614:3:56"},"nodeType":"YulFunctionCall","src":"26614:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"26627:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26610:3:56"},"nodeType":"YulFunctionCall","src":"26610:19:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"26599:3:56"},"nodeType":"YulFunctionCall","src":"26599:31:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"26589:2:56"},"nodeType":"YulFunctionCall","src":"26589:42:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26582:6:56"},"nodeType":"YulFunctionCall","src":"26582:50:56"},"nodeType":"YulIf","src":"26579:2:56"}]},"name":"validator_revert_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26558:5:56","type":""}],"src":"26522:133:56"},{"body":{"nodeType":"YulBlock","src":"26705:71:56","statements":[{"body":{"nodeType":"YulBlock","src":"26754:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26763:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26766:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26756:6:56"},"nodeType":"YulFunctionCall","src":"26756:12:56"},"nodeType":"YulExpressionStatement","src":"26756:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26728:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26739:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"26746:4:56","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"26735:3:56"},"nodeType":"YulFunctionCall","src":"26735:16:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"26725:2:56"},"nodeType":"YulFunctionCall","src":"26725:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26718:6:56"},"nodeType":"YulFunctionCall","src":"26718:35:56"},"nodeType":"YulIf","src":"26715:2:56"}]},"name":"validator_revert_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26694:5:56","type":""}],"src":"26660:116:56"}]},"contents":"{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n    function abi_decode_t_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_t_uint24(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint24t_uint160(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_t_uint24(add(headStart, 64))\n        let value_2 := calldataload(add(headStart, 96))\n        validator_revert_t_address(value_2)\n        value3 := value_2\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value3, value3) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(value3, value3) }\n        let _2 := calldataload(_1)\n        let array := allocateMemory(array_allocation_size_t_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(value3, value3) }\n        calldatacopy(add(array, 32), add(_1, 32), _2)\n        mstore(add(add(array, _2), 32), value3)\n        value3 := array\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_t_address(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_t_uint8(value_1)\n        value3 := value_1\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value0, value0) }\n        if gt(add(add(_2, mul(length, 32)), 32), dataEnd) { revert(value0, value0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_int24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_int24(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_int56t_uint160t_uint32t_uint192_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := mload(headStart)\n        if iszero(eq(value, signextend(6, value))) { revert(value2, value2) }\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        if iszero(eq(value_2, and(value_2, 0xffffffff))) { revert(value2, value2) }\n        value2 := value_2\n        let value_3 := mload(add(headStart, 96))\n        if iszero(eq(value_3, and(value_3, sub(shl(192, 1), 1)))) { revert(value3, value3) }\n        value3 := value_3\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _2 := mload(_1)\n        let array := allocateMemory(array_allocation_size_t_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(value0, value0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_decode_tuple_t_struct$_CollectParams_$4005_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := headStart\n    }\n    function abi_decode_tuple_t_struct$_DecreaseLiquidityParams_$3986_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value0, value0) }\n        value0 := headStart\n    }\n    function abi_decode_tuple_t_struct$_IncreaseLiquidityParams_$3963_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value0, value0) }\n        value0 := headStart\n    }\n    function abi_decode_tuple_t_struct$_MintCallbackData_$2945_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 128) { revert(value0, value0) }\n        let memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        let _2 := 0xffffffffffffffff\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(0x40, newFreePtr)\n        if slt(_1, 0x60) { revert(value0, value0) }\n        let newFreePtr_1 := add(memPtr, 160)\n        if or(gt(newFreePtr_1, _2), lt(newFreePtr_1, newFreePtr)) { invalid() }\n        mstore(0x40, newFreePtr_1)\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        mstore(newFreePtr, value)\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        mstore(add(memPtr, 0x60), value_1)\n        mstore(add(memPtr, 128), abi_decode_t_uint24(add(headStart, 0x40)))\n        mstore(memPtr, newFreePtr)\n        mstore(add(memPtr, 32), abi_decode_t_address(add(headStart, 0x60)))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_struct$_MintParams_$3936_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 352) { revert(value0, value0) }\n        value0 := headStart\n    }\n    function abi_decode_tuple_t_uint128(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_uint128(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint128t_uint128_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_uint128(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_t_uint128(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint128t_uint256t_uint256t_uint128t_uint128_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := mload(headStart)\n        validator_revert_t_uint128(value)\n        value0 := value\n        value1 := mload(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n        let value_1 := mload(add(headStart, 96))\n        validator_revert_t_uint128(value_1)\n        value3 := value_1\n        let value_2 := mload(add(headStart, 128))\n        validator_revert_t_uint128(value_2)\n        value4 := value_2\n    }\n    function abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(value2, value2) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_t_int24(value_1)\n        value1 := value_1\n        value2 := abi_decode_t_uint16_fromMemory(add(headStart, 64))\n        value3 := abi_decode_t_uint16_fromMemory(add(headStart, 96))\n        value4 := abi_decode_t_uint16_fromMemory(add(headStart, 128))\n        let value_2 := mload(add(headStart, 160))\n        validator_revert_t_uint8(value_2)\n        value5 := value_2\n        let value_3 := mload(add(headStart, 192))\n        validator_revert_t_bool(value_3)\n        value6 := value_3\n    }\n    function abi_decode_tuple_t_uint24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_uint24(headStart)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_t_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value2, value2) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value2, value2) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(value2, value2) }\n        value2 := add(_2, 32)\n        value3 := length\n    }\n    function abi_encode_t_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_t_int24(value, pos)\n    {\n        mstore(pos, signextend(2, value))\n    }\n    function abi_encode_t_uint128(value, pos)\n    {\n        mstore(pos, and(value, sub(shl(128, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, end)\n        end := _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 abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_bytes_memory_ptr__to_t_address_t_int24_t_int24_t_uint128_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), signextend(2, value2))\n        mstore(add(headStart, 96), and(value3, sub(shl(128, 1), 1)))\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_t_bytes(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_uint128__to_t_address_t_int24_t_int24_t_uint128_t_uint128__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), signextend(2, value2))\n        let _1 := sub(shl(128, 1), 1)\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n    }\n    function abi_encode_tuple_t_address_t_uint128_t_uint128__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        let _1 := sub(shl(128, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256_t_address_t_uint32_t_uint32__to_t_address_t_uint256_t_uint256_t_address_t_uint32_t_uint32__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, _1))\n        let _2 := 0xffffffff\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, mul(length, _1)), 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            tail_2 := abi_encode_t_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_contract$_NonfungiblePositionManager_$2720_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_encode_tuple_t_int24_t_int24__to_t_int24_t_int24__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), signextend(2, value1))\n    }\n    function abi_encode_tuple_t_int24_t_int24_t_rational_0_by_1__to_t_int24_t_int24_t_uint128__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), and(value2, sub(shl(128, 1), 1)))\n    }\n    function abi_encode_tuple_t_int24_t_int24_t_uint128__to_t_int24_t_int24_t_uint128__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), and(value2, sub(shl(128, 1), 1)))\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_t_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_70356c467a9713064077b7fa0ff1a074c93b1f7c48415be181b9cd799b628361__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Not approved\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_a34d5d5fb66a7aa1196581d4b63842b184b648ae201438341d04b3396c6896a9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: nonexistent token\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Price slippage check\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b44e5a2e76d616f71f124d91f8560c46215c55a45ba6a1b6e492edf2295dcc48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_struct$_MintCallbackData_$2945_memory_ptr__to_t_struct$_MintCallbackData_$2945_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := mload(value0)\n        let _2 := sub(shl(160, 1), 1)\n        mstore(headStart, and(mload(_1), _2))\n        mstore(add(headStart, 0x20), and(mload(add(_1, 0x20)), _2))\n        mstore(add(headStart, 0x40), and(mload(add(_1, 0x40)), 0xffffff))\n        mstore(add(headStart, 0x60), and(mload(add(value0, 0x20)), _2))\n    }\n    function abi_encode_tuple_t_uint128_t_uint256_t_uint256__to_t_uint128_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(128, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint192_t_uint32_t_uint32_t_uint256__to_t_uint192_t_uint32_t_uint32_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, and(value0, sub(shl(192, 1), 1)))\n        let _1 := 0xffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint128_t_uint256_t_uint256__to_t_uint256_t_uint128_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(128, 1), 1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint96_t_address_t_address_t_address_t_uint24_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint128_t_uint128__to_t_uint96_t_address_t_address_t_address_t_uint24_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint128_t_uint128__fromStack_reversed(headStart, value11, value10, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 384)\n        mstore(headStart, and(value0, sub(shl(96, 1), 1)))\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, 0xffffff))\n        mstore(add(headStart, 160), signextend(2, value5))\n        abi_encode_t_int24(value6, add(headStart, 192))\n        abi_encode_t_uint128(value7, add(headStart, 224))\n        mstore(add(headStart, 256), value8)\n        mstore(add(headStart, 288), value9)\n        abi_encode_t_uint128(value10, add(headStart, 320))\n        abi_encode_t_uint128(value11, add(headStart, 352))\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(addr, addr) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(addr, addr) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(and(add(length, 0x1f), not(31)), 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function validator_revert_t_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function validator_revert_t_int24(value)\n    {\n        if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n    }\n    function validator_revert_t_uint128(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(128, 1), 1)))) { revert(0, 0) }\n    }\n    function validator_revert_t_uint8(value)\n    {\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n}","id":56,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2746":[{"length":32,"start":5313}],"2749":[{"length":32,"start":5346}],"3232":[{"length":32,"start":2631},{"length":32,"start":3432},{"length":32,"start":3631},{"length":32,"start":4175},{"length":32,"start":10785},{"length":32,"start":11401},{"length":32,"start":11933},{"length":32,"start":12881},{"length":32,"start":14683}],"3236":[{"length":32,"start":539},{"length":32,"start":5843},{"length":32,"start":6078},{"length":32,"start":6214},{"length":32,"start":14197},{"length":32,"start":14267},{"length":32,"start":14383}]},"linkReferences":{},"object":"60806040526004361061020b5760003560e01c80634f6ccce7116101145780634f6ccce7146104e35780636352211e146105035780636c0360eb1461052357806370a082311461053857806375e39cec146105585780637ac2ff7b14610588578063883164561461059b57806395d89b41146105be57806397f12a83146105d357806399fbab88146105e6578063a22cb4651461061e578063a4a78f0c1461063e578063ac9650d814610651578063b88d4fde14610671578063c2e3140a14610691578063c45a0155146106a4578063c87b56dd146106b9578063df2ab5bb146106d9578063e70eb392146106ec578063e985e9c5146106ff578063f3995c671461071f578063fc6f7865146107325761027b565b806301ffc9a714610280578063050eb2eb146102b657806306fdde03146102c9578063081812fc146102eb578063095ea7b3146103185780630c49ccbe1461033857806312210e8a1461035957806313ead562146103615780631507a8f41461037457806318160ddd14610394578063219f5d17146103b657806323b872dd146103d857806329048e7b146103f85780632f745c591461040b57806330adf81f1461042b5780633644e515146104405780633beb26c41461045557806342842e0e1461047557806342966c68146104955780634659a494146104a857806349404b7c146104bb5780634aa4a4fc146104ce5761027b565b3661027b57336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610279576040805162461bcd60e51b81526020600482015260096024820152684e6f7420574554483960b81b604482015290519081900360640190fd5b005b600080fd5b34801561028c57600080fd5b506102a061029b366004615436565b610745565b6040516102ad9190615a21565b60405180910390f35b6102796102c4366004615125565b610768565b3480156102d557600080fd5b506102de610792565b6040516102ad9190615a88565b3480156102f757600080fd5b5061030b610306366004615799565b610828565b6040516102ad91906158c2565b34801561032457600080fd5b50610279610333366004615301565b61087b565b61034b610346366004615565565b610951565b6040516102ad929190615bfe565b610279610d3c565b61030b61036f366004615195565b610d46565b34801561038057600080fd5b5061027961038f3660046157f8565b61103a565b3480156103a057600080fd5b506103a96110b8565b6040516102ad9190615a2c565b6103c96103c4366004615576565b6110c9565b6040516102ad93929190615b8c565b3480156103e457600080fd5b506102796103f33660046151ee565b6113a4565b610279610406366004615799565b6113fb565b34801561041757600080fd5b506103a9610426366004615301565b61144d565b34801561043757600080fd5b506103a9611478565b34801561044c57600080fd5b506103a961149c565b34801561046157600080fd5b50610279610470366004615799565b61155a565b34801561048157600080fd5b506102796104903660046151ee565b61155f565b6102796104a3366004615799565b61157a565b6102796104b636600461536d565b611635565b6102796104c93660046157b1565b6116cf565b3480156104da57600080fd5b5061030b611844565b3480156104ef57600080fd5b506103a96104fe366004615799565b611868565b34801561050f57600080fd5b5061030b61051e366004615799565b61187e565b34801561052f57600080fd5b506102de6118a6565b34801561054457600080fd5b506103a9610553366004615125565b6118ab565b34801561056457600080fd5b50610578610573366004615799565b611913565b6040516102ad9493929190615bad565b61027961059636600461536d565b611a60565b6105ae6105a9366004615631565b611df0565b6040516102ad9493929190615bda565b3480156105ca57600080fd5b506102de612379565b6102796105e1366004615125565b6123da565b3480156105f257600080fd5b50610606610601366004615799565b612404565b6040516102ad9c9b9a99989796959493929190615c0c565b34801561062a57600080fd5b506102796106393660046152d4565b612659565b61027961064c36600461536d565b61275a565b61066461065f3660046153c8565b6127f3565b6040516102ad91906159c1565b34801561067d57600080fd5b5061027961068c36600461522e565b612932565b61027961069f36600461536d565b612990565b3480156106b057600080fd5b5061030b612a1f565b3480156106c557600080fd5b506102de6106d4366004615799565b612a43565b6102796106e736600461532c565b612add565b6102796106fa3660046157b1565b612bb5565b34801561070b57600080fd5b506102a061071a36600461515d565b612d01565b61027961072d36600461536d565b612d2f565b61034b61074036600461554e565b612da1565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b61077061324f565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561081e5780601f106107f35761010080835404028352916020019161081e565b820191906000526020600020905b81548152906001019060200180831161080157829003601f168201915b5050505050905090565b6000610833826132fd565b6108585760405162461bcd60e51b815260040161084f90615ac1565b60405180910390fd5b506000908152600c6020526040902054600160601b90046001600160a01b031690565b60006108868261187e565b9050806001600160a01b0316836001600160a01b031614156108d95760405162461bcd60e51b8152600401808060200182810382526021815260200180615f716021913960400191505060405180910390fd5b806001600160a01b03166108eb61330a565b6001600160a01b0316148061090757506109078161071a61330a565b6109425760405162461bcd60e51b8152600401808060200182810382526038815260200180615e7b6038913960400191505060405180910390fd5b61094c838361330e565b505050565b600080823561095f81613384565b836080013561096d816133ad565b600061097f6040870160208801615643565b6001600160801b03161161099257600080fd5b84356000908152600c602090815260409182902060018101549092600160801b9091046001600160801b0316916109cd918901908901615643565b6001600160801b0316816001600160801b031610156109eb57600080fd5b6001828101546001600160501b03166000908152600b60209081526040808320815160608101835281546001600160a01b039081168252919095015490811692850192909252600160a01b90910462ffffff1690830152610a6c7f0000000000000000000000000000000000000000000000000000000000000000836133f8565b9050610a7884826134d7565b60018401546001600160a01b0382169063a34123a790600160501b8104600290810b91600160681b9004900b610ab460408e0160208f01615643565b6040518463ffffffff1660e01b8152600401610ad293929190615a62565b6040805180830381600087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2391906157d5565b909850965060408901358810801590610b40575088606001358710155b610b5c5760405162461bcd60e51b815260040161084f90615af4565b6001840154600090610b85903090600160501b8104600290810b91600160681b9004900b61363c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610bb69190615a2c565b60a06040518083038186803b158015610bce57600080fd5b505afa158015610be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c06919061568d565b50509250925050610c2b87600201548303876001600160801b0316600160801b613691565b6004880180546001600160801b03198116928e016001600160801b039182160181169290921790556003880154610c6c91908303908816600160801b613691565b6004880180546001600160801b03808216938e01600160801b9283900482160116029190911790556002870182905560038701819055610cb260408d0160208e01615643565b86038760010160106101000a8154816001600160801b0302191690836001600160801b031602179055508b600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48d6020016020810190610d159190615643565b8d8d604051610d2693929190615b8c565b60405180910390a2505050505050505050915091565b610d44613740565b565b6000836001600160a01b0316856001600160a01b031610610d6657600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b158015610df157600080fd5b505afa158015610e05573d6000803e3d6000fd5b505050506040513d6020811015610e1b57600080fd5b505190506001600160a01b038116610f51577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b158015610eba57600080fd5b505af1158015610ece573d6000803e3d6000fd5b505050506040513d6020811015610ee457600080fd5b50516040805163f637731d60e01b81526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b158015610f3457600080fd5b505af1158015610f48573d6000803e3d6000fd5b50505050611032565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610f8c57600080fd5b505afa158015610fa0573d6000803e3d6000fd5b505050506040513d60e0811015610fb657600080fd5b505190506001600160a01b03811661103057816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b505050505b505b949350505050565b600061104882840184615587565b90506110787f00000000000000000000000000000000000000000000000000000000000000008260000151613750565b50841561109357805151602082015161109391903388613773565b83156110b1576110b181600001516020015182602001513387613773565b5050505050565b60006110c46002613903565b905090565b60008060008360a001356110dc816133ad565b84356000908152600c602090815260408083206001808201546001600160501b0381168652600b855283862084516060808201875282546001600160a01b039081168352929094015480831682890190815262ffffff600160a01b9092048216838901908152885161014081018a528451861681529151909416818a0152925116828701523082850152600160501b8304600290810b810b608080850191909152600160681b909404810b900b60a0830152958c013560c0820152938b013560e0850152908a013561010084015289013561012083015292906111be9061390e565b6001870154939a50919850965091506000906111f1903090600160501b8104600290810b91600160681b9004900b61363c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016112229190615a2c565b60a06040518083038186803b15801561123a57600080fd5b505afa15801561124e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611272919061568d565b505092509250506112ae866002015483038760010160109054906101000a90046001600160801b03166001600160801b0316600160801b613691565b6004870180546001600160801b0380821690930183166001600160801b0319909116179055600387015460018801546112f59291840391600160801b918290041690613691565b6004870180546001600160801b03600160801b80830482169094018116909302921691909117905561132786856134d7565b60028601829055600386018190556001860180546001600160801b03600160801b80830482168e0182160291161790556040518b35907f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f9061138e908d908d908d90615b8c565b60405180910390a2505050505050509193909250565b6113b56113af61330a565b82613b49565b6113f05760405162461bcd60e51b8152600401808060200182810382526031815260200180615f926031913960400191505060405180910390fd5b61094c838383613be5565b8061140581613384565b6000828152600c6020526040902061141b613d1f565b60058201805463ffffffff92909216600160e01b026001600160e01b0390921691909117905560006006909101555050565b6001600160a01b038216600090815260016020526040812061146f9083613d3b565b90505b92915050565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611509613d47565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b601055565b61094c83838360405180602001604052806000815250612932565b8061158481613384565b6000828152600c602052604090206001810154600160801b90046001600160801b03161580156115bf575060048101546001600160801b0316155b80156115dd57506004810154600160801b90046001600160801b0316155b80156115eb57506006810154155b6115f457600080fd5b6000838152600c6020526040812081815560018101829055600281018290556003810182905560048101829055600581018290556006015561094c83613d4b565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156116af57600080fd5b505af11580156116c3573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561173e57600080fd5b505afa158015611752573d6000803e3d6000fd5b505050506040513d602081101561176857600080fd5b50519050828110156117b6576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e7420574554483960701b604482015290519081900360640190fd5b801561094c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561182257600080fd5b505af1158015611836573d6000803e3d6000fd5b5050505061094c8282613e06565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080611876600284613ef5565b509392505050565b600061147282604051806060016040528060298152602001615edd6029913960029190613f13565b606090565b60006001600160a01b0382166118f25760405162461bcd60e51b815260040180806020018281038252602a815260200180615eb3602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061147290613903565b6000818152600c6020908152604080832081516101c08101835281546001600160601b03811682526001600160a01b03600160601b909104169381019390935260018101546001600160501b038116928401839052600160501b8104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e08601526004830154808216610100870152919091041661012084015260058101546001600160c01b03811661014085015263ffffffff600160c01b82048116610160860152600160e01b90910416610180840152600601546101a083015282918291829190611a385760405162461bcd60e51b815260040161084f90615b22565b806101400151816101600151826101800151836101a001519450945094509450509193509193565b83611a6a816133ad565b6000611a7461149c565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad8989611aa081613f20565b604080516020808201969096526001600160a01b03909416848201526060840192909252608083015260a08083018b90528151808403909101815260c08301825280519084012061190160f01b60e084015260e283019490945261010280830194909452805180830390940184526101229091019052815191012090506000611b288861187e565b9050806001600160a01b0316896001600160a01b03161415611b91576040805162461bcd60e51b815260206004820152601f60248201527f4552433732315065726d69743a20617070726f76616c20746f206f776e657200604482015290519081900360640190fd5b611b9a81613f55565b15611d02576040805160208082018890528183018790526001600160f81b031960f88a901b1660608301528251604181840301815260618301808552630b135d3f60e11b90526065830186815260858401948552815160a585015281516001600160a01b03871695631626ba7e958995919260c59091019185019080838360005b83811015611c33578181015183820152602001611c1b565b50505050905090810190601f168015611c605780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015611c7e57600080fd5b505afa158015611c92573d6000803e3d6000fd5b505050506040513d6020811015611ca857600080fd5b50516001600160e01b031916630b135d3f60e11b14611cfd576040805162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611ddb565b600060018388888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611d5e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611d945750816001600160a01b0316816001600160a01b0316145b611dd9576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b505b611de5898961330e565b505050505050505050565b600080600080846101400135611e05816133ad565b604080516101408101909152600090611ed19080611e2660208b018b615125565b6001600160a01b03168152602001896020016020810190611e479190615125565b6001600160a01b03168152602001611e6560608b0160408c0161577f565b62ffffff168152306020820152604001611e8560808b0160608c0161545e565b60020b8152602001611e9d60a08b0160808c0161545e565b60020b81526020018960a0013581526020018960c0013581526020018960e00135815260200189610100013581525061390e565b92975090955093509050611f1e611ef061014089016101208a01615125565b600d80546001600160b01b0319811660016001600160b01b0392831690810190921617909155975087613f5b565b6000611f4930611f3460808b0160608c0161545e565b611f4460a08c0160808d0161545e565b61363c565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401611f7a9190615a2c565b60a06040518083038186803b158015611f9257600080fd5b505afa158015611fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fca919061568d565b5050925092505060006120438560405180606001604052808e6000016020810190611ff59190615125565b6001600160a01b031681526020018e60200160208101906120169190615125565b6001600160a01b031681526020018e6040016020810190612037919061577f565b62ffffff169052614076565b9050604051806101c0016040528060006001600160601b0316815260200160006001600160a01b03168152602001826001600160501b031681526020018c6060016020810190612093919061545e565b60020b81526020016120ab60a08e0160808f0161545e565b60020b81526020018a6001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160c01b03168152602001600063ffffffff168152602001600063ffffffff1681526020016000815250600c60008c815260200190815260200160002060008201518160000160006101000a8154816001600160601b0302191690836001600160601b03160217905550602082015181600001600c6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160501b0302191690836001600160501b03160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055506101408201518160050160006101000a8154816001600160c01b0302191690836001600160c01b031602179055506101608201518160050160186101000a81548163ffffffff021916908363ffffffff16021790555061018082015181600501601c6101000a81548163ffffffff021916908363ffffffff1602179055506101a08201518160060155905050897f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f8a8a8a60405161236493929190615b8c565b60405180910390a25050505050509193509193565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561081e5780601f106107f35761010080835404028352916020019161081e565b6123e261324f565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600c6020908152604080832081516101c08101835281546001600160601b03811682526001600160a01b03600160601b909104169381019390935260018101546001600160501b038116928401839052600160501b8104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e08601526004830154808216610100870152919091041661012084015260058101546001600160c01b03811661014085015263ffffffff600160c01b82048116610160860152600160e01b90910416610180840152600601546101a083015282918291829182918291829182918291829182918291906125395760405162461bcd60e51b815260040161084f90615b22565b6000600b600083604001516001600160501b03166001600160501b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681525050905081600001518260200151826000015183602001518460400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001519d509d509d509d509d509d509d509d509d509d509d509d50505091939597999b5091939597999b565b61266161330a565b6001600160a01b0316826001600160a01b031614156126c3576040805162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015290519081900360640190fd5b80600560006126d061330a565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561271461330a565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156127ab57600080fd5b505afa1580156127bf573d6000803e3d6000fd5b505050506040513d60208110156127d557600080fd5b505110156127eb576127eb868686868686611635565b505050505050565b6060816001600160401b038111801561280b57600080fd5b5060405190808252806020026020018201604052801561283f57816020015b606081526020019060019003908161282a5790505b50905060005b8281101561292b576000803086868581811061285d57fe5b905060200281019061286f9190615ca6565b60405161287d9291906158b2565b600060405180830381855af49150503d80600081146128b8576040519150601f19603f3d011682016040523d82523d6000602084013e6128bd565b606091505b509150915081612909576044815110156128d657600080fd5b600481019050808060200190518101906128f091906154e5565b60405162461bcd60e51b815260040161084f9190615a88565b8084848151811061291657fe5b60209081029190910101525050600101612845565b5092915050565b61294361293d61330a565b83613b49565b61297e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f926031913960400191505060405180910390fd5b61298a84848484614155565b50505050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156129df57600080fd5b505afa1580156129f3573d6000803e3d6000fd5b505050506040513d6020811015612a0957600080fd5b505110156127eb576127eb868686868686612d2f565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060612a4e826132fd565b612a5757600080fd5b600e5460405163e9dc637560e01b81526001600160a01b039091169063e9dc637590612a899030908690600401615a35565b60006040518083038186803b158015612aa157600080fd5b505afa158015612ab5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261147291908101906154e5565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612b2c57600080fd5b505afa158015612b40573d6000803e3d6000fd5b505050506040513d6020811015612b5657600080fd5b5051905082811015612ba4576040805162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a103a37b5b2b760711b604482015290519081900360640190fd5b801561298a5761298a8483836141a7565b81612bbf81613384565b6001600160a01b038216612bd257600080fd5b6000838152600c6020526040812060068101549091612bef613d1f565b6000600685018190556005850180546001600160e01b0316600160e01b63ffffffff851602179055600f546001808701546001600160501b03168352600b6020908152604093849020845160608101865281546001600160a01b039081168252919093015480821692840192909252600160a01b90910462ffffff169382019390935292935016906332d5eeaf90879085908a90612cae907f0000000000000000000000000000000000000000000000000000000000000000906133f8565b600589015460405160e087901b6001600160e01b0319168152612ce79594939291600160c01b900463ffffffff16908990600401615982565b600060405180830381600087803b1580156116af57600080fd5b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156116af57600080fd5b6000808235612daf81613384565b6000612dc16060860160408701615643565b6001600160801b03161180612dee57506000612de36080860160608701615643565b6001600160801b0316115b612df757600080fd5b600080612e0a6040870160208801615125565b6001600160a01b031614612e2d57612e286040860160208701615125565b612e2f565b305b85356000908152600c602090815260408083206001808201546001600160501b03168552600b8452828520835160608101855281546001600160a01b039081168252919092015490811694820194909452600160a01b90930462ffffff169183019190915292935090612ec27f0000000000000000000000000000000000000000000000000000000000000000836133f8565b600484015460018501549192506001600160801b0380821692600160801b92839004821692900416156130b857600185015460405163a34123a760e01b81526001600160a01b0385169163a34123a791612f3991600160501b8104600290810b92600160681b909204900b90600090600401615a62565b6040805180830381600087803b158015612f5257600080fd5b505af1158015612f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8a91906157d5565b5050600185015460009081906001600160a01b0386169063514ea4bf90612fc8903090600160501b8104600290810b91600160681b9004900b61363c565b6040518263ffffffff1660e01b8152600401612fe49190615a2c565b60a06040518083038186803b158015612ffc57600080fd5b505afa158015613010573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613034919061568d565b50509250925050613070876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613691565b840193506130a9876003015482038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613691565b60028801929092556003870155015b6000806001600160801b0384166130d560608e0160408f01615643565b6001600160801b0316116130f8576130f360608d0160408e01615643565b6130fa565b835b836001600160801b03168d60600160208101906131179190615643565b6001600160801b03161161313a5761313560808e0160608f01615643565b61313c565b835b60018901546040516309e3d67b60e31b81529294509092506001600160a01b03871691634f1eb3d89161318f918c91600160501b8104600290810b92600160681b909204900b908890889060040161591b565b6040805180830381600087803b1580156131a857600080fd5b505af11580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e0919061565f565b6004890180546001600160801b03196001600160801b03918216600160801b878a0384160217168689038216179091556040519281169d50169a508c35907f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f0190610d26908b9086908690615958565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132a857600080fd5b505afa1580156132bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e09190615141565b6001600160a01b0316336001600160a01b031614610d4457600080fd5b60006114726002836142ee565b3390565b6000818152600c6020526040902080546001600160601b0316600160601b6001600160a01b03851690810291909117909155819061334b8261187e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61338e3382613b49565b6133aa5760405162461bcd60e51b815260040161084f90615a9b565b50565b804211156133aa576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b03161061342057600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6001600160601b03191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b60018201546040516351c403f960e11b81526000916001600160a01b0384169163a38807f29161352091600160501b8204600290810b92600160681b9004900b90600401615a4e565b60806040518083038186803b15801561353857600080fd5b505afa15801561354c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613570919061547a565b60058701549094506001600160c01b0380861691161092506135959150505750613638565b6005830154600160c01b900463ffffffff16156135ef57600583015460018401546135e3916001600160c01b0390811684031690600160801b90046001600160801b0316600160401b613691565b60068401805490910190555b6005830180546001600160c01b0319166001600160c01b038316179055613614613d1f565b8360050160186101000a81548163ffffffff021916908363ffffffff160217905550505b5050565b604080516001600160601b0319606086901b16602080830191909152600285810b60e890811b60348501529085900b901b60378301528251601a818403018152603a90920190925280519101205b9392505050565b60008080600019858709868602925082811090839003039050806136c757600084116136bc57600080fd5b50829004905061368a565b8084116136d357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b4715610d4457610d443347613e06565b600061375c83836133f8565b9050336001600160a01b0382161461147257600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156137b45750804710155b156138d6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561381457600080fd5b505af1158015613828573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156138a457600080fd5b505af11580156138b8573d6000803e3d6000fd5b505050506040513d60208110156138ce57600080fd5b5061298a9050565b6001600160a01b0383163014156138f7576138f28483836141a7565b61298a565b61298a848484846142fa565b60006114728261444a565b6000806000806000604051806060016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001876040015162ffffff1681525090506139807f0000000000000000000000000000000000000000000000000000000000000000826133f8565b91506000826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156139bd57600080fd5b505afa1580156139d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f591906156ee565b50505050505090506000613a0c886080015161444e565b90506000613a1d8960a0015161444e565b9050613a348383838c60c001518d60e00151614775565b9750505050816001600160a01b0316633c8a7d8d876060015188608001518960a00151896040518060400160405280888152602001336001600160a01b0316815250604051602001613a869190615b4c565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401613ab59594939291906158d6565b6040805180830381600087803b158015613ace57600080fd5b505af1158015613ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0691906157d5565b61010088015191955093508410801590613b2557508561012001518310155b613b415760405162461bcd60e51b815260040161084f90615af4565b509193509193565b6000613b54826132fd565b613b8f5760405162461bcd60e51b815260040180806020018281038252602c815260200180615e4f602c913960400191505060405180910390fd5b6000613b9a8361187e565b9050806001600160a01b0316846001600160a01b03161480613bd55750836001600160a01b0316613bca84610828565b6001600160a01b0316145b8061103257506110328185612d01565b826001600160a01b0316613bf88261187e565b6001600160a01b031614613c3d5760405162461bcd60e51b8152600401808060200182810382526029815260200180615f286029913960400191505060405180910390fd5b6001600160a01b038216613c825760405162461bcd60e51b8152600401808060200182810382526024815260200180615e056024913960400191505060405180910390fd5b613c8d83838361094c565b613c9860008261330e565b6001600160a01b0383166000908152600160205260409020613cba9082614839565b506001600160a01b0382166000908152600160205260409020613cdd9082614845565b50613cea60028284614851565b5080826001600160a01b0316846001600160a01b0316600080516020615f5183398151915260405160405180910390a4505050565b600063ffffffff4211613d3257426110c4565b5063ffffffff90565b600061146f8383614867565b4690565b6000613d568261187e565b9050613d648160008461094c565b613d6f60008361330e565b6000828152600860205260409020546002600019610100600184161502019091160415613dad576000828152600860205260408120613dad9161509d565b6001600160a01b0381166000908152600160205260409020613dcf9083614839565b50613ddb6002836148cb565b5060405182906000906001600160a01b03841690600080516020615f51833981519152908390a45050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613e525780518252601f199092019160209182019101613e33565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613eb4576040519150601f19603f3d011682016040523d82523d6000602084013e613eb9565b606091505b505090508061094c576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b6000808080613f0486866148d7565b909450925050505b9250929050565b6000611032848484614952565b6000908152600c6020526040902080546001600160601b0319811660016001600160601b039283169081019092161790915590565b3b151590565b6001600160a01b038216613fb6576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613fbf816132fd565b15614010576040805162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015290519081900360640190fd5b61401c6000838361094c565b6001600160a01b038216600090815260016020526040902061403e9082614845565b5061404b60028284614851565b5060405181906001600160a01b03841690600090600080516020615f51833981519152908290a45050565b6001600160a01b0382166000908152600a60205260409020546001600160501b0316806114725750600d805460016001600160501b03600160b01b8084048216838101909216026001600160b01b03909316929092179092556001600160a01b038085166000908152600a6020908152604080832080546001600160501b03191686179055848352600b825291829020865181549085166001600160a01b031991821617825591870151950180549287015162ffffff16600160a01b0262ffffff60a01b19969094169290911691909117939093161790915592915050565b614160848484613be5565b61416c84848484614a1c565b61298a5760405162461bcd60e51b8152600401808060200182810382526032815260200180615dd36032913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106142235780518252601f199092019160209182019101614204565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614285576040519150601f19603f3d011682016040523d82523d6000602084013e61428a565b606091505b50915091508180156142b85750805115806142b857508080602001905160208110156142b557600080fd5b50515b6110b1576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b600061146f8383614b84565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000948594938a169392918291908083835b6020831061437e5780518252601f19909201916020918201910161435f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146143e0576040519150601f19603f3d011682016040523d82523d6000602084013e6143e5565b606091505b5091509150818015614413575080511580614413575080806020019051602081101561441057600080fd5b50515b6127eb576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b5490565b60008060008360020b12614465578260020b61446d565b8260020b6000035b9050620d89e88111156144ab576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166144bf57600160801b6144d1565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b0316905060028216156144fb576ffff97272373d413259a46990580e213a0260801c5b600482161561451a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614539576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614558576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614577576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614596576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156145b5576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156145d5576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156145f5576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614615576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614635576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614655576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614675576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614695576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156146b5576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156146d6576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156146f6576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614715576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614732576b048a170391f7dc42444e8fa20260801c5b60008460020b131561474d57806000198161474957fe5b0490505b600160201b810615614760576001614763565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b03161115614795579293925b846001600160a01b0316866001600160a01b0316116147c0576147b9858585614b9c565b9050614830565b836001600160a01b0316866001600160a01b031610156148225760006147e7878686614b9c565b905060006147f6878986614bff565b9050806001600160801b0316826001600160801b0316106148175780614819565b815b92505050614830565b61482d858584614bff565b90505b95945050505050565b600061146f8383614c3c565b600061146f8383614d02565b600061103284846001600160a01b038516614d4c565b815460009082106148a95760405162461bcd60e51b8152600401808060200182810382526022815260200180615db16022913960400191505060405180910390fd5b8260000182815481106148b857fe5b9060005260206000200154905092915050565b600061146f8383614de3565b81546000908190831061491b5760405162461bcd60e51b8152600401808060200182810382526022815260200180615f066022913960400191505060405180910390fd5b600084600001848154811061492c57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816149ed5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156149b257818101518382015260200161499a565b50505050905090810190601f1680156149df5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110614a0057fe5b9060005260206000209060020201600101549150509392505050565b6000614a30846001600160a01b0316613f55565b614a3c57506001611032565b6000614b4a630a85bd0160e11b614a5161330a565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614ab8578181015183820152602001614aa0565b50505050905090810190601f168015614ae55780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001615dd3603291396001600160a01b0388169190614eb7565b90506000818060200190516020811015614b6357600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6000826001600160a01b0316846001600160a01b03161115614bbc579192915b6000614bdf856001600160a01b0316856001600160a01b0316600160601b613691565b9050614830614bfa84838888036001600160a01b0316613691565b614ec6565b6000826001600160a01b0316846001600160a01b03161115614c1f579192915b611032614bfa83600160601b8787036001600160a01b0316613691565b60008181526001830160205260408120548015614cf85783546000198083019190810190600090879083908110614c6f57fe5b9060005260206000200154905080876000018481548110614c8c57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614cbc57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611472565b6000915050611472565b6000614d0e8383614b84565b614d4457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611472565b506000611472565b600082815260018401602052604081205480614db157505060408051808201825283815260208082018481528654600181810189556000898152848120955160029093029095019182559151908201558654868452818801909252929091205561368a565b82856000016001830381548110614dc457fe5b906000526020600020906002020160010181905550600091505061368a565b60008181526001830160205260408120548015614cf85783546000198083019190810190600090879083908110614e1657fe5b9060005260206000209060020201905080876000018481548110614e3657fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614e7557fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506114729350505050565b60606110328484600085614edc565b806001600160801b038116811461076357600080fd5b606082471015614f1d5760405162461bcd60e51b8152600401808060200182810382526026815260200180615e296026913960400191505060405180910390fd5b614f2685613f55565b614f77576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614fb55780518252601f199092019160209182019101614f96565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615017576040519150601f19603f3d011682016040523d82523d6000602084013e61501c565b606091505b509150915061502c828286615037565b979650505050505050565b6060831561504657508161368a565b8251156150565782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156149b257818101518382015260200161499a565b50805460018160011615610100020316600290046000825580601f106150c357506133aa565b601f0160209004906000526020600020908101906133aa91905b808211156150f157600081556001016150dd565b5090565b803561076381615d5a565b805161ffff8116811461076357600080fd5b803562ffffff8116811461076357600080fd5b600060208284031215615136578081fd5b813561368a81615d5a565b600060208284031215615152578081fd5b815161368a81615d5a565b6000806040838503121561516f578081fd5b823561517a81615d5a565b9150602083013561518a81615d5a565b809150509250929050565b600080600080608085870312156151aa578182fd5b84356151b581615d5a565b935060208501356151c581615d5a565b92506151d360408601615112565b915060608501356151e381615d5a565b939692955090935050565b600080600060608486031215615202578081fd5b833561520d81615d5a565b9250602084013561521d81615d5a565b929592945050506040919091013590565b60008060008060808587031215615243578182fd5b843561524e81615d5a565b9350602085013561525e81615d5a565b92506040850135915060608501356001600160401b0381111561527f578182fd5b8501601f8101871361528f578182fd5b80356152a261529d82615d0d565b615cea565b8181528860208385010111156152b6578384fd5b81602084016020830137908101602001929092525092959194509250565b600080604083850312156152e6578182fd5b82356152f181615d5a565b9150602083013561518a81615d6f565b60008060408385031215615313578182fd5b823561531e81615d5a565b946020939093013593505050565b600080600060608486031215615340578081fd5b833561534b81615d5a565b925060208401359150604084013561536281615d5a565b809150509250925092565b60008060008060008060c08789031215615385578384fd5b863561539081615d5a565b9550602087013594506040870135935060608701356153ae81615da1565b9598949750929560808101359460a0909101359350915050565b600080602083850312156153da578182fd5b82356001600160401b03808211156153f0578384fd5b818501915085601f830112615403578384fd5b813581811115615411578485fd5b8660208083028501011115615424578485fd5b60209290920196919550909350505050565b600060208284031215615447578081fd5b81356001600160e01b03198116811461368a578182fd5b60006020828403121561546f578081fd5b813561368a81615d7d565b6000806000806080858703121561548f578182fd5b84518060060b811461549f578283fd5b60208601519094506154b081615d5a565b604086015190935063ffffffff811681146154c9578283fd5b60608601519092506001600160c01b03811681146151e3578182fd5b6000602082840312156154f6578081fd5b81516001600160401b0381111561550b578182fd5b8201601f8101841361551b578182fd5b805161552961529d82615d0d565b81815285602083850101111561553d578384fd5b614830826020830160208601615d2e565b60006080828403121561555f578081fd5b50919050565b600060a0828403121561555f578081fd5b600060c0828403121561555f578081fd5b60008183036080811215615599578182fd5b604051604081016001600160401b0382821081831117156155b657fe5b8160405260608412156155c7578485fd5b60a08301935081841081851117156155db57fe5b5082604052843592506155ed83615d5a565b9182526020840135916155ff83615d5a565b82606083015261561160408601615112565b60808301528152615624606085016150f5565b6020820152949350505050565b6000610160828403121561555f578081fd5b600060208284031215615654578081fd5b813561368a81615d8c565b60008060408385031215615671578182fd5b825161567c81615d8c565b602084015190925061518a81615d8c565b600080600080600060a086880312156156a4578283fd5b85516156af81615d8c565b80955050602086015193506040860151925060608601516156cf81615d8c565b60808701519092506156e081615d8c565b809150509295509295909350565b600080600080600080600060e0888a031215615708578485fd5b875161571381615d5a565b602089015190975061572481615d7d565b955061573260408901615100565b945061574060608901615100565b935061574e60808901615100565b925060a088015161575e81615da1565b60c089015190925061576f81615d6f565b8091505092959891949750929550565b600060208284031215615790578081fd5b61146f82615112565b6000602082840312156157aa578081fd5b5035919050565b600080604083850312156157c3578182fd5b82359150602083013561518a81615d5a565b600080604083850312156157e7578182fd5b505080516020909101519092909150565b6000806000806060858703121561580d578182fd5b843593506020850135925060408501356001600160401b0380821115615831578384fd5b818701915087601f830112615844578384fd5b813581811115615852578485fd5b886020828501011115615863578485fd5b95989497505060200194505050565b6000815180845261588a816020860160208601615d2e565b601f01601f19169290920160200192915050565b60020b9052565b6001600160801b03169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b0386168152600285810b602083015284900b60408201526001600160801b038316606082015260a06080820181905260009061502c90830184615872565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039390931683526001600160801b03918216602084015216604082015260600190565b6001600160a01b039687168152602081019590955260408501939093529316606083015263ffffffff928316608083015290911660a082015260c00190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015615a1457603f19888603018452615a02858351615872565b945092850192908501906001016159e6565b5092979650505050505050565b901515815260200190565b90815260200190565b6001600160a01b03929092168252602082015260400190565b600292830b8152910b602082015260400190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b60006020825261146f6020830184615872565b6020808252600c908201526b139bdd08185c1c1c9bdd995960a21b604082015260600190565b60208082526019908201527822a9219b99189d103737b732bc34b9ba32b73a103a37b5b2b760391b604082015260600190565b602080825260149082015273507269636520736c69707061676520636865636b60601b604082015260600190565b60208082526010908201526f125b9d985b1a59081d1bdad95b88125160821b604082015260600190565b815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b6001600160801b039390931683526020830191909152604082015260600190565b6001600160c01b0394909416845263ffffffff928316602085015291166040830152606082015260800190565b9384526001600160801b039290921660208401526040830152606082015260800190565b918252602082015260400190565b6001600160601b038d1681526001600160a01b038c811660208301528b811660408301528a16606082015262ffffff89166080820152600288900b60a08201526101808101615c5e60c083018961589e565b615c6b60e08301886158a5565b8561010083015284610120830152615c876101408301856158a5565b615c956101608301846158a5565b9d9c50505050505050505050505050565b6000808335601e19843603018112615cbc578283fd5b8301803591506001600160401b03821115615cd5578283fd5b602001915036819003821315613f0c57600080fd5b6040518181016001600160401b0381118282101715615d0557fe5b604052919050565b60006001600160401b03821115615d2057fe5b50601f01601f191660200190565b60005b83811015615d49578181015183820152602001615d31565b8381111561298a5750506000910152565b6001600160a01b03811681146133aa57600080fd5b80151581146133aa57600080fd5b8060020b81146133aa57600080fd5b6001600160801b03811681146133aa57600080fd5b60ff811681146133aa57600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220609504b7be8c39ea06a62c550504c1044f7991b7d98f4136b8d46336d03e2c4a64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x20B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x523 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x538 JUMPI DUP1 PUSH4 0x75E39CEC EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x7AC2FF7B EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x88316456 EQ PUSH2 0x59B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5BE JUMPI DUP1 PUSH4 0x97F12A83 EQ PUSH2 0x5D3 JUMPI DUP1 PUSH4 0x99FBAB88 EQ PUSH2 0x5E6 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x63E JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x671 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x691 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0xE70EB392 EQ PUSH2 0x6EC JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6FF JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x71F JUMPI DUP1 PUSH4 0xFC6F7865 EQ PUSH2 0x732 JUMPI PUSH2 0x27B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x50EB2EB EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xC49CCBE EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x12210E8A EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0x1507A8F4 EQ PUSH2 0x374 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x219F5D17 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3D8 JUMPI DUP1 PUSH4 0x29048E7B EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x42B JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x3BEB26C4 EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x495 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0x49404B7C EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x4CE JUMPI PUSH2 0x27B JUMP JUMPDEST CALLDATASIZE PUSH2 0x27B JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x279 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x4E6F74205745544839 PUSH1 0xB8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A0 PUSH2 0x29B CALLDATASIZE PUSH1 0x4 PUSH2 0x5436 JUMP JUMPDEST PUSH2 0x745 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x5A21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x279 PUSH2 0x2C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5125 JUMP JUMPDEST PUSH2 0x768 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x792 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x5A88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x306 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x828 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x58C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x333 CALLDATASIZE PUSH1 0x4 PUSH2 0x5301 JUMP JUMPDEST PUSH2 0x87B JUMP JUMPDEST PUSH2 0x34B PUSH2 0x346 CALLDATASIZE PUSH1 0x4 PUSH2 0x5565 JUMP JUMPDEST PUSH2 0x951 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP3 SWAP2 SWAP1 PUSH2 0x5BFE JUMP JUMPDEST PUSH2 0x279 PUSH2 0xD3C JUMP JUMPDEST PUSH2 0x30B PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x5195 JUMP JUMPDEST PUSH2 0xD46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x38F CALLDATASIZE PUSH1 0x4 PUSH2 0x57F8 JUMP JUMPDEST PUSH2 0x103A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x10B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x5A2C JUMP JUMPDEST PUSH2 0x3C9 PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5576 JUMP JUMPDEST PUSH2 0x10C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x3F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x51EE JUMP JUMPDEST PUSH2 0x13A4 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x406 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x13FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x426 CALLDATASIZE PUSH1 0x4 PUSH2 0x5301 JUMP JUMPDEST PUSH2 0x144D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x1478 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x149C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x155A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x490 CALLDATASIZE PUSH1 0x4 PUSH2 0x51EE JUMP JUMPDEST PUSH2 0x155F JUMP JUMPDEST PUSH2 0x279 PUSH2 0x4A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x157A JUMP JUMPDEST PUSH2 0x279 PUSH2 0x4B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x536D JUMP JUMPDEST PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x57B1 JUMP JUMPDEST PUSH2 0x16CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x1844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x4FE CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x1868 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x51E CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x187E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x18A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x553 CALLDATASIZE PUSH1 0x4 PUSH2 0x5125 JUMP JUMPDEST PUSH2 0x18AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x578 PUSH2 0x573 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x1913 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BAD JUMP JUMPDEST PUSH2 0x279 PUSH2 0x596 CALLDATASIZE PUSH1 0x4 PUSH2 0x536D JUMP JUMPDEST PUSH2 0x1A60 JUMP JUMPDEST PUSH2 0x5AE PUSH2 0x5A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5631 JUMP JUMPDEST PUSH2 0x1DF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x2379 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x5E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x5125 JUMP JUMPDEST PUSH2 0x23DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x606 PUSH2 0x601 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x2404 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x639 CALLDATASIZE PUSH1 0x4 PUSH2 0x52D4 JUMP JUMPDEST PUSH2 0x2659 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x64C CALLDATASIZE PUSH1 0x4 PUSH2 0x536D JUMP JUMPDEST PUSH2 0x275A JUMP JUMPDEST PUSH2 0x664 PUSH2 0x65F CALLDATASIZE PUSH1 0x4 PUSH2 0x53C8 JUMP JUMPDEST PUSH2 0x27F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x59C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x68C CALLDATASIZE PUSH1 0x4 PUSH2 0x522E JUMP JUMPDEST PUSH2 0x2932 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x69F CALLDATASIZE PUSH1 0x4 PUSH2 0x536D JUMP JUMPDEST PUSH2 0x2990 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x2A1F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DE PUSH2 0x6D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5799 JUMP JUMPDEST PUSH2 0x2A43 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x6E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x532C JUMP JUMPDEST PUSH2 0x2ADD JUMP JUMPDEST PUSH2 0x279 PUSH2 0x6FA CALLDATASIZE PUSH1 0x4 PUSH2 0x57B1 JUMP JUMPDEST PUSH2 0x2BB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A0 PUSH2 0x71A CALLDATASIZE PUSH1 0x4 PUSH2 0x515D JUMP JUMPDEST PUSH2 0x2D01 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x72D CALLDATASIZE PUSH1 0x4 PUSH2 0x536D JUMP JUMPDEST PUSH2 0x2D2F JUMP JUMPDEST PUSH2 0x34B PUSH2 0x740 CALLDATASIZE PUSH1 0x4 PUSH2 0x554E JUMP JUMPDEST PUSH2 0x2DA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x770 PUSH2 0x324F JUMP JUMPDEST PUSH1 0xF 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 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x81E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7F3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x81E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x801 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x833 DUP3 PUSH2 0x32FD JUMP JUMPDEST PUSH2 0x858 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5AC1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x886 DUP3 PUSH2 0x187E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x8D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F71 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8EB PUSH2 0x330A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x907 JUMPI POP PUSH2 0x907 DUP2 PUSH2 0x71A PUSH2 0x330A JUMP JUMPDEST PUSH2 0x942 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E7B PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x94C DUP4 DUP4 PUSH2 0x330E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x95F DUP2 PUSH2 0x3384 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x96D DUP2 PUSH2 0x33AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97F PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH2 0x9CD SWAP2 DUP10 ADD SWAP1 DUP10 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP6 ADD SLOAD SWAP1 DUP2 AND SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH3 0xFFFFFF AND SWAP1 DUP4 ADD MSTORE PUSH2 0xA6C PUSH32 0x0 DUP4 PUSH2 0x33F8 JUMP JUMPDEST SWAP1 POP PUSH2 0xA78 DUP5 DUP3 PUSH2 0x34D7 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA34123A7 SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0xAB4 PUSH1 0x40 DUP15 ADD PUSH1 0x20 DUP16 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A62 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAFF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB23 SWAP2 SWAP1 PUSH2 0x57D5 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD DUP9 LT DUP1 ISZERO SWAP1 PUSH2 0xB40 JUMPI POP DUP9 PUSH1 0x60 ADD CALLDATALOAD DUP8 LT ISZERO JUMPDEST PUSH2 0xB5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5AF4 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB85 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x363C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBB6 SWAP2 SWAP1 PUSH2 0x5A2C JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBE2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC06 SWAP2 SWAP1 PUSH2 0x568D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0xC2B DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND SWAP3 DUP15 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND ADD DUP2 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0x3 DUP9 ADD SLOAD PUSH2 0xC6C SWAP2 SWAP1 DUP4 SUB SWAP1 DUP9 AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP4 DUP15 ADD PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x2 DUP8 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP8 ADD DUP2 SWAP1 SSTORE PUSH2 0xCB2 PUSH1 0x40 DUP14 ADD PUSH1 0x20 DUP15 ADD PUSH2 0x5643 JUMP JUMPDEST DUP7 SUB DUP8 PUSH1 0x1 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x0 ADD CALLDATALOAD PUSH32 0x26F6A048EE9138F2C0CE266F322CB99228E8D619AE2BFF30C67F8DCF9D2377B4 DUP14 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xD15 SWAP2 SWAP1 PUSH2 0x5643 JUMP JUMPDEST DUP14 DUP14 PUSH1 0x40 MLOAD PUSH2 0xD26 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0xD44 PUSH2 0x3740 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xD66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1698EE82 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xF51 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1671295 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xECE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF637731D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP4 AND SWAP2 PUSH4 0xF637731D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF48 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1032 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1030 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF637731D DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x102B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1048 DUP3 DUP5 ADD DUP5 PUSH2 0x5587 JUMP JUMPDEST SWAP1 POP PUSH2 0x1078 PUSH32 0x0 DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x3750 JUMP JUMPDEST POP DUP5 ISZERO PUSH2 0x1093 JUMPI DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x1093 SWAP2 SWAP1 CALLER DUP9 PUSH2 0x3773 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x10B1 JUMPI PUSH2 0x10B1 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x3773 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10C4 PUSH1 0x2 PUSH2 0x3903 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x10DC DUP2 PUSH2 0x33AD JUMP JUMPDEST DUP5 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND DUP7 MSTORE PUSH1 0xB DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP5 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP8 MSTORE DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE SWAP3 SWAP1 SWAP5 ADD SLOAD DUP1 DUP4 AND DUP3 DUP10 ADD SWAP1 DUP2 MSTORE PUSH3 0xFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV DUP3 AND DUP4 DUP10 ADD SWAP1 DUP2 MSTORE DUP9 MLOAD PUSH2 0x140 DUP2 ADD DUP11 MSTORE DUP5 MLOAD DUP7 AND DUP2 MSTORE SWAP2 MLOAD SWAP1 SWAP5 AND DUP2 DUP11 ADD MSTORE SWAP3 MLOAD AND DUP3 DUP8 ADD MSTORE ADDRESS DUP3 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP4 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP5 DIV DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0xA0 DUP4 ADD MSTORE SWAP6 DUP13 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE SWAP4 DUP12 ADD CALLDATALOAD PUSH1 0xE0 DUP6 ADD MSTORE SWAP1 DUP11 ADD CALLDATALOAD PUSH2 0x100 DUP5 ADD MSTORE DUP10 ADD CALLDATALOAD PUSH2 0x120 DUP4 ADD MSTORE SWAP3 SWAP1 PUSH2 0x11BE SWAP1 PUSH2 0x390E JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD SWAP4 SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x11F1 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x363C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1222 SWAP2 SWAP1 PUSH2 0x5A2C JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x124E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1272 SWAP2 SWAP1 PUSH2 0x568D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x12AE DUP7 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP1 SWAP4 ADD DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x12F5 SWAP3 SWAP2 DUP5 SUB SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV AND SWAP1 PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND SWAP1 SWAP5 ADD DUP2 AND SWAP1 SWAP4 MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1327 DUP7 DUP6 PUSH2 0x34D7 JUMP JUMPDEST PUSH1 0x2 DUP7 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP7 ADD DUP2 SWAP1 SSTORE PUSH1 0x1 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP15 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP12 CALLDATALOAD SWAP1 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F SWAP1 PUSH2 0x138E SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH2 0x5B8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x13B5 PUSH2 0x13AF PUSH2 0x330A JUMP JUMPDEST DUP3 PUSH2 0x3B49 JUMP JUMPDEST PUSH2 0x13F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F92 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x94C DUP4 DUP4 DUP4 PUSH2 0x3BE5 JUMP JUMPDEST DUP1 PUSH2 0x1405 DUP2 PUSH2 0x3384 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x141B PUSH2 0x3D1F JUMP JUMPDEST PUSH1 0x5 DUP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 PUSH1 0x6 SWAP1 SWAP2 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x146F SWAP1 DUP4 PUSH2 0x3D3B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH32 0x0 PUSH32 0x0 PUSH2 0x1509 PUSH2 0x3D47 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x10 SSTORE JUMP JUMPDEST PUSH2 0x94C DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2932 JUMP JUMPDEST DUP1 PUSH2 0x1584 DUP2 PUSH2 0x3384 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO DUP1 ISZERO PUSH2 0x15BF JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x15DD JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x15EB JUMPI POP PUSH1 0x6 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0x15F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x5 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x6 ADD SSTORE PUSH2 0x94C DUP4 PUSH2 0x3D4B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x173E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1752 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x17B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x496E73756666696369656E74205745544839 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x94C JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1836 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x94C DUP3 DUP3 PUSH2 0x3E06 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1876 PUSH1 0x2 DUP5 PUSH2 0x3EF5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1472 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5EDD PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x18F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5EB3 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1472 SWAP1 PUSH2 0x3903 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x1C0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x68 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE SWAP1 DUP4 ADD SLOAD PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0x4 DUP4 ADD SLOAD DUP1 DUP3 AND PUSH2 0x100 DUP8 ADD MSTORE SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND PUSH2 0x160 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 SWAP2 DIV AND PUSH2 0x180 DUP5 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH2 0x1A0 DUP4 ADD MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH2 0x1A38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5B22 JUMP JUMPDEST DUP1 PUSH2 0x140 ADD MLOAD DUP2 PUSH2 0x160 ADD MLOAD DUP3 PUSH2 0x180 ADD MLOAD DUP4 PUSH2 0x1A0 ADD MLOAD SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST DUP4 PUSH2 0x1A6A DUP2 PUSH2 0x33AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A74 PUSH2 0x149C JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP10 DUP10 PUSH2 0x1AA0 DUP2 PUSH2 0x3F20 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE2 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH2 0x102 DUP1 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 MLOAD DUP1 DUP4 SUB SWAP1 SWAP5 ADD DUP5 MSTORE PUSH2 0x122 SWAP1 SWAP2 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1B28 DUP9 PUSH2 0x187E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1B91 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732315065726D69743A20617070726F76616C20746F206F776E657200 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B9A DUP2 PUSH2 0x3F55 JUMP JUMPDEST ISZERO PUSH2 0x1D02 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP9 SWAP1 MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0xF8 DUP11 SWAP1 SHL AND PUSH1 0x60 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x41 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x61 DUP4 ADD DUP1 DUP6 MSTORE PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 MSTORE PUSH1 0x65 DUP4 ADD DUP7 DUP2 MSTORE PUSH1 0x85 DUP5 ADD SWAP5 DUP6 MSTORE DUP2 MLOAD PUSH1 0xA5 DUP6 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP6 PUSH4 0x1626BA7E SWAP6 DUP10 SWAP6 SWAP2 SWAP3 PUSH1 0xC5 SWAP1 SWAP2 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C33 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1C1B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C60 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C92 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ PUSH2 0x1CFD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x155B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DDB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D5E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1D94 JUMPI POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x1DD9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x496E76616C6964207369676E6174757265 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x1DE5 DUP10 DUP10 PUSH2 0x330E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x1E05 DUP2 PUSH2 0x33AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1ED1 SWAP1 DUP1 PUSH2 0x1E26 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x5125 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1E47 SWAP2 SWAP1 PUSH2 0x5125 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E65 PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x577F JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x1E85 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x545E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E9D PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x545E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xA0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE POP PUSH2 0x390E JUMP JUMPDEST SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH2 0x1F1E PUSH2 0x1EF0 PUSH2 0x140 DUP10 ADD PUSH2 0x120 DUP11 ADD PUSH2 0x5125 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP8 POP DUP8 PUSH2 0x3F5B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F49 ADDRESS PUSH2 0x1F34 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x545E JUMP JUMPDEST PUSH2 0x1F44 PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x545E JUMP JUMPDEST PUSH2 0x363C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x514EA4BF DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F7A SWAP2 SWAP1 PUSH2 0x5A2C JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FCA SWAP2 SWAP1 PUSH2 0x568D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0x2043 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP15 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1FF5 SWAP2 SWAP1 PUSH2 0x5125 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP15 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2016 SWAP2 SWAP1 PUSH2 0x5125 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP15 PUSH1 0x40 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2037 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE PUSH2 0x4076 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x1C0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2093 SWAP2 SWAP1 PUSH2 0x545E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x20AB PUSH1 0xA0 DUP15 ADD PUSH1 0x80 DUP16 ADD PUSH2 0x545E JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP PUSH1 0xC PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0xC 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 PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0xA PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0xD PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x1C PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1A0 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP10 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x2364 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x81E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7F3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x81E JUMP JUMPDEST PUSH2 0x23E2 PUSH2 0x324F JUMP JUMPDEST PUSH1 0xE 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 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x1C0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x68 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE SWAP1 DUP4 ADD SLOAD PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0x4 DUP4 ADD SLOAD DUP1 DUP3 AND PUSH2 0x100 DUP8 ADD MSTORE SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND PUSH2 0x160 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 SWAP2 DIV AND PUSH2 0x180 DUP5 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH2 0x1A0 DUP4 ADD MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH2 0x2539 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5B22 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0xC0 ADD MLOAD DUP11 PUSH1 0xE0 ADD MLOAD DUP12 PUSH2 0x100 ADD MLOAD DUP13 PUSH2 0x120 ADD MLOAD SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP SWAP14 POP POP POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 SWAP12 POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 SWAP12 JUMP JUMPDEST PUSH2 0x2661 PUSH2 0x330A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x26C3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x22A9219B99189D1030B8383937BB32903A379031B0B63632B9 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x26D0 PUSH2 0x330A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x2714 PUSH2 0x330A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x27EB JUMPI PUSH2 0x27EB DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1635 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x280B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x283F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x282A JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x292B JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x285D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x286F SWAP2 SWAP1 PUSH2 0x5CA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x287D SWAP3 SWAP2 SWAP1 PUSH2 0x58B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x28B8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2909 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x28D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x28F0 SWAP2 SWAP1 PUSH2 0x54E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP2 SWAP1 PUSH2 0x5A88 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2916 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x2845 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2943 PUSH2 0x293D PUSH2 0x330A JUMP JUMPDEST DUP4 PUSH2 0x3B49 JUMP JUMPDEST PUSH2 0x297E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F92 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x298A DUP5 DUP5 DUP5 DUP5 PUSH2 0x4155 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x27EB JUMPI PUSH2 0x27EB DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2D2F JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2A4E DUP3 PUSH2 0x32FD JUMP JUMPDEST PUSH2 0x2A57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xE SLOAD PUSH1 0x40 MLOAD PUSH4 0xE9DC6375 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xE9DC6375 SWAP1 PUSH2 0x2A89 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A35 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1472 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x54E5 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x2BA4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24B739BAB33334B1B4B2B73A103A37B5B2B7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x298A JUMPI PUSH2 0x298A DUP5 DUP4 DUP4 PUSH2 0x41A7 JUMP JUMPDEST DUP2 PUSH2 0x2BBF DUP2 PUSH2 0x3384 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2BD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x6 DUP2 ADD SLOAD SWAP1 SWAP2 PUSH2 0x2BEF PUSH2 0x3D1F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 DUP6 ADD DUP2 SWAP1 SSTORE PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL PUSH4 0xFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH1 0xF SLOAD PUSH1 0x1 DUP1 DUP8 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP4 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP1 KECCAK256 DUP5 MLOAD PUSH1 0x60 DUP2 ADD DUP7 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD DUP1 DUP3 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH3 0xFFFFFF AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 SWAP4 POP AND SWAP1 PUSH4 0x32D5EEAF SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH2 0x2CAE SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x33F8 JUMP JUMPDEST PUSH1 0x5 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0xE0 DUP8 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH2 0x2CE7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5982 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x2DAF DUP2 PUSH2 0x3384 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DC1 PUSH1 0x60 DUP7 ADD PUSH1 0x40 DUP8 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT DUP1 PUSH2 0x2DEE JUMPI POP PUSH1 0x0 PUSH2 0x2DE3 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST PUSH2 0x2DF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E0A PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x5125 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2E2D JUMPI PUSH2 0x2E28 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x5125 JUMP JUMPDEST PUSH2 0x2E2F JUMP JUMPDEST ADDRESS JUMPDEST DUP6 CALLDATALOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP6 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP4 MLOAD PUSH1 0x60 DUP2 ADD DUP6 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD SWAP1 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV PUSH3 0xFFFFFF AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP4 POP SWAP1 PUSH2 0x2EC2 PUSH32 0x0 DUP4 PUSH2 0x33F8 JUMP JUMPDEST PUSH1 0x4 DUP5 ADD SLOAD PUSH1 0x1 DUP6 ADD SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP3 SWAP1 DIV AND ISZERO PUSH2 0x30B8 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xA34123A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xA34123A7 SWAP2 PUSH2 0x2F39 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP3 DIV SWAP1 SIGNEXTEND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A62 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F66 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F8A SWAP2 SWAP1 PUSH2 0x57D5 JUMP JUMPDEST POP POP PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x514EA4BF SWAP1 PUSH2 0x2FC8 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x363C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FE4 SWAP2 SWAP1 PUSH2 0x5A2C JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3010 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3034 SWAP2 SWAP1 PUSH2 0x568D JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x3070 DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP9 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3691 JUMP JUMPDEST DUP5 ADD SWAP4 POP PUSH2 0x30A9 DUP8 PUSH1 0x3 ADD SLOAD DUP3 SUB DUP9 PUSH1 0x1 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x2 DUP9 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP8 ADD SSTORE ADD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND PUSH2 0x30D5 PUSH1 0x60 DUP15 ADD PUSH1 0x40 DUP16 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x30F8 JUMPI PUSH2 0x30F3 PUSH1 0x60 DUP14 ADD PUSH1 0x40 DUP15 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH2 0x30FA JUMP JUMPDEST DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP14 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3117 SWAP2 SWAP1 PUSH2 0x5643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x313A JUMPI PUSH2 0x3135 PUSH1 0x80 DUP15 ADD PUSH1 0x60 DUP16 ADD PUSH2 0x5643 JUMP JUMPDEST PUSH2 0x313C JUMP JUMPDEST DUP4 JUMPDEST PUSH1 0x1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x9E3D67B PUSH1 0xE3 SHL DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0x4F1EB3D8 SWAP2 PUSH2 0x318F SWAP2 DUP13 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 SWAP3 DIV SWAP1 SIGNEXTEND SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x591B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31E0 SWAP2 SWAP1 PUSH2 0x565F JUMP JUMPDEST PUSH1 0x4 DUP10 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL DUP8 DUP11 SUB DUP5 AND MUL OR AND DUP7 DUP10 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP3 DUP2 AND SWAP14 POP AND SWAP11 POP DUP13 CALLDATALOAD SWAP1 PUSH32 0x40D0EFD1A53D60ECBF40971B9DAF7DC90178C3AADC7AAB1765632738FA8B8F01 SWAP1 PUSH2 0xD26 SWAP1 DUP12 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH2 0x5958 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32E0 SWAP2 SWAP1 PUSH2 0x5141 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xD44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1472 PUSH1 0x2 DUP4 PUSH2 0x42EE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x334B DUP3 PUSH2 0x187E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x338E CALLER DUP3 PUSH2 0x3B49 JUMP JUMPDEST PUSH2 0x33AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5A9B JUMP JUMPDEST POP JUMP JUMPDEST DUP1 TIMESTAMP GT ISZERO PUSH2 0x33AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x151C985B9CD858DD1A5BDB881D1BDBC81BDB19 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x3420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x51C403F9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xA38807F2 SWAP2 PUSH2 0x3520 SWAP2 PUSH1 0x1 PUSH1 0x50 SHL DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND SWAP1 PUSH1 0x4 ADD PUSH2 0x5A4E JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x354C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3570 SWAP2 SWAP1 PUSH2 0x547A JUMP JUMPDEST PUSH1 0x5 DUP8 ADD SLOAD SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP7 AND SWAP2 AND LT SWAP3 POP PUSH2 0x3595 SWAP2 POP POP JUMPI POP PUSH2 0x3638 JUMP JUMPDEST PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO PUSH2 0x35EF JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH2 0x35E3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 DUP2 AND DUP5 SUB AND SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x40 SHL PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x6 DUP5 ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x5 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP4 AND OR SWAP1 SSTORE PUSH2 0x3614 PUSH2 0x3D1F JUMP JUMPDEST DUP4 PUSH1 0x5 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP7 SWAP1 SHL AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP6 DUP2 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP6 ADD MSTORE SWAP1 DUP6 SWAP1 SIGNEXTEND SWAP1 SHL PUSH1 0x37 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x1A DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x36C7 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x36BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x368A JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x36D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0xD44 JUMPI PUSH2 0xD44 CALLER SELFBALANCE PUSH2 0x3E06 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x375C DUP4 DUP4 PUSH2 0x33F8 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x1472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x37B4 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x38D6 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3828 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x38B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x298A SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x38F7 JUMPI PUSH2 0x38F2 DUP5 DUP4 DUP4 PUSH2 0x41A7 JUMP JUMPDEST PUSH2 0x298A JUMP JUMPDEST PUSH2 0x298A DUP5 DUP5 DUP5 DUP5 PUSH2 0x42FA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1472 DUP3 PUSH2 0x444A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x40 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE POP SWAP1 POP PUSH2 0x3980 PUSH32 0x0 DUP3 PUSH2 0x33F8 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x39F5 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x3A0C DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x444E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A1D DUP10 PUSH1 0xA0 ADD MLOAD PUSH2 0x444E JUMP JUMPDEST SWAP1 POP PUSH2 0x3A34 DUP4 DUP4 DUP4 DUP13 PUSH1 0xC0 ADD MLOAD DUP14 PUSH1 0xE0 ADD MLOAD PUSH2 0x4775 JUMP JUMPDEST SWAP8 POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C8A7D8D DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3A86 SWAP2 SWAP1 PUSH2 0x5B4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AB5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x58D6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3ACE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AE2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B06 SWAP2 SWAP1 PUSH2 0x57D5 JUMP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP DUP5 LT DUP1 ISZERO SWAP1 PUSH2 0x3B25 JUMPI POP DUP6 PUSH2 0x120 ADD MLOAD DUP4 LT ISZERO JUMPDEST PUSH2 0x3B41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84F SWAP1 PUSH2 0x5AF4 JUMP JUMPDEST POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B54 DUP3 PUSH2 0x32FD JUMP JUMPDEST PUSH2 0x3B8F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E4F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B9A DUP4 PUSH2 0x187E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x3BD5 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BCA DUP5 PUSH2 0x828 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x1032 JUMPI POP PUSH2 0x1032 DUP2 DUP6 PUSH2 0x2D01 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BF8 DUP3 PUSH2 0x187E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3C3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F28 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E05 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3C8D DUP4 DUP4 DUP4 PUSH2 0x94C JUMP JUMPDEST PUSH2 0x3C98 PUSH1 0x0 DUP3 PUSH2 0x330E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3CBA SWAP1 DUP3 PUSH2 0x4839 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3CDD SWAP1 DUP3 PUSH2 0x4845 JUMP JUMPDEST POP PUSH2 0x3CEA PUSH1 0x2 DUP3 DUP5 PUSH2 0x4851 JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0x3D32 JUMPI TIMESTAMP PUSH2 0x10C4 JUMP JUMPDEST POP PUSH4 0xFFFFFFFF SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP4 DUP4 PUSH2 0x4867 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D56 DUP3 PUSH2 0x187E JUMP JUMPDEST SWAP1 POP PUSH2 0x3D64 DUP2 PUSH1 0x0 DUP5 PUSH2 0x94C JUMP JUMPDEST PUSH2 0x3D6F PUSH1 0x0 DUP4 PUSH2 0x330E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP5 AND ISZERO MUL ADD SWAP1 SWAP2 AND DIV ISZERO PUSH2 0x3DAD JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3DAD SWAP2 PUSH2 0x509D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3DCF SWAP1 DUP4 PUSH2 0x4839 JUMP JUMPDEST POP PUSH2 0x3DDB PUSH1 0x2 DUP4 PUSH2 0x48CB JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3E52 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3E33 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3EB4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3EB9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x94C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x535445 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x3F04 DUP7 DUP7 PUSH2 0x48D7 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1032 DUP5 DUP5 DUP5 PUSH2 0x4952 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3FB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FBF DUP2 PUSH2 0x32FD JUMP JUMPDEST ISZERO PUSH2 0x4010 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH28 0x115490CDCC8C4E881D1BDAD95B88185B1C9958591E481B5A5B9D1959 PUSH1 0x22 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x401C PUSH1 0x0 DUP4 DUP4 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x403E SWAP1 DUP3 PUSH2 0x4845 JUMP JUMPDEST POP PUSH2 0x404B PUSH1 0x2 DUP3 DUP5 PUSH2 0x4851 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5F51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP1 PUSH2 0x1472 JUMPI POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB PUSH1 0x1 PUSH1 0xB0 SHL DUP1 DUP5 DIV DUP3 AND DUP4 DUP2 ADD SWAP1 SWAP3 AND MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB NOT AND DUP7 OR SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD SWAP1 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP3 SSTORE SWAP2 DUP8 ADD MLOAD SWAP6 ADD DUP1 SLOAD SWAP3 DUP8 ADD MLOAD PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT SWAP7 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP4 SWAP1 SWAP4 AND OR SWAP1 SWAP2 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4160 DUP5 DUP5 DUP5 PUSH2 0x3BE5 JUMP JUMPDEST PUSH2 0x416C DUP5 DUP5 DUP5 DUP5 PUSH2 0x4A1C JUMP JUMPDEST PUSH2 0x298A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DD3 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4223 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4204 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4285 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x428A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x42B8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x42B8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x10B1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x14D5 PUSH1 0xF2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP4 DUP4 PUSH2 0x4B84 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x437E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x435F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x43E0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43E5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4413 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4413 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x27EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x29AA23 PUSH1 0xE9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x4465 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x446D JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x44AB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x44BF JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x44D1 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x44FB JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x451A JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x4539 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x4558 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x4577 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x4596 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x45B5 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x45D5 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x45F5 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x4615 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x4635 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x4655 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x4675 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x4695 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x46B5 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x46D6 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x46F6 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x4715 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x4732 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x474D JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x4749 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP2 MOD ISZERO PUSH2 0x4760 JUMPI PUSH1 0x1 PUSH2 0x4763 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4795 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x47C0 JUMPI PUSH2 0x47B9 DUP6 DUP6 DUP6 PUSH2 0x4B9C JUMP JUMPDEST SWAP1 POP PUSH2 0x4830 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4822 JUMPI PUSH1 0x0 PUSH2 0x47E7 DUP8 DUP7 DUP7 PUSH2 0x4B9C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x47F6 DUP8 DUP10 DUP7 PUSH2 0x4BFF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x4817 JUMPI DUP1 PUSH2 0x4819 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x4830 JUMP JUMPDEST PUSH2 0x482D DUP6 DUP6 DUP5 PUSH2 0x4BFF JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP4 DUP4 PUSH2 0x4C3C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP4 DUP4 PUSH2 0x4D02 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1032 DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x4D4C JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x48A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DB1 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x48B8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP4 DUP4 PUSH2 0x4DE3 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x491B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F06 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x492C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x49ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x49B2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x499A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x49DF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x4A00 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A30 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3F55 JUMP JUMPDEST PUSH2 0x4A3C JUMPI POP PUSH1 0x1 PUSH2 0x1032 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B4A PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x4A51 PUSH2 0x330A JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4AB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4AA0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4AE5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND 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 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5DD3 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x4EB7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4BBC JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x4BDF DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3691 JUMP JUMPDEST SWAP1 POP PUSH2 0x4830 PUSH2 0x4BFA DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3691 JUMP JUMPDEST PUSH2 0x4EC6 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4C1F JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x1032 PUSH2 0x4BFA DUP4 PUSH1 0x1 PUSH1 0x60 SHL DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3691 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CF8 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4C6F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4C8C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x4CBC JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x1472 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1472 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D0E DUP4 DUP4 PUSH2 0x4B84 JUMP JUMPDEST PUSH2 0x4D44 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1472 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1472 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x4DB1 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x368A JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x4DC4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0x368A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CF8 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4E16 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4E36 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP5 SLOAD PUSH1 0x2 SWAP1 SWAP4 MUL ADD SWAP2 DUP3 SSTORE PUSH1 0x1 SWAP4 DUP5 ADD SLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE DUP4 SLOAD DUP3 MSTORE DUP10 DUP4 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x4E75 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 PUSH1 0x2 PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 DUP5 MUL ADD DUP3 DUP2 SSTORE PUSH1 0x1 SWAP1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP3 SWAP1 SWAP4 SSTORE DUP9 DUP2 MSTORE DUP10 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP5 POP PUSH2 0x1472 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1032 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x4EDC JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4F1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E29 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4F26 DUP6 PUSH2 0x3F55 JUMP JUMPDEST PUSH2 0x4F77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4FB5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4F96 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5017 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x501C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x502C DUP3 DUP3 DUP7 PUSH2 0x5037 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x5046 JUMPI POP DUP2 PUSH2 0x368A JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x5056 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x49B2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x499A JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x50C3 JUMPI POP PUSH2 0x33AA JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x33AA SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x50F1 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x50DD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x763 DUP2 PUSH2 0x5D5A JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5136 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x368A DUP2 PUSH2 0x5D5A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5152 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x368A DUP2 PUSH2 0x5D5A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x516F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x517A DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x518A DUP2 PUSH2 0x5D5A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x51AA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x51B5 DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x51C5 DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP3 POP PUSH2 0x51D3 PUSH1 0x40 DUP7 ADD PUSH2 0x5112 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x51E3 DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5202 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x520D DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x521D DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5243 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x524E DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x525E DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x527F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x528F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x52A2 PUSH2 0x529D DUP3 PUSH2 0x5D0D JUMP JUMPDEST PUSH2 0x5CEA JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x52B6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52E6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x52F1 DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x518A DUP2 PUSH2 0x5D6F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5313 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x531E DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5340 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x534B DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x5362 DUP2 PUSH2 0x5D5A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5385 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5390 DUP2 PUSH2 0x5D5A JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x53AE DUP2 PUSH2 0x5DA1 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x53DA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x53F0 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5403 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5411 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x5424 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5447 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x368A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x546F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x368A DUP2 PUSH2 0x5D7D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x548F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x549F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x54B0 DUP2 PUSH2 0x5D5A JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x54C9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x51E3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54F6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x550B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x551B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5529 PUSH2 0x529D DUP3 PUSH2 0x5D0D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x553D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x4830 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5D2E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555F JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x5599 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x55B6 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE PUSH1 0x60 DUP5 SLT ISZERO PUSH2 0x55C7 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP4 POP DUP2 DUP5 LT DUP2 DUP6 GT OR ISZERO PUSH2 0x55DB JUMPI INVALID JUMPDEST POP DUP3 PUSH1 0x40 MSTORE DUP5 CALLDATALOAD SWAP3 POP PUSH2 0x55ED DUP4 PUSH2 0x5D5A JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 PUSH2 0x55FF DUP4 PUSH2 0x5D5A JUMP JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x5611 PUSH1 0x40 DUP7 ADD PUSH2 0x5112 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x5624 PUSH1 0x60 DUP6 ADD PUSH2 0x50F5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5654 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x368A DUP2 PUSH2 0x5D8C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5671 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x567C DUP2 PUSH2 0x5D8C JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x518A DUP2 PUSH2 0x5D8C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x56A4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x56AF DUP2 PUSH2 0x5D8C JUMP JUMPDEST DUP1 SWAP6 POP POP PUSH1 0x20 DUP7 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP7 ADD MLOAD SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD PUSH2 0x56CF DUP2 PUSH2 0x5D8C JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x56E0 DUP2 PUSH2 0x5D8C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x5708 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x5713 DUP2 PUSH2 0x5D5A JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH2 0x5724 DUP2 PUSH2 0x5D7D JUMP JUMPDEST SWAP6 POP PUSH2 0x5732 PUSH1 0x40 DUP10 ADD PUSH2 0x5100 JUMP JUMPDEST SWAP5 POP PUSH2 0x5740 PUSH1 0x60 DUP10 ADD PUSH2 0x5100 JUMP JUMPDEST SWAP4 POP PUSH2 0x574E PUSH1 0x80 DUP10 ADD PUSH2 0x5100 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH2 0x575E DUP2 PUSH2 0x5DA1 JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x576F DUP2 PUSH2 0x5D6F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5790 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x146F DUP3 PUSH2 0x5112 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x57AA JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x57C3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x518A DUP2 PUSH2 0x5D5A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x57E7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x580D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x5831 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5844 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5852 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5863 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x588A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5D2E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x2 DUP6 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP5 SWAP1 SIGNEXTEND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x502C SWAP1 DUP4 ADD DUP5 PUSH2 0x5872 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x60 DUP5 ADD MSTORE AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5A14 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x5A02 DUP6 DUP4 MLOAD PUSH2 0x5872 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x59E6 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP3 DUP4 SIGNEXTEND DUP2 MSTORE SWAP2 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND DUP2 MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x146F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5872 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x139BDD08185C1C1C9BDD9959 PUSH1 0xA2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH25 0x22A9219B99189D103737B732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x39 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH20 0x507269636520736C69707061676520636865636B PUSH1 0x60 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH16 0x125B9D985B1A59081D1BDAD95B881251 PUSH1 0x82 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP3 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD PUSH3 0xFFFFFF AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP3 ADD MLOAD SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 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 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP14 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x40 DUP4 ADD MSTORE DUP11 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH3 0xFFFFFF DUP10 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x2 DUP9 SWAP1 SIGNEXTEND PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x180 DUP2 ADD PUSH2 0x5C5E PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x589E JUMP JUMPDEST PUSH2 0x5C6B PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x58A5 JUMP JUMPDEST DUP6 PUSH2 0x100 DUP4 ADD MSTORE DUP5 PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x5C87 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x58A5 JUMP JUMPDEST PUSH2 0x5C95 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x58A5 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5CBC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5CD5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3F0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5D05 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5D20 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5D49 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5D31 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x298A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x33AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x33AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x33AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x33AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x33AA JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F722063616C6C45524337 ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E73666572206F6620746F6B656E2074686174 KECCAK256 PUSH10 0x73206E6F74206F776EDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x58221220609504B7BE8C39EA06A62C550504C104 0x4F PUSH26 0x91B7D98F4136B8D46336D03E2C4A64736F6C6343000706003300 ","sourceMap":"135:581:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;461:10:18;-1:-1:-1;;;;;475:5:18;461:19;;453:41;;;;;-1:-1:-1;;;453:41:18;;;;;;;;;;;;-1:-1:-1;;;453:41:18;;;;;;;;;;;;;;;135:581:39;;;;;948:148:42;;;;;;;;;;-1:-1:-1;948:148:42;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17831:151:13;;;;;;:::i;:::-;;:::i;4502:98:46:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19150:215:13:-;;;;;;;;;;-1:-1:-1;19150:215:13;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6751:395:46:-;;;;;;;;;;-1:-1:-1;6751:395:46;;;;;:::i;:::-;;:::i;10806:2320:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1457:78:18:-;;;:::i;448:722:20:-;;;;;;:::i;:::-;;:::i;862:502:15:-;;;;;;;;;;-1:-1:-1;862:502:15;;;;;:::i;:::-;;:::i;6245:208:46:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8549:2200:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;8071:300:46:-;;;;;;;;;;-1:-1:-1;8071:300:46;;;;;:::i;:::-;;:::i;16940:255:13:-;;;;;;:::i;:::-;;:::i;6014:160:46:-;;;;;;;;;;-1:-1:-1;6014:160:46;;;;;:::i;:::-;;:::i;2038:126:14:-;;;;;;;;;;;;;:::i;1354:524::-;;;;;;;;;;;;;:::i;641:72:39:-;;;;;;;;;;-1:-1:-1;641:72:39;;;;;:::i;:::-;;:::i;8437:149:46:-;;;;;;;;;;-1:-1:-1;8437:149:46;;;;;:::i;:::-;;:::i;17252:407:13:-;;;;;;:::i;:::-;;:::i;1380:298:21:-;;;;;;:::i;:::-;;:::i;550:405:18:-;;;;;;:::i;:::-;;:::i;431:39:17:-;;;;;;;;;;;;;:::i;6525:169:46:-;;;;;;;;;;-1:-1:-1;6525:169:46;;;;;:::i;:::-;;:::i;4265:175::-;;;;;;;;;;-1:-1:-1;4265:175:46;;;;;:::i;:::-;;:::i;8426:66:13:-;;;;;;;;;;;;;:::i;3990:218:46:-;;;;;;;;;;-1:-1:-1;3990:218:46;;;;;:::i;:::-;;:::i;4532:619:13:-;;;;;;;;;;-1:-1:-1;4532:619:13;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;2208:1100:14:-;;;;;;:::i;:::-;;:::i;5538:2087:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;4664:102:46:-;;;;;;;;;;;;;:::i;17667:156:13:-;;;;;;:::i;:::-;;:::i;3315:1160::-;;;;;;;;;;-1:-1:-1;3315:1160:13;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;7491:290:46:-;;;;;;;;;;-1:-1:-1;7491:290:46;;;;;:::i;:::-;;:::i;1719:358:21:-;;;;;;:::i;:::-;;:::i;318:669:16:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8652:282:46:-;;;;;;;;;;-1:-1:-1;8652:282:46;;;;;:::i;:::-;;:::i;1016:323:21:-;;;;;;:::i;:::-;;:::i;337:41:17:-;;;;;;;;;;;;;:::i;8108:244:13:-;;;;;;;;;;-1:-1:-1;8108:244:13;;;;;:::i;:::-;;:::i;1003:406:18:-;;;;;;:::i;:::-;;:::i;16151:732:13:-;;;;;;:::i;:::-;;:::i;7847:162:46:-;;;;;;;;;;-1:-1:-1;7847:162:46;;;;;:::i;:::-;;:::i;693:282:21:-;;;;;;:::i;:::-;;:::i;13183:2911:13:-;;;;;;:::i;:::-;;:::i;948:148:42:-;-1:-1:-1;;;;;;1056:33:42;;1033:4;1056:33;;;;;;;;;;;;;948:148;;;;:::o;17831:151:13:-;8061:19;:17;:19::i;:::-;17940:15:::1;:34:::0;;-1:-1:-1;;;;;;17940:34:13::1;-1:-1:-1::0;;;;;17940:34:13;;;::::1;::::0;;;::::1;::::0;;17831:151::o;4502:98:46:-;4588:5;4581:12;;;;;;;;-1:-1:-1;;4581:12:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4556:13;;4581:12;;4588:5;;4581:12;;4588:5;4581:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4502:98;:::o;19150:215:13:-;19235:7;19263:16;19271:7;19263;:16::i;:::-;19255:54;;;;-1:-1:-1;;;19255:54:13;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;19329:19:13;;;;:10;:19;;;;;:28;-1:-1:-1;;;19329:28:13;;-1:-1:-1;;;;;19329:28:13;;19150:215::o;6751:395:46:-;6831:13;6847:23;6862:7;6847:14;:23::i;:::-;6831:39;;6894:5;-1:-1:-1;;;;;6888:11:46;:2;-1:-1:-1;;;;;6888:11:46;;;6880:57;;;;-1:-1:-1;;;6880:57:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6972:5;-1:-1:-1;;;;;6956:21:46;:12;:10;:12::i;:::-;-1:-1:-1;;;;;6956:21:46;;:69;;;;6981:44;7005:5;7012:12;:10;:12::i;6981:44::-;6948:159;;;;-1:-1:-1;;;6948:159:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7118:21;7127:2;7131:7;7118:8;:21::i;:::-;6751:395;;;:::o;10806:2320:13:-;11031:15;;10957:14;;7842:30;10957:14;7842:21;:30::i;:::-;10996:6:::1;:15;;;170:24:19;185:8;170:14;:24::i;:::-;11108:1:13::2;11089:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;11089:20:13::2;;11081:29;;;::::0;::::2;;11160:14:::0;::::2;11121:25;11149:26:::0;;;:10:::2;:26;::::0;;;;;;;;11216:18:::2;::::0;::::2;::::0;11149:26;;-1:-1:-1;;;11216:18:13;;::::2;-1:-1:-1::0;;;;;11216:18:13::2;::::0;11274:16:::2;::::0;;;;;::::2;;:::i;:::-;-1:-1:-1::0;;;;;11253:37:13::2;:17;-1:-1:-1::0;;;;;11253:37:13::2;;;11245:46;;;::::0;::::2;;11358:15;::::0;;::::2;::::0;-1:-1:-1;;;;;11358:15:13::2;11304:34;11341:33:::0;;;:16:::2;:33;::::0;;;;;;;11304:70;;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;;;11304:70:13;;::::2;::::0;;;;;::::2;::::0;;;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;;;11304:70:13;;::::2;;;::::0;;;;11416:44:::2;11443:7;11304:70:::0;11416:26:::2;:44::i;:::-;11385:76;;11567:29;11581:8;11591:4;11567:13;:29::i;:::-;11640:18;::::0;::::2;::::0;-1:-1:-1;;;;;11630:9:13;::::2;::::0;::::2;::::0;-1:-1:-1;;;11640:18:13;::::2;;::::0;;::::2;::::0;-1:-1:-1;;;11660:18:13;::::2;::::0;::::2;11680:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;11630:67;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11609:88:::0;;-1:-1:-1;11609:88:13;-1:-1:-1;11729:17:13::2;::::0;::::2;;11718:28:::0;::::2;::::0;::::2;::::0;:60:::2;;;11761:6;:17;;;11750:7;:28;;11718:60;11710:93;;;;-1:-1:-1::0;;;11710:93:13::2;;;;;;;:::i;:::-;11873:18;::::0;::::2;::::0;11816:19:::2;::::0;11838:74:::2;::::0;11866:4:::2;::::0;-1:-1:-1;;;11873:18:13;::::2;;::::0;;::::2;::::0;-1:-1:-1;;;11893:18:13;::::2;::::0;::::2;11838:19;:74::i;:::-;11816:96;;11985:32;12019::::0;12059:4:::2;-1:-1:-1::0;;;;;12059:14:13::2;;12074:11;12059:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11982:104;;;;;;;12194:198;12259:8;:33;;;12232:24;:60;12315:17;-1:-1:-1::0;;;;;12194:198:13::2;-1:-1:-1::0;;;12194:15:13::2;:198::i;:::-;12099:20;::::0;::::2;:308:::0;;-1:-1:-1;;;;;;12099:308:13;::::2;12136:271:::0;;::::2;-1:-1:-1::0;;;;;12099:308:13;;::::2;;::::0;::::2;::::0;;;::::2;::::0;;12578:33:::2;::::0;::::2;::::0;12513:198:::2;::::0;12551:60;;::::2;::::0;12513:198;::::2;-1:-1:-1::0;;;12513:15:13::2;:198::i;:::-;12418:20;::::0;::::2;:308:::0;;-1:-1:-1;;;;;12418:308:13;;::::2;12455:271:::0;;::::2;-1:-1:-1::0;;;12418:308:13;;;::::2;::::0;::::2;;;;::::0;;;::::2;::::0;;12739:33:::2;::::0;::::2;:60:::0;;;12810:33:::2;::::0;::::2;:60:::0;;;13015:16:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;12995:17;:36;12974:8;:18;;;:57;;;;;-1:-1:-1::0;;;;;12974:57:13::2;;;;;-1:-1:-1::0;;;;;12974:57:13::2;;;;;;13067:6;:14;;;13049:69;13083:6;:16;;;;;;;;;;:::i;:::-;13101:7;13110;13049:69;;;;;;;;:::i;:::-;;;;;;;;205:1:19;;;;;;;7883::13::1;10806:2320:::0;;;;:::o;1457:78:18:-;1515:12;:10;:12::i;:::-;1457:78::o;448:722:20:-;636:12;678:6;-1:-1:-1;;;;;669:15:20;:6;-1:-1:-1;;;;;669:15:20;;661:24;;;;;;718:7;-1:-1:-1;;;;;703:31:20;;735:6;743;751:3;703:52;;;;;;;;;;;;;-1:-1:-1;;;;;703:52:20;;;;;;-1:-1:-1;;;;;703:52:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;703:52:20;;-1:-1:-1;;;;;;772:18:20;;768:395;;829:7;-1:-1:-1;;;;;814:34:20;;849:6;857;865:3;814:55;;;;;;;;;;;;;-1:-1:-1;;;;;814:55:20;;;;;;-1:-1:-1;;;;;814:55:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;814:55:20;884:42;;;-1:-1:-1;;;884:42:20;;-1:-1:-1;;;;;884:42:20;;;;;;;;;814:55;;-1:-1:-1;884:28:20;;;;;;:42;;;;;-1:-1:-1;;884:42:20;;;;;;;;-1:-1:-1;884:28:20;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:395;;;960:28;1016:4;-1:-1:-1;;;;;1004:23:20;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1004:25:20;;-1:-1:-1;;;;;;1048:25:20;;1044:108;;1106:4;-1:-1:-1;;;;;1094:28:20;;1123:12;1094:42;;;;;;;;;;;;;-1:-1:-1;;;;;1094:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1044:108;768:395;;448:722;;;;;;:::o;862:502:15:-;1016:31;1050:36;;;;1061:4;1050:36;:::i;:::-;1016:70;;1097:59;1131:7;1140;:15;;;1097:33;:59::i;:::-;-1:-1:-1;1173:15:15;;1169:88;;1194:15;;:22;1218:13;;;;1190:67;;1194:22;1233:10;1245:11;1190:3;:67::i;:::-;1272:15;;1268:88;;1289:67;1293:7;:15;;;:22;;;1317:7;:13;;;1332:10;1344:11;1289:3;:67::i;:::-;862:502;;;;;:::o;6245:208:46:-;6306:7;6425:21;:12;:19;:21::i;:::-;6418:28;;6245:208;:::o;8549:2200:13:-;8742:17;8774:15;8804;8693:6;:15;;;170:24:19;185:8;170:14;:24::i;:::-;8886:14:13;::::1;8847:25;8875:26:::0;;;:10:::1;:26;::::0;;;;;;;8968:15:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;8968:15:13;::::1;8951:33:::0;;:16:::1;:33:::0;;;;;8914:70;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;8914:70:13;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;8914:70:13;;::::1;::::0;::::1;::::0;;;;;;9089:499;;::::1;::::0;::::1;::::0;;9135:14;;9089:499;::::1;::::0;;9176:14;;9089:499;;::::1;::::0;;::::1;::::0;9214:11;;9089:499:::1;::::0;;;;9567:4:::1;9089:499:::0;;;;-1:-1:-1;;;9255:18:13;::::1;;::::0;;::::1;9089:499:::0;::::1;::::0;;;;;;;;-1:-1:-1;;;9303:18:13;;::::1;::::0;::::1;9089:499:::0;::::1;::::0;;;;9356:21;;::::1;;9089:499:::0;;;;9412:21;;::::1;;9089:499:::0;;;;9464:17;;::::1;;8968:15;9089:499:::0;;;9512:17;::::1;;9089:499:::0;;;;8875:26;8847:25;9062:537:::1;::::0;:12:::1;:537::i;:::-;9669:18;::::0;::::1;::::0;9024:575;;-1:-1:-1;9024:575:13;;-1:-1:-1;9024:575:13;-1:-1:-1;9024:575:13;-1:-1:-1;9612:19:13::1;::::0;9634:74:::1;::::0;9662:4:::1;::::0;-1:-1:-1;;;9669:18:13;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;9689:18:13;::::1;::::0;::::1;9634:19;:74::i;:::-;9612:96;;9783:32;9817::::0;9857:4:::1;-1:-1:-1::0;;;;;9857:14:13::1;;9872:11;9857:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9780:104;;;;;;;9943:183;10004:8;:33;;;9977:24;:60;10056:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;10056:18:13::1;-1:-1:-1::0;;;;;9943:183:13::1;-1:-1:-1::0;;;9943:15:13::1;:183::i;:::-;9897:20;::::0;::::1;:240:::0;;-1:-1:-1;;;;;9897:240:13;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;9897:240:13;;::::1;;::::0;;10255:33:::1;::::0;::::1;::::0;9897:240;10307:18;::::1;::::0;10194:183:::1;::::0;10228:60;;::::1;::::0;-1:-1:-1;;;10307:18:13;;;::::1;;::::0;10194:15:::1;:183::i;:::-;10148:20;::::0;::::1;:240:::0;;-1:-1:-1;;;;;;;;10148:240:13;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;10401:29:::1;10148:8:::0;10425:4;10401:13:::1;:29::i;:::-;10488:33;::::0;::::1;:60:::0;;;10559:33:::1;::::0;::::1;:60:::0;;;10630:18:::1;::::0;::::1;:31:::0;;-1:-1:-1;;;;;;;;10630:31:13;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;;::::0;;10679:62:::1;::::0;10697:14;::::1;::::0;10679:62:::1;::::0;::::1;::::0;10652:9;;10724:7;;10733;;10679:62:::1;:::i;:::-;;;;;;;;205:1:19;;;;;;8549:2200:13::0;;;;;;:::o;8071:300:46:-;8230:41;8249:12;:10;:12::i;:::-;8263:7;8230:18;:41::i;:::-;8222:103;;;;-1:-1:-1;;;8222:103:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8336:28;8346:4;8352:2;8356:7;8336:9;:28::i;16940:255:13:-;17025:7;7842:30;7864:7;7842:21;:30::i;:::-;17045:25:::1;17073:19:::0;;;:10:::1;:19;::::0;;;;17134::::1;:17;:19::i;:::-;17103:28;::::0;::::1;:50:::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;17103:50:13::1;-1:-1:-1::0;;;;;17103:50:13;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;17164:19:13::1;::::0;;::::1;:23:::0;-1:-1:-1;;16940:255:13:o;6014:160:46:-;-1:-1:-1;;;;;6137:20:46;;6111:7;6137:20;;;:13;:20;;;;;:30;;6161:5;6137:23;:30::i;:::-;6130:37;;6014:160;;;;;:::o;2038:126:14:-;2098:66;2038:126;:::o;1354:524::-;1412:7;1633:66;1722:8;1753:11;1787:13;:11;:13::i;:::-;1831:4;1480:375;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1480:375:14;;;;;;;;;;;;;;;;;;;;;;;;1452:418;;;;;;1432:438;;1354:524;:::o;641:72:39:-;693:4;:12;641:72::o;8437:149:46:-;8540:39;8557:4;8563:2;8567:7;8540:39;;;;;;;;;;;;:16;:39::i;17252:407:13:-;17330:7;7842:30;7864:7;7842:21;:30::i;:::-;17350:25:::1;17378:19:::0;;;:10:::1;:19;::::0;;;;17430:18:::1;::::0;::::1;::::0;-1:-1:-1;;;17430:18:13;::::1;-1:-1:-1::0;;;;;17430:18:13::1;:23:::0;:65;::::1;;;-1:-1:-1::0;17470:20:13::1;::::0;::::1;::::0;-1:-1:-1;;;;;17470:20:13::1;:25:::0;17430:65:::1;:107;;;;-1:-1:-1::0;17512:20:13::1;::::0;::::1;::::0;-1:-1:-1;;;17512:20:13;::::1;-1:-1:-1::0;;;;;17512:20:13::1;:25:::0;17430:107:::1;:148;;;;-1:-1:-1::0;17554:19:13::1;::::0;::::1;::::0;:24;17430:148:::1;17408:181;;;::::0;::::1;;17607:19;::::0;;;:10:::1;:19;::::0;;;;17600:26;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;17637:14:::1;17618:7:::0;17637:5:::1;:14::i;1380:298:21:-:0;1580:90;;;-1:-1:-1;;;1580:90:21;;1614:10;1580:90;;;;1634:4;1580:90;;;;;;;;;;;;;;;;1656:4;1580:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1580:33:21;;;;;:90;;;;;-1:-1:-1;;1580:90:21;;;;;;;-1:-1:-1;1580:33:21;:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1380:298;;;;;;:::o;550:405:18:-;648:20;678:5;-1:-1:-1;;;;;671:23:18;;703:4;671:38;;;;;;;;;;;;;-1:-1:-1;;;;;671:38:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;671:38:18;;-1:-1:-1;728:29:18;;;;720:60;;;;;-1:-1:-1;;;720:60:18;;;;;;;;;;;;-1:-1:-1;;;720:60:18;;;;;;;;;;;;;;;797:16;;793:155;;837:5;-1:-1:-1;;;;;830:22:18;;853:12;830:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;881:55;912:9;923:12;881:30;:55::i;431:39:17:-;;;:::o;6525:169:46:-;6600:7;;6641:22;:12;6657:5;6641:15;:22::i;:::-;-1:-1:-1;6619:44:46;6525:169;-1:-1:-1;;;6525:169:46:o;4265:175::-;4337:7;4363:70;4380:7;4363:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;8426:66:13:-;8475:13;8426:66;:::o;3990:218:46:-;4062:7;-1:-1:-1;;;;;4089:19:46;;4081:74;;;;-1:-1:-1;;;4081:74:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4172:20:46;;;;;;:13;:20;;;;;:29;;:27;:29::i;4532:619:13:-;4655:39;4862:19;;;:10;:19;;;;;;;;4835:46;;;;;;;;;-1:-1:-1;;;;;4835:46:13;;;;-1:-1:-1;;;;;;;;4835:46:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;4835:46:13;;;;;;;;-1:-1:-1;;;4835:46:13;;;;;;;;;;;;;;-1:-1:-1;;;4835:46:13;;;;;;;;;;;;-1:-1:-1;;;;;;;;4835:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4835:46:13;;;;;;;-1:-1:-1;;;4835:46:13;;;;;;;;-1:-1:-1;;;4835:46:13;;;;;;;;;;;;;;;4655:39;;;;;;4835:46;4892:49;;;;-1:-1:-1;;;4892:49:13;;;;;;;:::i;:::-;4974:8;:40;;;5029:8;:26;;;5070:8;:28;;;5113:8;:19;;;4952:191;;;;;;;;;4532:619;;;;;:::o;2208:1100:14:-;2408:8;170:24:19;185:8;170:14;:24::i;:::-;2429:14:14::1;2559:18;:16;:18::i;:::-;2098:66;2638:7:::0;2647;2656:30:::1;2647:7:::0;2656:21:::1;:30::i;:::-;2610:87;::::0;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;2610:87:14;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2600:98;;;;::::1;::::0;-1:-1:-1;;;2487:230:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:273;;;::::1;::::0;;-1:-1:-1;;2759:16:14::1;2767:7:::0;2759::::1;:16::i;:::-;2743:32;;2805:5;-1:-1:-1::0;;;;;2794:16:14::1;:7;-1:-1:-1::0;;;;;2794:16:14::1;;;2786:60;;;::::0;;-1:-1:-1;;;2786:60:14;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2863:25;2882:5;2863:18;:25::i;:::-;2859:403;;;2954:25;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;;2954:25:14::1;::::0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2913:67:14;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2913:32:14;::::1;::::0;::::1;::::0;2946:6;;2913:67;;;;;;;;::::1;::::0;;;;-1:-1:-1;2913:67:14::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;2913:67:14;-1:-1:-1;;;;;;2913:81:14::1;-1:-1:-1::0;;;2913:81:14::1;2905:106;;;::::0;;-1:-1:-1;;;2905:106:14;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;2905:106:14;;;;;;;;;;;;;::::1;;2859:403;;;3044:24;3071:26;3081:6;3089:1;3092;3095;3071:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3071:26:14::1;::::0;-1:-1:-1;;3071:26:14;;;-1:-1:-1;;;;;;;3138:30:14;::::1;::::0;;::::1;::::0;:59:::1;;;3192:5;-1:-1:-1::0;;;;;3172:25:14::1;:16;-1:-1:-1::0;;;;;3172:25:14::1;;3138:59;3112:138;;;::::0;;-1:-1:-1;;;3112:138:14;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;3112:138:14;;;;;;;;;;;;;::::1;;2859:403;;3274:26;3283:7;3292;3274:8;:26::i;:::-;205:1:19;;2208:1100:14::0;;;;;;;:::o;5538:2087:13:-;5705:15;5735:17;5767:15;5797;5656:6;:15;;;170:24:19;185:8;170:14;:24::i;:::-;5932:492:13::1;::::0;;::::1;::::0;::::1;::::0;;;5840:16:::1;::::0;5905:530:::1;::::0;5932:492;5978:13:::1;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;-1:-1:-1::0;;;;;5932:492:13::1;;;;;6018:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5932:492:13::1;::::0;;::::1;;6055:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;5932:492;;::::0;;6103:4:::1;5932:492;::::0;::::1;::::0;;;6138:16:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;5932:492;;::::0;;::::1;;6184:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;5932:492;;;;;;6235:6;:21;;;5932:492;;;;6291:6;:21;;;5932:492;;;;6343:6;:17;;;5932:492;;;;6391:6;:17;;;5932:492;;::::0;5905:12:::1;:530::i;:::-;5867:568:::0;;-1:-1:-1;5867:568:13;;-1:-1:-1;5867:568:13;-1:-1:-1;5867:568:13;-1:-1:-1;6448:46:13::1;6454:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;6483:7;:9:::0;;-1:-1:-1;;;;;;6483:9:13;::::1;::::0;-1:-1:-1;;;;;6483:9:13;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;-1:-1:-1;6483:9:13;6448:5:::1;:46::i;:::-;6507:19;6529:70;6557:4;6564:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;6582;::::0;;;::::1;::::0;::::1;;:::i;:::-;6529:19;:70::i;:::-;6507:92;;6613:32;6647::::0;6687:4:::1;-1:-1:-1::0;;;;;6687:14:13::1;;6702:11;6687:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6610:104;;;;;;;6754:13;6783:162;6822:4;6846:84;;;;;;;;6875:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6846:84:13::1;;;;;6898:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6846:84:13::1;;;;;6918:6;:10;;;;;;;;;;:::i;:::-;6846:84;;::::0;;6783:12:::1;:162::i;:::-;6754:191;;6980:564;;;;;;;;7011:1;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7045:1;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7070:6;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7102:6;:16;;;;;;;;;;:::i;:::-;6980:564;;::::0;;::::1;;7144:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;6980:564;;;;;;7186:9;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7236:24;6980:564;;;;7301:24;6980:564;;;;7353:1;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7382:1;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7431:1;-1:-1:-1::0;;;;;6980:564:13::1;;;;;7466:1;6980:564;;;;;;7503:1;6980:564;;;;;;7531:1;6980:564;;::::0;6958:10:::1;:19;6969:7;6958:19;;;;;;;;;;;:586;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;-1:-1:-1::0;;;;;6958:586:13::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7580:7;7562:55;7589:9;7600:7;7609;7562:55;;;;;;;;:::i;:::-;;;;;;;;205:1:19;;;;;5538:2087:13::0;;;;;;:::o;4664:102:46:-;4752:7;4745:14;;;;;;;;-1:-1:-1;;4745:14:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:13;;4745:14;;4752:7;;4745:14;;4752:7;4745:14;;;;;;;;;;;;;;;;;;;;;;;;17667:156:13;8061:19;:17;:19::i;:::-;17779:16:::1;:36:::0;;-1:-1:-1;;;;;;17779:36:13::1;-1:-1:-1::0;;;;;17779:36:13;;;::::1;::::0;;;::::1;::::0;;17667:156::o;3315:1160::-;3433:12;3868:19;;;:10;:19;;;;;;;;3841:46;;;;;;;;;-1:-1:-1;;;;;3841:46:13;;;;-1:-1:-1;;;;;;;;3841:46:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;3841:46:13;;;;;;;;-1:-1:-1;;;3841:46:13;;;;;;;;;;;;;;-1:-1:-1;;;3841:46:13;;;;;;;;;;;;-1:-1:-1;;;;;;;;3841:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3841:46:13;;;;;;;-1:-1:-1;;;3841:46:13;;;;;;;;-1:-1:-1;;;3841:46:13;;;;;;;;;;;;;;;3433:12;;;;;;;;;;;;;;;;;;;;;;3841:46;3898:49;;;;-1:-1:-1;;;3898:49:13;;;;;;;:::i;:::-;3958:34;3995:16;:33;4012:8;:15;;;-1:-1:-1;;;;;3995:33:13;-1:-1:-1;;;;;3995:33:13;;;;;;;;;;;;3958:70;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3958:70:13;-1:-1:-1;;;;;3958:70:13;-1:-1:-1;;;;;3958:70:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3958:70:13;-1:-1:-1;;;;;3958:70:13;-1:-1:-1;;;;;3958:70:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;4061:8;:14;;;4090:8;:17;;;4122:7;:14;;;4151:7;:14;;;4180:7;:11;;;4206:8;:18;;;4239:8;:18;;;4272:8;:18;;;4305:8;:33;;;4353:8;:33;;;4401:8;:20;;;4436:8;:20;;;4039:428;;;;;;;;;;;;;;;;;;;;;;;;;;3315:1160;;;;;;;;;;;;;:::o;7491:290:46:-;7605:12;:10;:12::i;:::-;-1:-1:-1;;;;;7593:24:46;:8;-1:-1:-1;;;;;7593:24:46;;;7585:62;;;;;-1:-1:-1;;;7585:62:46;;;;;;;;;;;;-1:-1:-1;;;7585:62:46;;;;;;;;;;;;;;;7703:8;7658:18;:32;7677:12;:10;:12::i;:::-;-1:-1:-1;;;;;7658:32:46;;;;;;;;;;;;;;;;;-1:-1:-1;7658:32:46;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;7658:53:46;;;;;;;;;;;7741:12;:10;:12::i;:::-;-1:-1:-1;;;;;7726:48:46;;7765:8;7726:48;;;;;;;;;;;;;;;;;;;;7491:290;;:::o;1719:358:21:-;1936:50;;;-1:-1:-1;;;1936:50:21;;1960:10;1936:50;;;;1980:4;1936:50;;;;;;-1:-1:-1;;1989:17:21;-1:-1:-1;;;;;1936:23:21;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1936:50:21;:70;1932:137;;;2021:48;2039:5;2046;2053:6;2061:1;2064;2067;2021:17;:48::i;:::-;1719:358;;;;;;:::o;318:669:16:-;393:22;450:4;-1:-1:-1;;;;;438:24:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;428:34;;478:9;473:507;493:15;;;473:507;;;531:12;;576:4;595;;600:1;595:7;;;;;;;;;;;;;;;;;;:::i;:::-;568:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:73;;;;625:7;620:313;;754:2;738:6;:13;:18;734:32;;;758:8;;;734:32;839:4;831:6;827:17;817:27;;899:6;888:28;;;;;;;;;;;;:::i;:::-;881:36;;-1:-1:-1;;;881:36:16;;;;;;;;:::i;620:313::-;962:6;949:7;957:1;949:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;510:3:16;;473:507;;;;318:669;;;;:::o;8652:282:46:-;8783:41;8802:12;:10;:12::i;:::-;8816:7;8783:18;:41::i;:::-;8775:103;;;;-1:-1:-1;;;8775:103:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8888:39;8902:4;8908:2;8912:7;8921:5;8888:13;:39::i;:::-;8652:282;;;;:::o;1016:323:21:-;1228:50;;;-1:-1:-1;;;1228:50:21;;1252:10;1228:50;;;;1272:4;1228:50;;;;;;1281:5;;-1:-1:-1;;;;;1228:23:21;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1228:50:21;:58;1224:107;;;1288:43;1299:5;1306;1313:8;1323:1;1326;1329;1288:10;:43::i;337:41:17:-;;;:::o;8108:244:13:-;8198:13;8232:16;8240:7;8232;:16::i;:::-;8224:25;;;;;;8303:16;;8267:77;;-1:-1:-1;;;8267:77:13;;-1:-1:-1;;;;;8303:16:13;;;;8267:62;;:77;;8330:4;;8336:7;;8267:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8267:77:13;;;;;;;;;;;;:::i;1003:406:18:-;1149:20;1179:5;-1:-1:-1;;;;;1172:23:18;;1204:4;1172:38;;;;;;;;;;;;;-1:-1:-1;;;;;1172:38:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1172:38:18;;-1:-1:-1;1229:29:18;;;;1221:60;;;;;-1:-1:-1;;;1221:60:18;;;;;;;;;;;;-1:-1:-1;;;1221:60:18;;;;;;;;;;;;;;;1298:16;;1294:108;;1331:59;1359:5;1366:9;1377:12;1331:27;:59::i;16151:732:13:-;16255:7;7842:30;7864:7;7842:21;:30::i;:::-;-1:-1:-1;;;;;16283:23:13;::::1;16275:32;;;::::0;::::1;;16320:25;16348:19:::0;;;:10:::1;:19;::::0;;;;16401::::1;::::0;::::1;::::0;16348;;16460::::1;:17;:19::i;:::-;16514:1;16492:19;::::0;::::1;:23:::0;;;16526:28:::1;::::0;::::1;:50:::0;;-1:-1:-1;;;;;16526:50:13::1;-1:-1:-1::0;;;16526:50:13::1;::::0;::::1;;;::::0;;16605:15:::1;::::0;-1:-1:-1;16772:15:13;;::::1;::::0;-1:-1:-1;;;;;16772:15:13::1;16755:33:::0;;:16:::1;:33;::::0;;;;;;;;16719:70;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;16719:70:13;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;16719:70:13;;::::1;;;::::0;;;;;;;16526:50;;-1:-1:-1;16605:15:13::1;::::0;16589:44:::1;::::0;16648:9;;16672:10;;16697:7;;16719:70:::1;::::0;16746:7:::1;::::0;16719:26:::1;:70::i;:::-;16804:26;::::0;::::1;::::0;16589:286:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;16589:286:13;;;::::1;::::0;;;;;-1:-1:-1;;;16804:26:13;::::1;;;::::0;16845:19;;16589:286:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;7847:162:46::0;-1:-1:-1;;;;;7967:25:46;;;7944:4;7967:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7847:162::o;693:282:21:-;888:79;;;-1:-1:-1;;;888:79:21;;915:10;888:79;;;;935:4;888:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;888:26:21;;;;;:79;;;;;-1:-1:-1;;888:79:21;;;;;;;-1:-1:-1;888:26:21;:79;;;;;;;;;;13183:2911:13;13348:15;;13314:14;;7842:30;13314:14;7842:21;:30::i;:::-;13426:1:::1;13406:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;13406:21:13::1;;:46;;;-1:-1:-1::0;13451:1:13::1;13431:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;13431:21:13::1;;13406:46;13398:55;;;::::0;::::1;;13544:17;::::0;13564:16:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;13564:30:13::1;;:65;;13613:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;13564:65;;;13605:4;13564:65;13681:14:::0;::::1;13642:25;13670:26:::0;;;:10:::1;:26;::::0;;;;;;;13763:15:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;13763:15:13::1;13746:33:::0;;:16:::1;:33:::0;;;;;13709:70;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;13709:70:13;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;13709:70:13;;::::1;;;::::0;;;;;;;13544:85;;-1:-1:-1;13709:70:13;13823:44:::1;13850:7;13709:70:::0;13823:26:::1;:44::i;:::-;13927:20;::::0;::::1;::::0;;14092:18;::::1;::::0;13792:76;;-1:-1:-1;;;;;;13927:20:13;;::::1;::::0;-1:-1:-1;;;13949:20:13;;;::::1;::::0;::::1;::::0;14092:18;::::1;;:22:::0;14088:1000:::1;;14141:18;::::0;::::1;::::0;14131:52:::1;::::0;-1:-1:-1;;;14131:52:13;;-1:-1:-1;;;;;14131:9:13;::::1;::::0;::::1;::::0;:52:::1;::::0;-1:-1:-1;;;14141:18:13;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;14161:18:13;;::::1;::::0;::::1;::::0;14181:1:::1;::::0;14131:52:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14342:18:13::1;::::0;::::1;::::0;14201:32:::1;::::0;;;-1:-1:-1;;;;;14292:14:13;::::1;::::0;::::1;::::0;14307:74:::1;::::0;14335:4:::1;::::0;-1:-1:-1;;;14342:18:13;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;14362:18:13;::::1;::::0;::::1;14307:19;:74::i;:::-;14292:90;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14198:184;;;;;;;14440:199;14505:8;:33;;;14478:24;:60;14561:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;14561:18:13::1;-1:-1:-1::0;;;;;14440:199:13::1;-1:-1:-1::0;;;14440:15:13::1;:199::i;:::-;14399:255;;;;14710:199;14775:8;:33;;;14748:24;:60;14831:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;14831:18:13::1;-1:-1:-1::0;;;;;14710:199:13::1;-1:-1:-1::0;;;14710:15:13::1;:199::i;:::-;14941:33;::::0;::::1;:60:::0;;;;15016:33:::1;::::0;::::1;:60:::0;14669:255:::1;14088:1000;15170:22;::::0;-1:-1:-1;;;;;15252:31:13;::::1;:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;15252:31:13::1;;:65;;15300:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;15252:65;;;15286:11;15252:65;15356:11;-1:-1:-1::0;;;;;15336:31:13::1;:6;:17;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15336:31:13::1;;:65;;15384:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;15336:65;;;15370:11;15336:65;15555:18;::::0;::::1;::::0;15504:171:::1;::::0;-1:-1:-1;;;15504:171:13;;15169:247;;-1:-1:-1;15169:247:13;;-1:-1:-1;;;;;;15504:12:13;::::1;::::0;::::1;::::0;:171:::1;::::0;15531:9;;-1:-1:-1;;;15555:18:13;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;15588:18:13;;::::1;::::0;::::1;::::0;15169:247;;;;15504:171:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15896:20;::::0;::::1;15895:107:::0;;-1:-1:-1;;;;;;;;;;;15895:107:13;;::::1;-1:-1:-1::0;;;15973:28:13;;::::1;15895:107:::0;::::1;;;;15943:28:::0;;::::1;15895:107:::0;::::1;;::::0;;;16020:66:::1;::::0;15483:192;;::::1;::::0;-1:-1:-1;15483:192:13::1;::::0;-1:-1:-1;16028:14:13;::::1;::::0;16020:66:::1;::::0;::::1;::::0;16044:9;;15943:28;;15973;;16020:66:::1;:::i;7900:116::-:0;7991:7;-1:-1:-1;;;;;7976:29:13;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7962:45:13;:10;-1:-1:-1;;;;;7962:45:13;;7954:54;;;;;10368:125:46;10433:4;10456:30;:12;10478:7;10456:21;:30::i;598:104:52:-;685:10;598:104;:::o;19490:180:13:-;19574:19;;;;:10;:19;;;;;:33;;-1:-1:-1;;;;;19574:33:13;-1:-1:-1;;;;;;;;19574:33:13;;;;;;;;;;;;:19;;19632:16;19574:19;19632:7;:16::i;:::-;-1:-1:-1;;;;;19623:39:13;;;;;;;;;;;19490:180;;:::o;7633:145::-;7714:39;7733:10;7745:7;7714:18;:39::i;:::-;7706:64;;;;-1:-1:-1;;;7706:64:13;;;;;;;:::i;:::-;7633:145;:::o;222:133:19:-;315:8;296:15;:27;;288:59;;;;;-1:-1:-1;;;288:59:19;;;;;;;;;;;;-1:-1:-1;;;288:59:19;;;;;;;;;;;;;;1749:526:36;1833:12;1879:3;:10;;;-1:-1:-1;;;;;1866:23:36;:3;:10;;;-1:-1:-1;;;;;1866:23:36;;1858:32;;;;;;-1:-1:-1;2120:10:36;;2132;;;;;2144:7;;;;;2109:43;;-1:-1:-1;;;;;2109:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:54;;;;;;-1:-1:-1;;;;;;1988:234:36;;;;;;;-1:-1:-1;;;;;;1988:234:36;;;;;;;;;;;;658:66;1988:234;;;;;;;;;;;;;;;;;;;;;;;;;1956:285;;;;;;1749:526::o;18163:796:13:-;18348:18;;;;18317:70;;-1:-1:-1;;;18317:70:13;;18258:42;;-1:-1:-1;;;;;18317:30:13;;;;;:70;;-1:-1:-1;;;18348:18:13;;;;;;;-1:-1:-1;;;18368:18:13;;;;;18317:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18404:40;;;;18251:136;;-1:-1:-1;;;;;;18404:78:13;;;:40;;:78;;-1:-1:-1;18400:117:13;;-1:-1:-1;;18400:117:13;18499:7;;;18400:117;18533:26;;;;-1:-1:-1;;;18533:26:13;;;;:31;18529:274;;18675:40;;;;;18734:18;;;18604:187;;-1:-1:-1;;;;;18675:40:13;;;18638:77;;18604:187;;-1:-1:-1;;;18734:18:13;;-1:-1:-1;;;;;18734:18:13;-1:-1:-1;;;18604:15:13;:187::i;:::-;18581:19;;;:210;;;;;;;18529:274;18815:40;;;:77;;-1:-1:-1;;;;;;18815:77:13;-1:-1:-1;;;;;18815:77:13;;;;;18932:19;:17;:19::i;:::-;18903:8;:26;;;:48;;;;;;;;;;;;;;;;;;18163:796;;;;:::o;167:214:37:-;327:45;;;-1:-1:-1;;;;;;327:45:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:56;;;;;167:214;;;;;;:::o;762:3868:11:-;878:14;;;-1:-1:-1;;1394:1:11;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:11;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:11;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:11;;;;-1:-1:-1;1735:13:11;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:11;;;;;:::o;1543:146:18:-;1589:21;:25;1585:96;;1616:65;1647:10;1659:21;1616:30;:65::i;1193:280:33:-;1320:16;1373:44;1400:7;1409;1373:26;:44::i;:::-;1354:64;-1:-1:-1;1437:10:33;-1:-1:-1;;;;;1437:27:33;;;1429:36;;;;;1886:716:18;2039:5;-1:-1:-1;;;;;2030:14:18;:5;-1:-1:-1;;;;;2030:14:18;;:48;;;;;2073:5;2048:21;:30;;2030:48;2026:569;;;2133:5;-1:-1:-1;;;;;2126:21:18;;2155:5;2126:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2220:5;-1:-1:-1;;;;;2213:22:18;;2236:9;2247:5;2213:40;;;;;;;;;;;;;-1:-1:-1;;;;;2213:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2026:569:18;;-1:-1:-1;2026:569:18;;-1:-1:-1;;;;;2275:22:18;;2292:4;2275:22;2271:324;;;2406:52;2434:5;2441:9;2452:5;2406:27;:52::i;:::-;2271:324;;;2520:63;2552:5;2559;2566:9;2577:5;2520:31;:63::i;7812:121:53:-;7881:7;7907:19;7915:3;7907:7;:19::i;1743:1375:15:-;1849:17;1881:15;1911;1941:16;1985:34;2035:84;;;;;;;;2064:6;:13;;;-1:-1:-1;;;;;2035:84:15;;;;;2087:6;:13;;;-1:-1:-1;;;;;2035:84:15;;;;;2107:6;:10;;;2035:84;;;;;1985:134;;2151:44;2178:7;2187;2151:26;:44::i;:::-;2132:64;;2266:20;2302:4;-1:-1:-1;;;;;2302:10:15;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2265:49;;;;;;;;2329:21;2353:45;2381:6;:16;;;2353:27;:45::i;:::-;2329:69;;2413:21;2437:45;2465:6;:16;;;2437:27;:45::i;:::-;2413:69;;2511:229;2569:12;2600:13;2632;2664:6;:21;;;2704:6;:21;;;2511:39;:229::i;:::-;2499:241;;1743:1375;;;2785:4;-1:-1:-1;;;;;2785:9:15;;2809:6;:16;;;2840:6;:16;;;2871:6;:16;;;2902:9;2937:55;;;;;;;;2964:7;2937:55;;;;2980:10;-1:-1:-1;;;;;2937:55:15;;;;2926:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;2785:219;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3036:17;;;;2764:240;;-1:-1:-1;2764:240:15;-1:-1:-1;3025:28:15;;;;;:60;;;3068:6;:17;;;3057:7;:28;;3025:60;3017:93;;;;-1:-1:-1;;;3017:93:15;;;;;;;:::i;:::-;1743:1375;;;;;;:::o;10651:351:46:-;10744:4;10768:16;10776:7;10768;:16::i;:::-;10760:73;;;;-1:-1:-1;;;10760:73:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10843:13;10859:23;10874:7;10859:14;:23::i;:::-;10843:39;;10911:5;-1:-1:-1;;;;;10900:16:46;:7;-1:-1:-1;;;;;10900:16:46;;:51;;;;10944:7;-1:-1:-1;;;;;10920:31:46;:20;10932:7;10920:11;:20::i;:::-;-1:-1:-1;;;;;10920:31:46;;10900:51;:94;;;;10955:39;10979:5;10986:7;10955:23;:39::i;13692:584::-;13816:4;-1:-1:-1;;;;;13789:31:46;:23;13804:7;13789:14;:23::i;:::-;-1:-1:-1;;;;;13789:31:46;;13781:85;;;;-1:-1:-1;;;13781:85:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13902:16:46;;13894:65;;;;-1:-1:-1;;;13894:65:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13970:39;13991:4;13997:2;14001:7;13970:20;:39::i;:::-;14071:29;14088:1;14092:7;14071:8;:29::i;:::-;-1:-1:-1;;;;;14111:19:46;;;;;;:13;:19;;;;;:35;;14138:7;14111:26;:35::i;:::-;-1:-1:-1;;;;;;14156:17:46;;;;;;:13;:17;;;;;:30;;14178:7;14156:21;:30::i;:::-;-1:-1:-1;14197:29:46;:12;14214:7;14223:2;14197:16;:29::i;:::-;;14261:7;14257:2;-1:-1:-1;;;;;14242:27:46;14251:4;-1:-1:-1;;;;;14242:27:46;-1:-1:-1;;;;;;;;;;;14242:27:46;;;;;;;;;13692:584;;;:::o;17990:165:13:-;18042:6;18086:16;18068:15;:34;:79;;18131:15;18068:79;;;-1:-1:-1;18105:16:13;;17990:165::o;9242:135:54:-;9313:7;9347:22;9351:3;9363:5;9347:3;:22::i;244:128:34:-;345:9;;319:46::o;12841:527:46:-;12900:13;12916:23;12931:7;12916:14;:23::i;:::-;12900:39;;12968:48;12989:5;13004:1;13008:7;12968:20;:48::i;:::-;13054:29;13071:1;13075:7;13054:8;:29::i;:::-;13139:19;;;;:10;:19;;;;;13133:33;;-1:-1:-1;;13133:33:46;;;;;;;;;;;:38;13129:95;;13194:19;;;;:10;:19;;;;;13187:26;;;:::i;:::-;-1:-1:-1;;;;;13234:20:46;;;;;;:13;:20;;;;;:36;;13262:7;13234:27;:36::i;:::-;-1:-1:-1;13281:28:46;:12;13301:7;13281:19;:28::i;:::-;-1:-1:-1;13325:36:46;;13353:7;;13349:1;;-1:-1:-1;;;;;13325:36:46;;;-1:-1:-1;;;;;;;;;;;13325:36:46;13349:1;;13325:36;12841:527;;:::o;2433:168:38:-;2546:12;;;2506;2546;;;;;;;;;-1:-1:-1;;;;;2524:7:38;;;2539:5;;2524:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2524:35:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2505:54;;;2578:7;2570:23;;;;;-1:-1:-1;;;2570:23:38;;;;;;;;;;;;-1:-1:-1;;;2570:23:38;;;;;;;;;;;;;;8261:233:53;8341:7;;;;8400:22;8404:3;8416:5;8400:3;:22::i;:::-;8369:53;;-1:-1:-1;8369:53:53;-1:-1:-1;;;8261:233:53;;;;;;:::o;9514:211::-;9621:7;9671:44;9676:3;9696;9702:12;9671:4;:44::i;18967:146:13:-;19042:7;19077:19;;;:10;:19;;;;;:27;;-1:-1:-1;;;;;;19077:27:13;;;-1:-1:-1;;;;;19077:27:13;;;;;;;;;;;;;;18967:146::o;718:413:51:-;1078:20;1116:8;;;718:413::o;12231:393:46:-;-1:-1:-1;;;;;12310:16:46;;12302:61;;;;;-1:-1:-1;;;12302:61:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12382:16;12390:7;12382;:16::i;:::-;12381:17;12373:58;;;;;-1:-1:-1;;;12373:58:46;;;;;;;;;;;;-1:-1:-1;;;12373:58:46;;;;;;;;;;;;;;;12442:45;12471:1;12475:2;12479:7;12442:20;:45::i;:::-;-1:-1:-1;;;;;12498:17:46;;;;;;:13;:17;;;;;:30;;12520:7;12498:21;:30::i;:::-;-1:-1:-1;12539:29:46;:12;12556:7;12565:2;12539:16;:29::i;:::-;-1:-1:-1;12584:33:46;;12609:7;;-1:-1:-1;;;;;12584:33:46;;;12601:1;;-1:-1:-1;;;;;;;;;;;12584:33:46;12601:1;;12584:33;12231:393;;:::o;5191:290:13:-;-1:-1:-1;;;;;5315:14:13;;5280:13;5315:14;;;:8;:14;;;;;;-1:-1:-1;;;;;5315:14:13;5344:11;5340:134;;-1:-1:-1;5399:11:13;:13;;;-1:-1:-1;;;;;;;;5399:13:13;;;;;;;;;;;;-1:-1:-1;;;;;5399:13:13;;;;;;;;;;-1:-1:-1;;;;;5372:14:13;;;-1:-1:-1;5372:14:13;;;:8;:14;;;;;;;;:41;;-1:-1:-1;;;;;;5372:41:13;;;;;5428:24;;;:16;:24;;;;;;:34;;;;;;;-1:-1:-1;;;;;;5428:34:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5428:34:13;-1:-1:-1;;;;5428:34:13;;;;;;;;;;;;;;;;;;;;5191:290;;;;:::o;9796:269:46:-;9909:28;9919:4;9925:2;9929:7;9909:9;:28::i;:::-;9955:48;9978:4;9984:2;9988:7;9997:5;9955:22;:48::i;:::-;9947:111;;;;-1:-1:-1;;;9947:111:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:316:38;1412:59;;;-1:-1:-1;;;;;1412:59:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1412:59:38;-1:-1:-1;;;1412:59:38;;;1401:71;;;;1366:12;;;;1401:10;;;;1412:59;1401:71;;;1412:59;1401:71;;1412:59;1401:71;;;;;;;;;;-1:-1:-1;;1401:71:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:107;;;;1491:7;:57;;;;-1:-1:-1;1503:11:38;;:16;;:44;;;1534:4;1523:24;;;;;;;;;;;;;;;-1:-1:-1;1523:24:38;1503:44;1483:72;;;;;-1:-1:-1;;;1483:72:38;;;;;;;;;;;;-1:-1:-1;;;1483:72:38;;;;;;;;;;;;;;7580:149:53;7664:4;7687:35;7697:3;7717;7687:9;:35::i;581:367:38:-;786:69;;;-1:-1:-1;;;;;786:69:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;786:69:38;-1:-1:-1;;;786:69:38;;;775:81;;;;727:12;;;;775:10;;;;786:69;775:81;;;786:69;775:81;;786:69;775:81;;;;;;;;;;-1:-1:-1;;775:81:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:130;;;;875:7;:57;;;;-1:-1:-1;887:11:38;;:16;;:44;;;918:4;907:24;;;;;;;;;;;;;;;-1:-1:-1;907:24:38;887:44;867:73;;;;;-1:-1:-1;;;867:73:38;;;;;;;;;;;;-1:-1:-1;;;867:73:38;;;;;;;;;;;;;;4483:108:53;4565:19;;4483:108::o;1384:2611:12:-;1447:20;1480:15;1505:1;1498:4;:8;;;:57;;1549:4;1542:12;;1498:57;;;1525:4;1518:12;;1517:13;;1498:57;1480:75;-1:-1:-1;654:9:12;1574:28;;;1566:42;;;;;-1:-1:-1;;;1566:42:12;;;;;;;;;;;;-1:-1:-1;;;1566:42:12;;;;;;;;;;;;;;;1621:13;1647:3;1637:13;;:93;;-1:-1:-1;;;1637:93:12;;;1658:34;1637:93;-1:-1:-1;;;;;1621:109:12;;-1:-1:-1;1755:3:12;1745:13;;:18;1741:83;;1782:34;1774:42;1821:3;1773:51;1741:83;1849:3;1839:13;;:18;1835:83;;1876:34;1868:42;1915:3;1867:51;1835:83;1943:3;1933:13;;:18;1929:83;;1970:34;1962:42;2009:3;1961:51;1929:83;2037:4;2027:14;;:19;2023:84;;2065:34;2057:42;2104:3;2056:51;2023:84;2132:4;2122:14;;:19;2118:84;;2160:34;2152:42;2199:3;2151:51;2118:84;2227:4;2217:14;;:19;2213:84;;2255:34;2247:42;2294:3;2246:51;2213:84;2322:4;2312:14;;:19;2308:84;;2350:34;2342:42;2389:3;2341:51;2308:84;2417:5;2407:15;;:20;2403:85;;2446:34;2438:42;2485:3;2437:51;2403:85;2513:5;2503:15;;:20;2499:85;;2542:34;2534:42;2581:3;2533:51;2499:85;2609:5;2599:15;;:20;2595:85;;2638:34;2630:42;2677:3;2629:51;2595:85;2705:5;2695:15;;:20;2691:85;;2734:34;2726:42;2773:3;2725:51;2691:85;2801:6;2791:16;;:21;2787:86;;2831:34;2823:42;2870:3;2822:51;2787:86;2898:6;2888:16;;:21;2884:86;;2928:34;2920:42;2967:3;2919:51;2884:86;2995:6;2985:16;;:21;2981:86;;3025:34;3017:42;3064:3;3016:51;2981:86;3092:6;3082:16;;:21;3078:86;;3122:34;3114:42;3161:3;3113:51;3078:86;3189:7;3179:17;;:22;3175:86;;3220:33;3212:41;3258:3;3211:50;3175:86;3286:7;3276:17;;:22;3272:85;;3317:32;3309:40;3354:3;3308:49;3272:85;3382:7;3372:17;;:22;3368:83;;3413:30;3405:38;3448:3;3404:47;3368:83;3476:7;3466:17;;:22;3462:78;;3507:25;3499:33;3537:3;3498:42;3462:78;3564:1;3557:4;:8;;;3553:47;;;3595:5;-1:-1:-1;;3575:25:12;;;;;;3567:33;;3553:47;-1:-1:-1;;;3955:5:12;:17;:22;:30;;3984:1;3955:30;;;3980:1;3955:30;3938:48;;3948:2;3939:5;:11;;3938:48;3915:72;;1384:2611;;;;;:::o;3019:920:35:-;3228:17;3278:13;-1:-1:-1;;;;;3262:29:35;:13;-1:-1:-1;;;;;3262:29:35;;3258:98;;;3327:13;;3342;3258:98;3389:13;-1:-1:-1;;;;;3373:29:35;:12;-1:-1:-1;;;;;3373:29:35;;3369:563;;3431:61;3454:13;3469;3484:7;3431:22;:61::i;:::-;3419:73;;3369:563;;;3529:13;-1:-1:-1;;;;;3514:28:35;:12;-1:-1:-1;;;;;3514:28:35;;3510:422;;;3559:18;3580:60;3603:12;3617:13;3632:7;3580:22;:60::i;:::-;3559:81;;3655:18;3676:60;3699:13;3714:12;3728:7;3676:22;:60::i;:::-;3655:81;;3778:10;-1:-1:-1;;;;;3765:23:35;:10;-1:-1:-1;;;;;3765:23:35;;:49;;3804:10;3765:49;;;3791:10;3765:49;3753:61;;3510:422;;;;;3859:61;3882:13;3897;3912:7;3859:22;:61::i;:::-;3847:73;;3510:422;3019:920;;;;;;;:::o;8357:135:54:-;8427:4;8450:35;8458:3;8478:5;8450:7;:35::i;8060:129::-;8127:4;8150:32;8155:3;8175:5;8150:4;:32::i;7019:183:53:-;7108:4;7131:64;7136:3;7156;-1:-1:-1;;;;;7170:23:53;;7131:4;:64::i;4444:201:54:-;4538:18;;4511:7;;4538:26;-1:-1:-1;4530:73:54;;;;-1:-1:-1;;;4530:73:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4620:3;:11;;4632:5;4620:18;;;;;;;;;;;;;;;;4613:25;;4444:201;;;;:::o;7361:140:53:-;7438:4;7461:33;7469:3;7489;7461:7;:33::i;4934:274::-;5037:19;;5001:7;;;;5037:27;-1:-1:-1;5029:74:53;;;;-1:-1:-1;;;5029:74:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;6395:315::-;6489:7;6527:17;;;:12;;;:17;;;;;;6577:12;6562:13;6554:36;;;;-1:-1:-1;;;6554:36:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6643:3;:12;;6667:1;6656:8;:12;6643:26;;;;;;;;;;;;;;;;;;:33;;;6636:40;;;6395:315;;;;;:::o;15509:589:46:-;15629:4;15654:15;:2;-1:-1:-1;;;;;15654:13:46;;:15::i;:::-;15649:58;;-1:-1:-1;15692:4:46;15685:11;;15649:58;15716:23;15742:246;-1:-1:-1;;;15853:12:46;:10;:12::i;:::-;15879:4;15897:7;15918:5;15758:175;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;;;;;;15742:246;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15742:15:46;;;:246;:15;:246::i;:::-;15716:272;;15998:13;16025:10;16014:32;;;;;;;;;;;;;;;-1:-1:-1;16014:32:46;-1:-1:-1;;;;;;16064:26:46;-1:-1:-1;;;16064:26:46;;-1:-1:-1;;;15509:589:46;;;;;;:::o;4270:123:53:-;4341:4;4364:17;;;:12;;;;;:17;;;;;;:22;;;4270:123::o;1089:483:35:-;1241:17;1291:13;-1:-1:-1;;;;;1275:29:35;:13;-1:-1:-1;;;;;1275:29:35;;1271:98;;;1340:13;;1355;1271:98;1380:20;1403:63;1419:13;-1:-1:-1;;;;;1403:63:35;1434:13;-1:-1:-1;;;;;1403:63:35;-1:-1:-1;;;1403:15:35;:63::i;:::-;1380:86;;1484:80;1494:69;1510:7;1519:12;1549:13;1533;:29;-1:-1:-1;;;;;1494:69:35;:15;:69::i;:::-;1484:9;:80::i;2019:390::-;2171:17;2221:13;-1:-1:-1;;;;;2205:29:35;:13;-1:-1:-1;;;;;2205:29:35;;2201:98;;;2270:13;;2285;2201:98;2317:84;2327:73;2343:7;-1:-1:-1;;;2386:13:35;2370;:29;-1:-1:-1;;;;;2327:73:35;:15;:73::i;2204:1512:54:-;2270:4;2407:19;;;:12;;;:19;;;;;;2441:15;;2437:1273;;2870:18;;-1:-1:-1;;2822:14:54;;;;2870:22;;;;2798:21;;2870:3;;:22;;3152;;;;;;;;;;;;;;3132:42;;3295:9;3266:3;:11;;3278:13;3266:26;;;;;;;;;;;;;;;;;;;:38;;;;3370:23;;;3412:1;3370:12;;;:23;;;;;;3396:17;;;3370:43;;3519:17;;3370:3;;3519:17;;;;;;;;;;;;;;;;;;;;;;3611:3;:12;;:19;3624:5;3611:19;;;;;;;;;;;3604:26;;;3652:4;3645:11;;;;;;;;2437:1273;3694:5;3687:12;;;;;1632:404;1695:4;1716:21;1726:3;1731:5;1716:9;:21::i;:::-;1711:319;;-1:-1:-1;1753:23:54;;;;;;;;:11;:23;;;;;;;;;;;;;1933:18;;1911:19;;;:12;;;:19;;;;;;:40;;;;1965:11;;1711:319;-1:-1:-1;2014:5:54;2007:12;;1828:678:53;1904:4;2037:17;;;:12;;;:17;;;;;;2069:13;2065:435;;-1:-1:-1;;2153:38:53;;;;;;;;;;;;;;;;;;2135:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;2347:19;;2327:17;;;:12;;;:17;;;;;;;:39;2380:11;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;;;2674:1517;2738:4;2871:17;;;:12;;;:17;;;;;;2903:13;;2899:1286;;3329:19;;-1:-1:-1;;3283:12:53;;;;3329:23;;;;3259:21;;3329:3;;:23;;3621;;;;;;;;;;;;;;;;3592:52;;3766:9;3736:3;:12;;3749:13;3736:27;;;;;;;;;;;;;;;;:39;;:27;;;;;:39;;;;;;;;;;;;;;;3854:14;;3841:28;;:12;;;:28;;;;;3872:17;;;3841:48;;3995:18;;3841:3;;3995:18;;;;;;;;;;;;;;-1:-1:-1;;3995:18:53;;;;;;;;;;;;;;;;;;;;;4088:17;;;:12;;;:17;;;;;;4081:24;;;;3995:18;-1:-1:-1;4120:11:53;;-1:-1:-1;;;;4120:11:53;3573:193:51;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3707:21;:52::i;501:112:35:-;603:1;-1:-1:-1;;;;;583:21:35;;;;575:30;;;;;4600:523:51;4727:12;4784:5;4759:21;:30;;4751:81;;;;-1:-1:-1;;;4751:81:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4850:18;4861:6;4850:10;:18::i;:::-;4842:60;;;;;-1:-1:-1;;;4842:60:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:12;4987:23;5014:6;-1:-1:-1;;;;;5014:11:51;5034:5;5042:4;5014:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5014:33:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:51:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:51;7249:17;;7222:580;7367:17;;:21;7363:429;;7625:10;7619:17;7685:15;7672:10;7668:2;7664:19;7657:44;7574:145;7757:20;;-1:-1:-1;;;7757:20:51;;;;;;;;;;;;;;;;;7764:12;;7757:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:138:56:-;84:20;;113:33;84:20;113:33;:::i;157:165::-;237:13;;290:6;279:18;;269:29;;259:2;;312:1;309;302:12;327:163;396:20;;456:8;445:20;;435:31;;425:2;;480:1;477;470:12;495:259;;607:2;595:9;586:7;582:23;578:32;575:2;;;628:6;620;613:22;575:2;672:9;659:23;691:33;718:5;691:33;:::i;759:263::-;;882:2;870:9;861:7;857:23;853:32;850:2;;;903:6;895;888:22;850:2;940:9;934:16;959:33;986:5;959:33;:::i;1027:402::-;;;1156:2;1144:9;1135:7;1131:23;1127:32;1124:2;;;1177:6;1169;1162:22;1124:2;1221:9;1208:23;1240:33;1267:5;1240:33;:::i;:::-;1292:5;-1:-1:-1;1349:2:56;1334:18;;1321:32;1362:35;1321:32;1362:35;:::i;:::-;1416:7;1406:17;;;1114:315;;;;;:::o;1434:620::-;;;;;1596:3;1584:9;1575:7;1571:23;1567:33;1564:2;;;1618:6;1610;1603:22;1564:2;1662:9;1649:23;1681:33;1708:5;1681:33;:::i;:::-;1733:5;-1:-1:-1;1790:2:56;1775:18;;1762:32;1803:35;1762:32;1803:35;:::i;:::-;1857:7;-1:-1:-1;1883:39:56;1918:2;1903:18;;1883:39;:::i;:::-;1873:49;;1974:2;1963:9;1959:18;1946:32;1987:35;2014:7;1987:35;:::i;:::-;1554:500;;;;-1:-1:-1;1554:500:56;;-1:-1:-1;;1554:500:56:o;2059:470::-;;;;2205:2;2193:9;2184:7;2180:23;2176:32;2173:2;;;2226:6;2218;2211:22;2173:2;2270:9;2257:23;2289:33;2316:5;2289:33;:::i;:::-;2341:5;-1:-1:-1;2398:2:56;2383:18;;2370:32;2411:35;2370:32;2411:35;:::i;:::-;2163:366;;2465:7;;-1:-1:-1;;;2519:2:56;2504:18;;;;2491:32;;2163:366::o;2534:1066::-;;;;;2706:3;2694:9;2685:7;2681:23;2677:33;2674:2;;;2728:6;2720;2713:22;2674:2;2772:9;2759:23;2791:33;2818:5;2791:33;:::i;:::-;2843:5;-1:-1:-1;2900:2:56;2885:18;;2872:32;2913:35;2872:32;2913:35;:::i;:::-;2967:7;-1:-1:-1;3021:2:56;3006:18;;2993:32;;-1:-1:-1;3076:2:56;3061:18;;3048:32;-1:-1:-1;;;;;3092:30:56;;3089:2;;;3140:6;3132;3125:22;3089:2;3168:22;;3221:4;3213:13;;3209:27;-1:-1:-1;3199:2:56;;3255:6;3247;3240:22;3199:2;3296;3283:16;3321:49;3336:33;3366:2;3336:33;:::i;:::-;3321:49;:::i;:::-;3393:2;3386:5;3379:17;3433:7;3428:2;3423;3419;3415:11;3411:20;3408:33;3405:2;;;3459:6;3451;3444:22;3405:2;3519;3514;3510;3506:11;3501:2;3494:5;3490:14;3477:45;3542:14;;;3558:2;3538:23;3531:39;;;;-1:-1:-1;2664:936:56;;;;-1:-1:-1;2664:936:56;-1:-1:-1;2664:936:56:o;3605:396::-;;;3731:2;3719:9;3710:7;3706:23;3702:32;3699:2;;;3752:6;3744;3737:22;3699:2;3796:9;3783:23;3815:33;3842:5;3815:33;:::i;:::-;3867:5;-1:-1:-1;3924:2:56;3909:18;;3896:32;3937;3896;3937;:::i;4006:327::-;;;4135:2;4123:9;4114:7;4110:23;4106:32;4103:2;;;4156:6;4148;4141:22;4103:2;4200:9;4187:23;4219:33;4246:5;4219:33;:::i;:::-;4271:5;4323:2;4308:18;;;;4295:32;;-1:-1:-1;;;4093:240:56:o;4338:470::-;;;;4484:2;4472:9;4463:7;4459:23;4455:32;4452:2;;;4505:6;4497;4490:22;4452:2;4549:9;4536:23;4568:33;4595:5;4568:33;:::i;:::-;4620:5;-1:-1:-1;4672:2:56;4657:18;;4644:32;;-1:-1:-1;4728:2:56;4713:18;;4700:32;4741:35;4700:32;4741:35;:::i;:::-;4795:7;4785:17;;;4442:366;;;;;:::o;4813:673::-;;;;;;;5008:3;4996:9;4987:7;4983:23;4979:33;4976:2;;;5030:6;5022;5015:22;4976:2;5074:9;5061:23;5093:33;5120:5;5093:33;:::i;:::-;5145:5;-1:-1:-1;5197:2:56;5182:18;;5169:32;;-1:-1:-1;5248:2:56;5233:18;;5220:32;;-1:-1:-1;5304:2:56;5289:18;;5276:32;5317:33;5276:32;5317:33;:::i;:::-;4966:520;;;;-1:-1:-1;4966:520:56;;5423:3;5408:19;;5395:33;;5475:3;5460:19;;;5447:33;;-1:-1:-1;4966:520:56;-1:-1:-1;;4966:520:56:o;5491:677::-;;;5649:2;5637:9;5628:7;5624:23;5620:32;5617:2;;;5670:6;5662;5655:22;5617:2;5715:9;5702:23;-1:-1:-1;;;;;5785:2:56;5777:6;5774:14;5771:2;;;5806:6;5798;5791:22;5771:2;5849:6;5838:9;5834:22;5824:32;;5894:7;5887:4;5883:2;5879:13;5875:27;5865:2;;5921:6;5913;5906:22;5865:2;5966;5953:16;5992:2;5984:6;5981:14;5978:2;;;6013:6;6005;5998:22;5978:2;6072:7;6067:2;6061;6053:6;6049:15;6045:2;6041:24;6037:33;6034:46;6031:2;;;6098:6;6090;6083:22;6031:2;6134;6126:11;;;;;6156:6;;-1:-1:-1;5607:561:56;;-1:-1:-1;;;;5607:561:56:o;6173:306::-;;6284:2;6272:9;6263:7;6259:23;6255:32;6252:2;;;6305:6;6297;6290:22;6252:2;6336:23;;-1:-1:-1;;;;;;6388:32:56;;6378:43;;6368:2;;6440:6;6432;6425:22;6484:255;;6594:2;6582:9;6573:7;6569:23;6565:32;6562:2;;;6615:6;6607;6600:22;6562:2;6659:9;6646:23;6678:31;6703:5;6678:31;:::i;6744:794::-;;;;;6915:3;6903:9;6894:7;6890:23;6886:33;6883:2;;;6937:6;6929;6922:22;6883:2;6974:9;6968:16;7027:5;7024:1;7013:20;7006:5;7003:31;6993:2;;7053:6;7045;7038:22;6993:2;7131;7116:18;;7110:25;7081:5;;-1:-1:-1;7144:35:56;7110:25;7144:35;:::i;:::-;7250:2;7235:18;;7229:25;7198:7;;-1:-1:-1;7298:10:56;7285:24;;7273:37;;7263:2;;7329:6;7321;7314:22;7263:2;7409;7394:18;;7388:25;7357:7;;-1:-1:-1;;;;;;7444:33:56;;7432:46;;7422:2;;7497:6;7489;7482:22;7543:676;;7676:2;7664:9;7655:7;7651:23;7647:32;7644:2;;;7697:6;7689;7682:22;7644:2;7735:9;7729:16;-1:-1:-1;;;;;7760:6:56;7757:30;7754:2;;;7805:6;7797;7790:22;7754:2;7833:22;;7886:4;7878:13;;7874:27;-1:-1:-1;7864:2:56;;7920:6;7912;7905:22;7864:2;7954;7948:9;7979:49;7994:33;8024:2;7994:33;:::i;7979:49::-;8051:2;8044:5;8037:17;8091:7;8086:2;8081;8077;8073:11;8069:20;8066:33;8063:2;;;8117:6;8109;8102:22;8063:2;8135:54;8186:2;8181;8174:5;8170:14;8165:2;8161;8157:11;8135:54;:::i;8224:210::-;;8369:3;8357:9;8348:7;8344:23;8340:33;8337:2;;;8391:6;8383;8376:22;8337:2;-1:-1:-1;8419:9:56;8327:107;-1:-1:-1;8327:107:56:o;8439:220::-;;8594:3;8582:9;8573:7;8569:23;8565:33;8562:2;;;8616:6;8608;8601:22;8664:220;;8819:3;8807:9;8798:7;8794:23;8790:33;8787:2;;;8841:6;8833;8826:22;8889:1112;;9026:9;9017:7;9013:23;9056:3;9052:2;9048:12;9045:2;;;9078:6;9070;9063:22;9045:2;9116:4;9110:11;9160:4;9152:6;9148:17;-1:-1:-1;;;;;9252:6:56;9240:10;9237:22;9232:2;9220:10;9217:18;9214:46;9211:2;;;9263:9;9211:2;9296:10;9290:4;9283:24;9327:4;9323:2;9319:13;9316:2;;;9350:6;9342;9335:22;9316:2;9400:3;9392:6;9388:16;9368:36;;9458:10;9444:12;9441:28;9436:2;9422:12;9419:20;9416:54;9413:2;;;9473:9;9413:2;;9506:12;9500:4;9493:26;9554:9;9541:23;9528:36;;9573:33;9600:5;9573:33;:::i;:::-;9615:25;;;9692:2;9677:18;;9664:32;;9705:35;9664:32;9705:35;:::i;:::-;9775:7;9768:4;9760:6;9756:17;9749:34;9817:41;9852:4;9841:9;9837:20;9817:41;:::i;:::-;9811:3;9799:16;;9792:67;9868:26;;9927:42;9963:4;9948:20;;9927:42;:::i;:::-;9922:2;9910:15;;9903:67;9914:6;8993:1008;-1:-1:-1;;;;8993:1008:56:o;10006:207::-;;10148:3;10136:9;10127:7;10123:23;10119:33;10116:2;;;10170:6;10162;10155:22;10218:259;;10330:2;10318:9;10309:7;10305:23;10301:32;10298:2;;;10351:6;10343;10336:22;10298:2;10395:9;10382:23;10414:33;10441:5;10414:33;:::i;10482:399::-;;;10622:2;10610:9;10601:7;10597:23;10593:32;10590:2;;;10643:6;10635;10628:22;10590:2;10680:9;10674:16;10699:33;10726:5;10699:33;:::i;:::-;10801:2;10786:18;;10780:25;10751:5;;-1:-1:-1;10814:35:56;10780:25;10814:35;:::i;10886:659::-;;;;;;11077:3;11065:9;11056:7;11052:23;11048:33;11045:2;;;11099:6;11091;11084:22;11045:2;11136:9;11130:16;11155:33;11182:5;11155:33;:::i;:::-;11207:5;11197:15;;;11252:2;11241:9;11237:18;11231:25;11221:35;;11296:2;11285:9;11281:18;11275:25;11265:35;;11345:2;11334:9;11330:18;11324:25;11358:35;11385:7;11358:35;:::i;:::-;11464:3;11449:19;;11443:26;11412:7;;-1:-1:-1;11478:35:56;11443:26;11478:35;:::i;:::-;11532:7;11522:17;;;11035:510;;;;;;;;:::o;11550:916::-;;;;;;;;11765:3;11753:9;11744:7;11740:23;11736:33;11733:2;;;11787:6;11779;11772:22;11733:2;11824:9;11818:16;11843:33;11870:5;11843:33;:::i;:::-;11945:2;11930:18;;11924:25;11895:5;;-1:-1:-1;11958:33:56;11924:25;11958:33;:::i;:::-;12010:7;-1:-1:-1;12036:50:56;12082:2;12067:18;;12036:50;:::i;:::-;12026:60;;12105:50;12151:2;12140:9;12136:18;12105:50;:::i;:::-;12095:60;;12174:51;12220:3;12209:9;12205:19;12174:51;:::i;:::-;12164:61;;12270:3;12259:9;12255:19;12249:26;12284:33;12309:7;12284:33;:::i;:::-;12388:3;12373:19;;12367:26;12336:7;;-1:-1:-1;12402:32:56;12367:26;12402:32;:::i;:::-;12453:7;12443:17;;;11723:743;;;;;;;;;;:::o;12471:196::-;;12582:2;12570:9;12561:7;12557:23;12553:32;12550:2;;;12603:6;12595;12588:22;12550:2;12631:30;12651:9;12631:30;:::i;12672:190::-;;12784:2;12772:9;12763:7;12759:23;12755:32;12752:2;;;12805:6;12797;12790:22;12752:2;-1:-1:-1;12833:23:56;;12742:120;-1:-1:-1;12742:120:56:o;12867:327::-;;;12996:2;12984:9;12975:7;12971:23;12967:32;12964:2;;;13017:6;13009;13002:22;12964:2;13058:9;13045:23;13035:33;;13118:2;13107:9;13103:18;13090:32;13131:33;13158:5;13131:33;:::i;13199:255::-;;;13339:2;13327:9;13318:7;13314:23;13310:32;13307:2;;;13360:6;13352;13345:22;13307:2;-1:-1:-1;;13388:16:56;;13444:2;13429:18;;;13423:25;13388:16;;13423:25;;-1:-1:-1;13297:157:56:o;13459:777::-;;;;;13624:2;13612:9;13603:7;13599:23;13595:32;13592:2;;;13645:6;13637;13630:22;13592:2;13686:9;13673:23;13663:33;;13743:2;13732:9;13728:18;13715:32;13705:42;;13798:2;13787:9;13783:18;13770:32;-1:-1:-1;;;;;13862:2:56;13854:6;13851:14;13848:2;;;13883:6;13875;13868:22;13848:2;13926:6;13915:9;13911:22;13901:32;;13971:7;13964:4;13960:2;13956:13;13952:27;13942:2;;13998:6;13990;13983:22;13942:2;14043;14030:16;14069:2;14061:6;14058:14;14055:2;;;14090:6;14082;14075:22;14055:2;14140:7;14135:2;14126:6;14122:2;14118:15;14114:24;14111:37;14108:2;;;14166:6;14158;14151:22;14108:2;13582:654;;;;-1:-1:-1;;14202:2:56;14194:11;;-1:-1:-1;;;13582:654:56:o;14241:259::-;;14322:5;14316:12;14349:6;14344:3;14337:19;14365:63;14421:6;14414:4;14409:3;14405:14;14398:4;14391:5;14387:16;14365:63;:::i;:::-;14482:2;14461:15;-1:-1:-1;;14457:29:56;14448:39;;;;14489:4;14444:50;;14292:208;-1:-1:-1;;14292:208:56:o;14505:93::-;14582:1;14571:20;14559:33;;14549:49::o;14603:106::-;-1:-1:-1;;;;;14671:31:56;14659:44;;14649:60::o;14714:273::-;;14897:6;14889;14884:3;14871:33;14923:16;;14948:15;;;14923:16;14861:126;-1:-1:-1;14861:126:56:o;14992:203::-;-1:-1:-1;;;;;15156:32:56;;;;15138:51;;15126:2;15111:18;;15093:102::o;15200:580::-;-1:-1:-1;;;;;15451:32:56;;15433:51;;15531:1;15520:21;;;15515:2;15500:18;;15493:49;15578:21;;;15573:2;15558:18;;15551:49;-1:-1:-1;;;;;15636:32:56;;15631:2;15616:18;;15609:60;15471:3;15656;15685:19;;15678:32;;;15200:580;;15727:47;;15754:19;;15746:6;15727:47;:::i;15785:567::-;-1:-1:-1;;;;;16054:32:56;;;;16036:51;;16134:1;16123:21;;;16118:2;16103:18;;16096:49;16181:21;;;;16176:2;16161:18;;16154:49;-1:-1:-1;;;;;16277:15:56;;;16272:2;16257:18;;16250:43;16330:15;16230:3;16309:19;;16302:44;16023:3;16008:19;;15990:362::o;16357:401::-;-1:-1:-1;;;;;16577:32:56;;;;16559:51;;-1:-1:-1;;;;;16684:15:56;;;16679:2;16664:18;;16657:43;16736:15;16731:2;16716:18;;16709:43;16547:2;16532:18;;16514:244::o;16763:634::-;-1:-1:-1;;;;;17102:15:56;;;17084:34;;17149:2;17134:18;;17127:34;;;;17192:2;17177:18;;17170:34;;;;17240:15;;17235:2;17220:18;;17213:43;17275:10;17322:15;;;17316:3;17301:19;;17294:44;17375:15;;;17064:3;17354:19;;17347:44;17033:3;17018:19;;17000:397::o;17402:806::-;;17591:2;17631;17620:9;17616:18;17661:2;17650:9;17643:21;17684:6;17719;17713:13;17750:6;17742;17735:22;17788:2;17777:9;17773:18;17766:25;;17851:2;17845;17837:6;17833:15;17822:9;17818:31;17814:40;17800:54;;17889:2;17881:6;17877:15;17910:4;17923:256;17937:6;17934:1;17931:13;17923:256;;;18030:2;18026:7;18014:9;18006:6;18002:22;17998:36;17993:3;17986:49;18058:41;18092:6;18083;18077:13;18058:41;:::i;:::-;18048:51;-1:-1:-1;18157:12:56;;;;18122:15;;;;17959:1;17952:9;17923:256;;;-1:-1:-1;18196:6:56;;17571:637;-1:-1:-1;;;;;;;17571:637:56:o;18213:187::-;18378:14;;18371:22;18353:41;;18341:2;18326:18;;18308:92::o;18405:177::-;18551:25;;;18539:2;18524:18;;18506:76::o;18587:309::-;-1:-1:-1;;;;;18814:32:56;;;;18796:51;;18878:2;18863:18;;18856:34;18784:2;18769:18;;18751:145::o;18901:270::-;19096:1;19085:21;;;19067:40;;19143:21;;19138:2;19123:18;;19116:49;19055:2;19040:18;;19022:149::o;19176:375::-;19407:1;19396:21;;;19378:40;;19454:21;;;;19449:2;19434:18;;19427:49;-1:-1:-1;;;;;19512:32:56;;;19507:2;19492:18;;19485:60;19366:2;19351:18;;19333:218::o;19928:221::-;;20077:2;20066:9;20059:21;20097:46;20139:2;20128:9;20124:18;20116:6;20097:46;:::i;20154:336::-;20356:2;20338:21;;;20395:2;20375:18;;;20368:30;-1:-1:-1;;;20429:2:56;20414:18;;20407:42;20481:2;20466:18;;20328:162::o;20495:349::-;20697:2;20679:21;;;20736:2;20716:18;;;20709:30;-1:-1:-1;;;20770:2:56;20755:18;;20748:55;20835:2;20820:18;;20669:175::o;20849:344::-;21051:2;21033:21;;;21090:2;21070:18;;;21063:30;-1:-1:-1;;;21124:2:56;21109:18;;21102:50;21184:2;21169:18;;21023:170::o;21198:340::-;21400:2;21382:21;;;21439:2;21419:18;;;21412:30;-1:-1:-1;;;21473:2:56;21458:18;;21451:46;21529:2;21514:18;;21372:166::o;21543:542::-;21768:13;;21850:9;;-1:-1:-1;;;;;21846:18:56;;;21828:37;;21921:4;21913:13;;;21907:20;21903:29;;21881:20;;;21874:59;21989:4;21981:13;;;21975:20;21997:8;21971:35;21949:20;;;21942:65;;;;22055:17;;22049:24;22045:33;;;22038:4;22023:20;;22016:63;21745:3;21730:19;;21712:373::o;22090:345::-;-1:-1:-1;;;;;22310:32:56;;;;22292:51;;22374:2;22359:18;;22352:34;;;;22417:2;22402:18;;22395:34;22280:2;22265:18;;22247:188::o;22440:460::-;-1:-1:-1;;;;;22685:32:56;;;;22667:51;;22737:10;22783:15;;;22778:2;22763:18;;22756:43;22835:15;;22830:2;22815:18;;22808:43;22882:2;22867:18;;22860:34;22654:3;22639:19;;22621:279::o;23087:417::-;23318:25;;;-1:-1:-1;;;;;23379:32:56;;;;23374:2;23359:18;;23352:60;23443:2;23428:18;;23421:34;23486:2;23471:18;;23464:34;23305:3;23290:19;;23272:232::o;23509:248::-;23683:25;;;23739:2;23724:18;;23717:34;23671:2;23656:18;;23638:119::o;23762:1133::-;-1:-1:-1;;;;;24225:31:56;;24207:50;;-1:-1:-1;;;;;24331:15:56;;;24326:2;24311:18;;24304:43;24383:15;;;24378:2;24363:18;;24356:43;24435:15;;24245:2;24415:18;;24408:43;24500:8;24488:21;;24482:3;24467:19;;24460:50;24558:1;24547:21;;;24284:3;24526:19;;24519:50;24194:3;24179:19;;24578:47;24620:3;24605:19;;24597:6;24578:47;:::i;:::-;24634:49;24678:3;24667:9;24663:19;24655:6;24634:49;:::i;:::-;24720:6;24714:3;24703:9;24699:19;24692:35;24764:6;24758:3;24747:9;24743:19;24736:35;24780:50;24825:3;24814:9;24810:19;24801:7;24780:50;:::i;:::-;24839;24884:3;24873:9;24869:19;24860:7;24839:50;:::i;:::-;24161:734;;;;;;;;;;;;;;;:::o;24900:533::-;;;25043:11;25030:25;25137:2;25133:7;25122:8;25106:14;25102:29;25098:43;25078:18;25074:68;25064:2;;25159:4;25153;25146:18;25064:2;25189:33;;25241:20;;;-1:-1:-1;;;;;;25273:30:56;;25270:2;;;25319:4;25313;25306:18;25270:2;25355:4;25343:17;;-1:-1:-1;25386:14:56;25382:27;;;25372:38;;25369:2;;;25423:1;25420;25413:12;25438:242;25508:2;25502:9;25538:17;;;-1:-1:-1;;;;;25570:34:56;;25606:22;;;25567:62;25564:2;;;25632:9;25564:2;25659;25652:22;25482:198;;-1:-1:-1;25482:198:56:o;25685:181::-;;-1:-1:-1;;;;;25760:6:56;25757:30;25754:2;;;25790:9;25754:2;-1:-1:-1;25849:2:56;25826:17;-1:-1:-1;;25822:31:56;25855:4;25818:42;;25744:122::o;25871:258::-;25943:1;25953:113;25967:6;25964:1;25961:13;25953:113;;;26043:11;;;26037:18;26024:11;;;26017:39;25989:2;25982:10;25953:113;;;26084:6;26081:1;26078:13;26075:2;;;-1:-1:-1;;26119:1:56;26101:16;;26094:27;25924:205::o;26134:133::-;-1:-1:-1;;;;;26211:31:56;;26201:42;;26191:2;;26257:1;26254;26247:12;26272:120;26360:5;26353:13;26346:21;26339:5;26336:32;26326:2;;26382:1;26379;26372:12;26397:120;26486:5;26483:1;26472:20;26465:5;26462:31;26452:2;;26507:1;26504;26497:12;26522:133;-1:-1:-1;;;;;26599:31:56;;26589:42;;26579:2;;26645:1;26642;26635:12;26660:116;26746:4;26739:5;26735:16;26728:5;26725:27;26715:2;;26766:1;26763;26756:12"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","WETH9()":"4aa4a4fc","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","burn(uint256)":"42966c68","claimReward(uint256,address)":"e70eb392","collect((uint256,address,uint128,uint128))":"fc6f7865","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))":"0c49ccbe","elixirMintCallback(uint256,uint256,bytes)":"1507a8f4","factory()":"c45a0155","forgoReward(uint256)":"29048e7b","getApproved(uint256)":"081812fc","increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))":"219f5d17","isApprovedForAll(address,address)":"e985e9c5","mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))":"88316456","multicall(bytes[])":"ac9650d8","name()":"06fdde03","ownerOf(uint256)":"6352211e","permit(address,uint256,uint256,uint8,bytes32,bytes32)":"7ac2ff7b","positionReward(uint256)":"75e39cec","positions(uint256)":"99fbab88","refundETH()":"12210e8a","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a","setApprovalForAll(address,bool)":"a22cb465","setTime(uint256)":"3beb26c4","supportsInterface(bytes4)":"01ffc9a7","sweepToken(address,uint256,address)":"df2ab5bb","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","unwrapWETH9(uint256,address)":"49404b7c","updateRewardManager(address)":"050eb2eb","updateTokenDescriptor(address)":"97f12a83"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH9\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenDescriptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_elixirRewarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ClaimReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"DecreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"IncreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Max\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Max\",\"type\":\"uint128\"}],\"internalType\":\"struct INonfungiblePositionManager.CollectParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.DecreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"decreaseLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Owed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Owed\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"elixirMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"forgoReward\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.IncreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"increaseLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.MintParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positionReward\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityInsideLastX64\",\"type\":\"uint192\"},{\"internalType\":\"uint32\",\"name\":\"rewardLastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"rewardLastCollected\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"rewardOwed\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_time\",\"type\":\"uint256\"}],\"name\":\"setTime\",\"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\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"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\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_elixirRewarder_\",\"type\":\"address\"}],\"name\":\"updateRewardManager\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenDescriptor_\",\"type\":\"address\"}],\"name\":\"updateTokenDescriptor\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"The domain seperator used in encoding of permit signature\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"burn(uint256)\":{\"params\":{\"tokenId\":\"The ID of the token that is being burned\"}},\"claimReward(uint256,address)\":{\"params\":{\"tokenId\":\"The ID of the NFT for which reward is being collected, recipient The account that should receive the reward tokens\"}},\"collect((uint256,address,uint128,uint128))\":{\"params\":{\"params\":\"tokenId The ID of the NFT for which tokens are being collected, recipient The account that should receive the tokens, amount0Max The maximum amount of token0 to collect, amount1Max The maximum amount of token1 to collect\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the elixir pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}},\"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))\":{\"params\":{\"params\":\"tokenId The ID of the token for which liquidity is being decreased, amount The amount by which liquidity will be decreased, amount0Min The minimum amount of token0 that should be accounted for the burned liquidity, amount1Min The minimum amount of token1 that should be accounted for the burned liquidity, deadline The time by which the transaction must be included to effect the change\"},\"returns\":{\"amount0\":\"The amount of token0 accounted to the position's tokens owed\",\"amount1\":\"The amount of token1 accounted to the position's tokens owed\"}},\"elixirMintCallback(uint256,uint256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the minted liquidity. The caller of this method must be checked to be a ElixirPool deployed by the canonical ElixirFactory.\",\"params\":{\"amount0Owed\":\"The amount of token0 due to the pool for the minted liquidity\",\"amount1Owed\":\"The amount of token1 due to the pool for the minted liquidity\",\"data\":\"Any data passed through by the caller via the IElixirPoolActions#mint call\"}},\"forgoReward(uint256)\":{\"details\":\"Because of (1) `burn` prevents burning the tokenId if there is any reward debt and (2) `claimReward` can be DOSed by an improper reward manager implementation or a reward token, we have this separate function to forgo rewards if user really needs to burn the tokenId and does not care about the rewards\",\"params\":{\"tokenId\":\"The ID of the NFT to forgo the rewards\"}},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"params\":\"tokenId The ID of the token for which liquidity is being increased, amount0Desired The desired amount of token0 to be spent, amount1Desired The desired amount of token1 to be spent, amount0Min The minimum amount of token0 to spend, which serves as a slippage check, amount1Min The minimum amount of token1 to spend, which serves as a slippage check, deadline The time by which the transaction must be included to effect the change\"},\"returns\":{\"amount0\":\"The amount of token0 to acheive resulting liquidity\",\"amount1\":\"The amount of token1 to acheive resulting liquidity\",\"liquidity\":\"The new liquidity amount as a result of the increase\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))\":{\"details\":\"Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized a method does not exist, i.e. the pool is assumed to be initialized.\",\"params\":{\"params\":\"The params necessary to mint a position, encoded as `MintParams` in calldata\"},\"returns\":{\"amount0\":\"The amount of token0\",\"amount1\":\"The amount of token1\",\"liquidity\":\"The amount of liquidity for this position\",\"tokenId\":\"The ID of the token that represents the minted position\"}},\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"positionReward(uint256)\":{\"details\":\"Throws if the token ID is not valid.\",\"params\":{\"tokenId\":\"The ID of the token that represents the position\"},\"returns\":{\"rewardLastCollected\":\"The timestamp of the last time user claimed the rewards of the position\",\"rewardLastUpdated\":\"The timestamp of the last operation that updated rewardPerLiquidityInsideLastX64\",\"rewardOwed\":\"The uncollected amount of reward token owed to the position as of the last computation\",\"rewardPerLiquidityInsideLastX64\":\"The snapshot of liquidity inside the ticks at last operation\"}},\"positions(uint256)\":{\"details\":\"Throws if the token ID is not valid.\",\"params\":{\"tokenId\":\"The ID of the token that represents the position\"},\"returns\":{\"fee\":\"The fee associated with the pool\",\"feeGrowthInside0LastX128\":\"The fee growth of token0 as of the last action on the individual position\",\"feeGrowthInside1LastX128\":\"The fee growth of token1 as of the last action on the individual position\",\"liquidity\":\"The liquidity of the position\",\"nonce\":\"The nonce for permits\",\"operator\":\"The address that is approved for spending\",\"tickLower\":\"The lower end of the tick range for the position\",\"tickUpper\":\"The higher end of the tick range for the position\",\"token0\":\"The address of the token0 for a specific pool\",\"token1\":\"The address of the token1 for a specific pool\",\"tokensOwed0\":\"The uncollected amount of token0 owed to the position as of the last computation\",\"tokensOwed1\":\"The uncollected amount of token1 owed to the position as of the last computation\"}},\"refundETH()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ClaimReward(uint256,address)\":{\"notice\":\"Emitted when Elixir Rewarder is called and notified of the reward amount\"},\"Collect(uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when tokens are collected for a position NFT\"},\"DecreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is decreased for a position NFT\"},\"IncreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is increased for a position NFT\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The domain separator used in the permit signature\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The permit typehash used in the permit signature\"},\"burn(uint256)\":{\"notice\":\"Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens must be collected first.\"},\"claimReward(uint256,address)\":{\"notice\":\"Notifies rewards manager contract the amount of unclaimed rewards and then deletes the reward debt\"},\"collect((uint256,address,uint128,uint128))\":{\"notice\":\"Collects up to a maximum amount of fees owed to a specific position to the recipient\"},\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"},\"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))\":{\"notice\":\"Decreases the amount of liquidity in a position and accounts it to the position\"},\"elixirMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IElixirPool#mint.\"},\"forgoReward(uint256)\":{\"notice\":\"Deletes reward debt of the token\"},\"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`\"},\"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))\":{\"notice\":\"Creates a new position wrapped in a NFT\"},\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"},\"positionReward(uint256)\":{\"notice\":\"Returns the position reward information associated with a given token ID.\"},\"positions(uint256)\":{\"notice\":\"Returns the position information associated with a given token ID.\"},\"refundETH()\":{\"notice\":\"Refunds any ETH balance held by this contract to the `msg.sender`\"},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/test/MockTimeNonfungiblePositionManager.sol\":\"MockTimeNonfungiblePositionManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":{\"keccak256\":\"0xc15f6629fbba11617680a3df47f3a590dcc8360b731788b2783c827c0ba3667a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ca98b55c62541f6685c762569b82b7c7a774398f406554520f874221153250f\",\"dweb:/ipfs/QmVCL8LwVC1LuarhTUVDYijd7W4cmaU5HjVJr5KgqLEdTe\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x558d30194d1a7f76eb5e983633625efd87b13ac0862792a69a305ce69003ab14\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89bca54921a13c0c863c055f18b3108582491fcc091d7188b58e05786c7f2b55\",\"dweb:/ipfs/QmfS5jM1WxULWx4FNB3CJC7KAWDpMpzRgFSGV5dp8RaCJr\"]},\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/NonfungiblePositionManager.sol\":{\"keccak256\":\"0x70dc6a4a2c9b12bc89ffc65faae667a658e20da94f7de47f1bbdecc1e0830245\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://935a16c45ec971f8aad9588dc8311169b919036541fd99d35ccf5a6d5b8a6e21\",\"dweb:/ipfs/QmeWQjH8hgwVmwGPkbQ571JJ9jfLYnimEn6cUrmGcQ4v3S\"]},\"contracts/elixir-periphery/base/ERC721Permit.sol\":{\"keccak256\":\"0xaf4d570ce580f104608e58a43b875f011de40bd7f4b96b14c420a6c8fb7e340c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://44cffafcac087f802d1cb9dc7e8489204e6ac6427ef2c68a543a1814d020a50a\",\"dweb:/ipfs/QmY4yqhsoinSAnRz116Mf6DEZuy74MsADmTkEDYehe1GUC\"]},\"contracts/elixir-periphery/base/LiquidityManagement.sol\":{\"keccak256\":\"0x25c325c22e4159295dcb237e07a343329d97b81cb1bebe8db09c5b75ca532604\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://838f93eacbaac6e37426a13c38a79046e5ec00d05f96e2d5da0910c3c6a583fe\",\"dweb:/ipfs/QmRBANsyLN8UUrqpe1ZbhmjXchuUDRmcYiBpb5nTFae2LJ\"]},\"contracts/elixir-periphery/base/Multicall.sol\":{\"keccak256\":\"0x3acc1acf20b9f218e68706d90f71b28d63fbca91b8a6b5445613e12d5c98aac6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c4414bcad1d2971596866d1dc95790954fac1ca9e772d9864785496348083839\",\"dweb:/ipfs/QmXeTSwz3446DddKoZSaY1vZ4mNsMvdF4zAeX4ANoMxhjT\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PeripheryPayments.sol\":{\"keccak256\":\"0x2fbe56fb8efa036258fb1eb651b1aa426c03e6483ec271f2fa1291d7d6030724\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0f5c8e95ec1e7ed22f7bbc35e18905ced294231e3c34b010448b1a841d466ba9\",\"dweb:/ipfs/QmZHnDNLBcMY8CFoa8dvrkdCHTXNNMsX6RcT1y1vHNEWzc\"]},\"contracts/elixir-periphery/base/PeripheryValidation.sol\":{\"keccak256\":\"0x439687955aa8549b51cabaeba892a28730e3f7756317dbc48fa562cd945fee5a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bc8a557487299a2b451f3e19d5d60f025898b7e302307af2a4fe4e3db3865b7a\",\"dweb:/ipfs/Qmb4WLpfFqguv1Jou3TfLNzErcZuLDnaqCWxnbuWjPewqJ\"]},\"contracts/elixir-periphery/base/PoolInitializer.sol\":{\"keccak256\":\"0x8fddad649086f0cb0dcd2fb7b03af5ee61c795efb358fbf70aad3a2ff5cb054a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f63312d984b53b27c8d8bb7753c8351415bea1ca55f0a2206f0f7fb43106c74e\",\"dweb:/ipfs/QmPbmpP9d1fXiCmztfvFBRuSxHbs93Aaq8MwrD7tPPHzqK\"]},\"contracts/elixir-periphery/base/SelfPermit.sol\":{\"keccak256\":\"0x93b6b25fba6b55918c18fd5d55ddb8a85336dcbb4773c3d7ab6d486960c9a665\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://fd2a053076cdd2a7fbd4ba498c9a493cd173cba860ead6139eb9e5c3fe60f067\",\"dweb:/ipfs/QmQwpbEx5aMbJAXeKGeA43qNGcCAYMz8ng1vwG5z4SCqv1\"]},\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]},\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0xf968ea5f5b29c4407b3337051b0fb2ea786b8a6e3f476d40cdde1cb9415b1735\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c92f629ddeb1a6bcec8b154e6619a492053a375db3a28b37bbcd49b35d4b171\",\"dweb:/ipfs/QmYRNQmFQ8gD3dkTQz85cEHwEkBuXW4F64HQB9MUUHHYse\"]},\"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol\":{\"keccak256\":\"0xad5664d7c455da6e2d56dc0d53b7d40354d83aac9312d367481b3428394ec8a3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3fa455da4a61b8b084edd5b27bfb1fd739eae48e1d1e72399841774a41d3163d\",\"dweb:/ipfs/QmXmeyfQXP4NPbZNanqquiaD9WZHUwvQThbezmCEFWnAQn\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]},\"contracts/elixir-periphery/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xd9b5ac195482b3cd25c2b1d2bf7f8be6f69b8352df17e23111556fc436590bb8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://dfd4975c3a69938f6fa6189fe5e4428260bd8aaa3e1f202c934edafe09d3d5d2\",\"dweb:/ipfs/QmaW1ZYYhnozmccckXLcg99ZoJCwoURdhaEPd26LmYvSZV\"]},\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x1495f5068f2b892668447889f379d87decb18c9369f4506df9d23edba9ccb4b7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6f322bead944abc1da0e75aba72c9e02b22f02c15712f49b212bb65869b406ca\",\"dweb:/ipfs/QmTZAqfg4EwuFAX61ZW4nA55sUbn3o2Qy3W55C3ghPUAWM\"]},\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xb2c39ec43afd1140b765a183017c52d02763f6ad1732cc8bd15b424cf60addf3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4991a734b128dee4821aaaca11279e2caa458128a436ee4b64ddd2483962223a\",\"dweb:/ipfs/QmbLtcN47cGXxbAua61GDp9PGz9bqru7UQPH2CJSgF1cjC\"]},\"contracts/elixir-periphery/libraries/ChainId.sol\":{\"keccak256\":\"0x6de0c960e4f3f024d7473c9e08ab84d3f2c7317117661eabd2ea0e9fdad3dfb2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e591724e2d5b0ca7c95e5e54ecf520487556a4045e770c4da9ee5930f48fd215\",\"dweb:/ipfs/QmW1HCuhWaBckYz8Kx1XmaPRn1nSuCMZLdGmaR6UJdQsLH\"]},\"contracts/elixir-periphery/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ed6cb25c14c41756086367d76eba826250da3a8621ace0c8657fce32e68fad7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06d92752a75efdd197ef39740e3e266bda1fbd0361c40bb9c014a608ade17b31\",\"dweb:/ipfs/QmRPhnmoNz9s2ZvJDomKtKMrYJXPvD6J6LGDtTQ8KeTDMY\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/libraries/PositionKey.sol\":{\"keccak256\":\"0x0a532dba371aed58c383f4e5b8d4ecc7de60eba8c14ef69e40b6e83401ccf74d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://992d7b2eb0bb01fdbd8169fea0f1c30938023267008cc8c7ab057487858a48b7\",\"dweb:/ipfs/QmZCxsgbiCsPmw4fk3ZRPcot9MSmWqndGP1TGMRsjztjcH\"]},\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"contracts/elixir-periphery/test/MockTimeNonfungiblePositionManager.sol\":{\"keccak256\":\"0x8348f6ccc687e7561899ebbe01169b5a01ca4a11621ec8c62d40d96bb208da10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://994186c77ef43dadad95230ea1c732cbc975e7a2e606f8a0056ef7f54eb15943\",\"dweb:/ipfs/QmcqK5cMUpea8S2g3TuHM98GLNdn4kkQWzFcqMJUK49sxN\"]},\"contracts/elixir-rewarder/interfaces/IElixirRewarder.sol\":{\"keccak256\":\"0x307c973fb851c774621d8922c55d848fbd00c636ba143726c2402895173dd179\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d6329299ae1b944825655112abc7480a6dbc542743f0820b1dbe5e85c8c23205\",\"dweb:/ipfs/QmTVB1d6NTDGrEyqqhGdpnPAUM5jDSqxft6ZiUZox8wZv5\"]},\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"openzeppelin-contracts-solc-0.7/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"openzeppelin-contracts-solc-0.7/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"openzeppelin-contracts-solc-0.7/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"contracts/elixir-rewarder/interfaces/IElixirRewarder.sol":{"IElixirRewarder":{"abi":[{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"rewardOwed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint32","name":"rewardLastUpdated","type":"uint32"},{"internalType":"uint32","name":"rewardLastCollected","type":"uint32"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"claimReward(address,uint256,uint256,address,uint32,uint32)":"32d5eeaf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardOwed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"rewardLastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"rewardLastCollected\",\"type\":\"uint32\"}],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimReward(address,uint256,uint256,address,uint32,uint32)\":{\"params\":{\"recipient\":\"The address to which the reward should be sent rewardOwed The amount of reward the will be sent tokenId The position token ID for which the reward is being claimed pool The address of the pool from which the position belongs to, this will determine reward token rewardLastUpdated The last timestamp when there was an operation on the position rewardLastCollected The last timestamp when the reward was collected for the position\"}}},\"title\":\"IElixirRewarder - Elixir Rewarder interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimReward(address,uint256,uint256,address,uint32,uint32)\":{\"notice\":\"Send `rewardOwed` to the `recipient`\"}},\"notice\":\"ElixirRewarder is the reward manager contract for Elixir. It works with NonfungiblePositionManager. It does not need to do any calculation, and it trusts the amounts notified by NonfungiblePositionManager.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-rewarder/interfaces/IElixirRewarder.sol\":\"IElixirRewarder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"contracts/elixir-rewarder/interfaces/IElixirRewarder.sol\":{\"keccak256\":\"0x307c973fb851c774621d8922c55d848fbd00c636ba143726c2402895173dd179\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d6329299ae1b944825655112abc7480a6dbc542743f0820b1dbe5e85c8c23205\",\"dweb:/ipfs/QmTVB1d6NTDGrEyqqhGdpnPAUM5jDSqxft6ZiUZox8wZv5\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over `owner`'s tokens, given `owner`'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"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 may inherit from this and call {_registerInterface} to declare their support of an interface.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"}},\"stateVariables\":{\"_supportedInterfaces\":{\"details\":\"Mapping of interface ids to whether or not it's supported.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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-solc-0.7/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/math/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3aa0244ac350adb9886047e0d8e71f61b253e50b4acf7c83ec8d87e780543f564736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xAA MUL DIFFICULTY 0xAC CALLDATALOAD EXP 0xDB SWAP9 DUP7 DIV PUSH31 0xD8E71F61B253E50B4ACF7C83EC8D87E780543F564736F6C63430007060033 ","sourceMap":"622:6594:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3aa0244ac350adb9886047e0d8e71f61b253e50b4acf7c83ec8d87e780543f564736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xAA MUL DIFFICULTY 0xAC CALLDATALOAD EXP 0xDB SWAP9 DUP7 DIV PUSH31 0xD8E71F61B253E50B4ACF7C83EC8D87E780543F564736F6C63430007060033 ","sourceMap":"622:6594:44:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when 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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"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.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162001cb838038062001cb8833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250620001b391506301ffc9a760e01b90506200021d565b8151620001c8906006906020850190620002a2565b508051620001de906007906020840190620002a2565b50620001f16380ac58cd60e01b6200021d565b62000203635b5e139f60e01b6200021d565b6200021563780e9d6360e01b6200021d565b50506200034e565b6001600160e01b031980821614156200027d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002da576000855562000325565b82601f10620002f557805160ff191683800117855562000325565b8280016001018555821562000325579182015b828111156200032557825182559160200191906001019062000308565b506200033392915062000337565b5090565b5b8082111562000333576000815560010162000338565b61195a806200035e6000396000f3fe608060405234801561001057600080fd5b50600436106100db5760003560e01c806301ffc9a7146100e057806306fdde031461011b578063081812fc14610198578063095ea7b3146101d157806318160ddd146101ff57806323b872dd146102195780632f745c591461024f57806342842e0e1461027b5780634f6ccce7146102b15780636352211e146102ce5780636c0360eb146102eb57806370a08231146102f357806395d89b4114610319578063a22cb46514610321578063b88d4fde1461034f578063c87b56dd14610413578063e985e9c514610430575b600080fd5b610107600480360360208110156100f657600080fd5b50356001600160e01b03191661045e565b604080519115158252519081900360200190f35b610123610481565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b5600480360360208110156101ae57600080fd5b5035610517565b604080516001600160a01b039092168252519081900360200190f35b6101fd600480360360408110156101e757600080fd5b506001600160a01b038135169060200135610579565b005b610207610654565b60408051918252519081900360200190f35b6101fd6004803603606081101561022f57600080fd5b506001600160a01b03813581169160208101359091169060400135610665565b6102076004803603604081101561026557600080fd5b506001600160a01b0381351690602001356106bc565b6101fd6004803603606081101561029157600080fd5b506001600160a01b038135811691602081013590911690604001356106e7565b610207600480360360208110156102c757600080fd5b5035610702565b6101b5600480360360208110156102e457600080fd5b5035610718565b610123610740565b6102076004803603602081101561030957600080fd5b50356001600160a01b03166107a1565b610123610809565b6101fd6004803603604081101561033757600080fd5b506001600160a01b038135169060200135151561086a565b6101fd6004803603608081101561036557600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561039f57600080fd5b8201836020820111156103b157600080fd5b803590602001918460018302840111600160201b831117156103d257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061096b945050505050565b6101236004803603602081101561042957600080fd5b50356109c9565b6101076004803603604081101561044657600080fd5b506001600160a01b0381358116916020013516610c4a565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561050d5780601f106104e25761010080835404028352916020019161050d565b820191906000526020600020905b8154815290600101906020018083116104f057829003601f168201915b5050505050905090565b600061052282610c78565b61055d5760405162461bcd60e51b815260040180806020018281038252602c81526020018061184f602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061058482610718565b9050806001600160a01b0316836001600160a01b031614156105d75760405162461bcd60e51b81526004018080602001828103825260218152602001806118d36021913960400191505060405180910390fd5b806001600160a01b03166105e9610c85565b6001600160a01b0316148061060a575061060a81610605610c85565b610c4a565b6106455760405162461bcd60e51b81526004018080602001828103825260388152602001806117a26038913960400191505060405180910390fd5b61064f8383610c89565b505050565b60006106606002610cf7565b905090565b610676610670610c85565b82610d02565b6106b15760405162461bcd60e51b81526004018080602001828103825260318152602001806118f46031913960400191505060405180910390fd5b61064f838383610da6565b6001600160a01b03821660009081526001602052604081206106de9083610ef2565b90505b92915050565b61064f8383836040518060200160405280600081525061096b565b600080610710600284610efe565b509392505050565b60006106e1826040518060600160405280602981526020016118046029913960029190610f1a565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561050d5780601f106104e25761010080835404028352916020019161050d565b60006001600160a01b0382166107e85760405162461bcd60e51b815260040180806020018281038252602a8152602001806117da602a913960400191505060405180910390fd5b6001600160a01b03821660009081526001602052604090206106e190610cf7565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561050d5780601f106104e25761010080835404028352916020019161050d565b610872610c85565b6001600160a01b0316826001600160a01b031614156108d4576040805162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015290519081900360640190fd5b80600560006108e1610c85565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610925610c85565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b61097c610976610c85565b83610d02565b6109b75760405162461bcd60e51b81526004018080602001828103825260318152602001806118f46031913960400191505060405180910390fd5b6109c384848484610f31565b50505050565b60606109d482610c78565b610a0f5760405162461bcd60e51b815260040180806020018281038252602f8152602001806118a4602f913960400191505060405180910390fd5b60008281526008602090815260408083208054825160026001831615610100026000190190921691909104601f810185900485028201850190935282815292909190830182828015610aa25780601f10610a7757610100808354040283529160200191610aa2565b820191906000526020600020905b815481529060010190602001808311610a8557829003601f168201915b505050505090506000610ab3610740565b9050805160001415610ac75750905061047c565b815115610b885780826040516020018083805190602001908083835b60208310610b025780518252601f199092019160209182019101610ae3565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b4a5780518252601f199092019160209182019101610b2b565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529250505061047c565b80610b9285610f83565b6040516020018083805190602001908083835b60208310610bc45780518252601f199092019160209182019101610ba5565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c0c5780518252601f199092019160209182019101610bed565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006106e160028361105e565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cbe82610718565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006106e18261106a565b6000610d0d82610c78565b610d485760405162461bcd60e51b815260040180806020018281038252602c815260200180611776602c913960400191505060405180910390fd5b6000610d5383610718565b9050806001600160a01b0316846001600160a01b03161480610d8e5750836001600160a01b0316610d8384610517565b6001600160a01b0316145b80610d9e5750610d9e8185610c4a565b949350505050565b826001600160a01b0316610db982610718565b6001600160a01b031614610dfe5760405162461bcd60e51b815260040180806020018281038252602981526020018061187b6029913960400191505060405180910390fd5b6001600160a01b038216610e435760405162461bcd60e51b81526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b610e4e83838361064f565b610e59600082610c89565b6001600160a01b0383166000908152600160205260409020610e7b908261106e565b506001600160a01b0382166000908152600160205260409020610e9e908261107a565b50610eab60028284611086565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006106de838361109c565b6000808080610f0d8686611100565b9097909650945050505050565b6000610f2784848461117b565b90505b9392505050565b610f3c848484610da6565b610f4884848484611245565b6109c35760405162461bcd60e51b81526004018080602001828103825260328152602001806117206032913960400191505060405180910390fd5b606081610fa857506040805180820190915260018152600360fc1b602082015261047c565b8160005b8115610fc057600101600a82049150610fac565b60008167ffffffffffffffff81118015610fd957600080fd5b506040519080825280601f01601f191660200182016040528015611004576020820181803683370190505b50859350905060001982015b831561105557600a840660300160f81b8282806001900393508151811061103357fe5b60200101906001600160f81b031916908160001a905350600a84049350611010565b50949350505050565b60006106de83836113ad565b5490565b60006106de83836113c5565b60006106de838361148b565b6000610f2784846001600160a01b0385166114d5565b815460009082106110de5760405162461bcd60e51b81526004018080602001828103825260228152602001806116fe6022913960400191505060405180910390fd5b8260000182815481106110ed57fe5b9060005260206000200154905092915050565b8154600090819083106111445760405162461bcd60e51b815260040180806020018281038252602281526020018061182d6022913960400191505060405180910390fd5b600084600001848154811061115557fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816112165760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111db5781810151838201526020016111c3565b50505050905090810190601f1680156112085780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061122957fe5b9060005260206000209060020201600101549150509392505050565b6000611259846001600160a01b031661156c565b61126557506001610d9e565b6000611373630a85bd0160e11b61127a610c85565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156112e15781810151838201526020016112c9565b50505050905090810190601f16801561130e5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611720603291396001600160a01b0388169190611572565b9050600081806020019051602081101561138c57600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6000818152600183016020526040812054801561148157835460001980830191908101906000908790839081106113f857fe5b906000526020600020015490508087600001848154811061141557fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061144557fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506106e1565b60009150506106e1565b600061149783836113ad565b6114cd575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106e1565b5060006106e1565b60008281526001840160205260408120548061153a575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f2a565b8285600001600183038154811061154d57fe5b9060005260206000209060020201600101819055506000915050610f2a565b3b151590565b6060610f278484600085856115868561156c565b6115d7576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106116155780518252601f1990920191602091820191016115f6565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611677576040519150601f19603f3d011682016040523d82523d6000602084013e61167c565b606091505b509150915061168c828286611697565b979650505050505050565b606083156116a6575081610f2a565b8251156116b65782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156111db5781810151838201526020016111c356fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220d43797a8d97872343841831798dea9243b2d1e48c48a8db9d3cf8741bbae156264736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1CB8 CODESIZE SUB DUP1 PUSH3 0x1CB8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP PUSH3 0x1B3 SWAP2 POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL SWAP1 POP PUSH3 0x21D JUMP JUMPDEST DUP2 MLOAD PUSH3 0x1C8 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2A2 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1DE SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x2A2 JUMP JUMPDEST POP PUSH3 0x1F1 PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH3 0x21D JUMP JUMPDEST PUSH3 0x203 PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH3 0x21D JUMP JUMPDEST PUSH3 0x215 PUSH4 0x780E9D63 PUSH1 0xE0 SHL PUSH3 0x21D JUMP JUMPDEST POP POP PUSH3 0x34E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x27D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x2DA JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x325 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x2F5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x325 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x325 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x325 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x308 JUMP JUMPDEST POP PUSH3 0x333 SWAP3 SWAP2 POP PUSH3 0x337 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x333 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x338 JUMP JUMPDEST PUSH2 0x195A DUP1 PUSH3 0x35E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x413 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x430 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH2 0x481 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x517 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x579 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x207 PUSH2 0x654 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x665 JUMP JUMPDEST PUSH2 0x207 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6BC JUMP JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6E7 JUMP JUMPDEST PUSH2 0x207 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x702 JUMP JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x718 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x740 JUMP JUMPDEST PUSH2 0x207 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x809 JUMP JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x86A JUMP JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x96B SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4F0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x522 DUP3 PUSH2 0xC78 JUMP JUMPDEST PUSH2 0x55D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x184F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x584 DUP3 PUSH2 0x718 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x5D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18D3 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5E9 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x60A JUMPI POP PUSH2 0x60A DUP2 PUSH2 0x605 PUSH2 0xC85 JUMP JUMPDEST PUSH2 0xC4A JUMP JUMPDEST PUSH2 0x645 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17A2 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x64F DUP4 DUP4 PUSH2 0xC89 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x660 PUSH1 0x2 PUSH2 0xCF7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x676 PUSH2 0x670 PUSH2 0xC85 JUMP JUMPDEST DUP3 PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x6B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18F4 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x64F DUP4 DUP4 DUP4 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x6DE SWAP1 DUP4 PUSH2 0xEF2 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x64F DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x96B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x710 PUSH1 0x2 DUP5 PUSH2 0xEFE JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1804 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xF1A JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x7E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17DA PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x6E1 SWAP1 PUSH2 0xCF7 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50D JUMP JUMPDEST PUSH2 0x872 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x8D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x22A9219B99189D1030B8383937BB32903A379031B0B63632B9 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x8E1 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x925 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x97C PUSH2 0x976 PUSH2 0xC85 JUMP JUMPDEST DUP4 PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18F4 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9C3 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF31 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9D4 DUP3 PUSH2 0xC78 JUMP JUMPDEST PUSH2 0xA0F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18A4 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP3 MLOAD PUSH1 0x2 PUSH1 0x1 DUP4 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 DIV PUSH1 0x1F DUP2 ADD DUP6 SWAP1 DIV DUP6 MUL DUP3 ADD DUP6 ADD SWAP1 SWAP4 MSTORE DUP3 DUP2 MSTORE SWAP3 SWAP1 SWAP2 SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xAA2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA77 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAA2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA85 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xAB3 PUSH2 0x740 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xAC7 JUMPI POP SWAP1 POP PUSH2 0x47C JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB88 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB02 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xAE3 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB4A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB2B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x47C JUMP JUMPDEST DUP1 PUSH2 0xB92 DUP6 PUSH2 0xF83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xBC4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBA5 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xC0C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBED JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E1 PUSH1 0x2 DUP4 PUSH2 0x105E JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xCBE DUP3 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP3 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0D DUP3 PUSH2 0xC78 JUMP JUMPDEST PUSH2 0xD48 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1776 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD53 DUP4 PUSH2 0x718 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xD8E JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD83 DUP5 PUSH2 0x517 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0xD9E JUMPI POP PUSH2 0xD9E DUP2 DUP6 PUSH2 0xC4A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDB9 DUP3 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xDFE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x187B PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE43 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1752 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE4E DUP4 DUP4 DUP4 PUSH2 0x64F JUMP JUMPDEST PUSH2 0xE59 PUSH1 0x0 DUP3 PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xE7B SWAP1 DUP3 PUSH2 0x106E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xE9E SWAP1 DUP3 PUSH2 0x107A JUMP JUMPDEST POP PUSH2 0xEAB PUSH1 0x2 DUP3 DUP5 PUSH2 0x1086 JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DE DUP4 DUP4 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xF0D DUP7 DUP7 PUSH2 0x1100 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF27 DUP5 DUP5 DUP5 PUSH2 0x117B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF3C DUP5 DUP5 DUP5 PUSH2 0xDA6 JUMP JUMPDEST PUSH2 0xF48 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x9C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1720 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xFA8 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x47C JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0xFAC JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xFD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1004 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x1055 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x1033 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x1010 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DE DUP4 DUP4 PUSH2 0x13AD JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DE DUP4 DUP4 PUSH2 0x13C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DE DUP4 DUP4 PUSH2 0x148B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF27 DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x14D5 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x10DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16FE PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x10ED JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x1144 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x182D PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1155 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11DB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1208 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1229 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1259 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x156C JUMP JUMPDEST PUSH2 0x1265 JUMPI POP PUSH1 0x1 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1373 PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x127A PUSH2 0xC85 JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12E1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12C9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x130E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND 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 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1720 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x1572 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x138C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1481 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x13F8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1415 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x1445 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1497 DUP4 DUP4 PUSH2 0x13AD JUMP JUMPDEST PUSH2 0x14CD JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x6E1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x153A JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xF2A JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x154D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0xF2A JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF27 DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x1586 DUP6 PUSH2 0x156C JUMP JUMPDEST PUSH2 0x15D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1615 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x15F6 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1677 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x167C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x168C DUP3 DUP3 DUP7 PUSH2 0x1697 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x16A6 JUMPI POP DUP2 PUSH2 0xF2A JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x16B6 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11DB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C3 JUMP INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76656420717565727920666F72206E6F6E65 PUSH25 0x697374656E7420746F6B656E4552433732313A207472616E73 PUSH7 0x6572206F662074 PUSH16 0x6B656E2074686174206973206E6F7420 PUSH16 0x776E4552433732314D65746164617461 GASPRICE KECCAK256 SSTORE MSTORE 0x49 KECCAK256 PUSH18 0x7565727920666F72206E6F6E657869737465 PUSH15 0x7420746F6B656E4552433732313A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x58221220D43797A8D97872343841831798DEA924 EXTCODESIZE 0x2D 0x1E 0x48 0xC4 DUP11 DUP14 0xB9 0xD3 0xCF DUP8 COINBASE 0xBB 0xAE ISZERO PUSH3 0x64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"563:16527:46:-:0;;;3569:362;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:46;;;;;;;;;;-1:-1:-1;3569:362:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:46;;;;;;;;;;-1:-1:-1;3569:362:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:46;;-1:-1:-1;751:40:42;;-1:-1:-1;;;;770:20:42;-1:-1:-1;751:18:42;:40::i;:::-;3636:13:46;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3659:17:46;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3764:40:46;-1:-1:-1;;;3764:18:46;:40::i;:::-;3814:49;-1:-1:-1;;;3814:18:46;:49::i;:::-;3873:51;-1:-1:-1;;;3873:18:46;:51::i;:::-;3569:362;;563:16527;;1490:198:42;-1:-1:-1;;;;;;1573:25:42;;;;;1565:66;;;;;-1:-1:-1;;;1565:66:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1641:33:42;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1641:40:42;1677:4;1641:40;;;1490:198::o;563:16527:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;563:16527:46;;;-1:-1:-1;563:16527:46;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100db5760003560e01c806301ffc9a7146100e057806306fdde031461011b578063081812fc14610198578063095ea7b3146101d157806318160ddd146101ff57806323b872dd146102195780632f745c591461024f57806342842e0e1461027b5780634f6ccce7146102b15780636352211e146102ce5780636c0360eb146102eb57806370a08231146102f357806395d89b4114610319578063a22cb46514610321578063b88d4fde1461034f578063c87b56dd14610413578063e985e9c514610430575b600080fd5b610107600480360360208110156100f657600080fd5b50356001600160e01b03191661045e565b604080519115158252519081900360200190f35b610123610481565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b5600480360360208110156101ae57600080fd5b5035610517565b604080516001600160a01b039092168252519081900360200190f35b6101fd600480360360408110156101e757600080fd5b506001600160a01b038135169060200135610579565b005b610207610654565b60408051918252519081900360200190f35b6101fd6004803603606081101561022f57600080fd5b506001600160a01b03813581169160208101359091169060400135610665565b6102076004803603604081101561026557600080fd5b506001600160a01b0381351690602001356106bc565b6101fd6004803603606081101561029157600080fd5b506001600160a01b038135811691602081013590911690604001356106e7565b610207600480360360208110156102c757600080fd5b5035610702565b6101b5600480360360208110156102e457600080fd5b5035610718565b610123610740565b6102076004803603602081101561030957600080fd5b50356001600160a01b03166107a1565b610123610809565b6101fd6004803603604081101561033757600080fd5b506001600160a01b038135169060200135151561086a565b6101fd6004803603608081101561036557600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561039f57600080fd5b8201836020820111156103b157600080fd5b803590602001918460018302840111600160201b831117156103d257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061096b945050505050565b6101236004803603602081101561042957600080fd5b50356109c9565b6101076004803603604081101561044657600080fd5b506001600160a01b0381358116916020013516610c4a565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561050d5780601f106104e25761010080835404028352916020019161050d565b820191906000526020600020905b8154815290600101906020018083116104f057829003601f168201915b5050505050905090565b600061052282610c78565b61055d5760405162461bcd60e51b815260040180806020018281038252602c81526020018061184f602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061058482610718565b9050806001600160a01b0316836001600160a01b031614156105d75760405162461bcd60e51b81526004018080602001828103825260218152602001806118d36021913960400191505060405180910390fd5b806001600160a01b03166105e9610c85565b6001600160a01b0316148061060a575061060a81610605610c85565b610c4a565b6106455760405162461bcd60e51b81526004018080602001828103825260388152602001806117a26038913960400191505060405180910390fd5b61064f8383610c89565b505050565b60006106606002610cf7565b905090565b610676610670610c85565b82610d02565b6106b15760405162461bcd60e51b81526004018080602001828103825260318152602001806118f46031913960400191505060405180910390fd5b61064f838383610da6565b6001600160a01b03821660009081526001602052604081206106de9083610ef2565b90505b92915050565b61064f8383836040518060200160405280600081525061096b565b600080610710600284610efe565b509392505050565b60006106e1826040518060600160405280602981526020016118046029913960029190610f1a565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561050d5780601f106104e25761010080835404028352916020019161050d565b60006001600160a01b0382166107e85760405162461bcd60e51b815260040180806020018281038252602a8152602001806117da602a913960400191505060405180910390fd5b6001600160a01b03821660009081526001602052604090206106e190610cf7565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561050d5780601f106104e25761010080835404028352916020019161050d565b610872610c85565b6001600160a01b0316826001600160a01b031614156108d4576040805162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015290519081900360640190fd5b80600560006108e1610c85565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610925610c85565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b61097c610976610c85565b83610d02565b6109b75760405162461bcd60e51b81526004018080602001828103825260318152602001806118f46031913960400191505060405180910390fd5b6109c384848484610f31565b50505050565b60606109d482610c78565b610a0f5760405162461bcd60e51b815260040180806020018281038252602f8152602001806118a4602f913960400191505060405180910390fd5b60008281526008602090815260408083208054825160026001831615610100026000190190921691909104601f810185900485028201850190935282815292909190830182828015610aa25780601f10610a7757610100808354040283529160200191610aa2565b820191906000526020600020905b815481529060010190602001808311610a8557829003601f168201915b505050505090506000610ab3610740565b9050805160001415610ac75750905061047c565b815115610b885780826040516020018083805190602001908083835b60208310610b025780518252601f199092019160209182019101610ae3565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b4a5780518252601f199092019160209182019101610b2b565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529250505061047c565b80610b9285610f83565b6040516020018083805190602001908083835b60208310610bc45780518252601f199092019160209182019101610ba5565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c0c5780518252601f199092019160209182019101610bed565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006106e160028361105e565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cbe82610718565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006106e18261106a565b6000610d0d82610c78565b610d485760405162461bcd60e51b815260040180806020018281038252602c815260200180611776602c913960400191505060405180910390fd5b6000610d5383610718565b9050806001600160a01b0316846001600160a01b03161480610d8e5750836001600160a01b0316610d8384610517565b6001600160a01b0316145b80610d9e5750610d9e8185610c4a565b949350505050565b826001600160a01b0316610db982610718565b6001600160a01b031614610dfe5760405162461bcd60e51b815260040180806020018281038252602981526020018061187b6029913960400191505060405180910390fd5b6001600160a01b038216610e435760405162461bcd60e51b81526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b610e4e83838361064f565b610e59600082610c89565b6001600160a01b0383166000908152600160205260409020610e7b908261106e565b506001600160a01b0382166000908152600160205260409020610e9e908261107a565b50610eab60028284611086565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006106de838361109c565b6000808080610f0d8686611100565b9097909650945050505050565b6000610f2784848461117b565b90505b9392505050565b610f3c848484610da6565b610f4884848484611245565b6109c35760405162461bcd60e51b81526004018080602001828103825260328152602001806117206032913960400191505060405180910390fd5b606081610fa857506040805180820190915260018152600360fc1b602082015261047c565b8160005b8115610fc057600101600a82049150610fac565b60008167ffffffffffffffff81118015610fd957600080fd5b506040519080825280601f01601f191660200182016040528015611004576020820181803683370190505b50859350905060001982015b831561105557600a840660300160f81b8282806001900393508151811061103357fe5b60200101906001600160f81b031916908160001a905350600a84049350611010565b50949350505050565b60006106de83836113ad565b5490565b60006106de83836113c5565b60006106de838361148b565b6000610f2784846001600160a01b0385166114d5565b815460009082106110de5760405162461bcd60e51b81526004018080602001828103825260228152602001806116fe6022913960400191505060405180910390fd5b8260000182815481106110ed57fe5b9060005260206000200154905092915050565b8154600090819083106111445760405162461bcd60e51b815260040180806020018281038252602281526020018061182d6022913960400191505060405180910390fd5b600084600001848154811061115557fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816112165760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111db5781810151838201526020016111c3565b50505050905090810190601f1680156112085780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061122957fe5b9060005260206000209060020201600101549150509392505050565b6000611259846001600160a01b031661156c565b61126557506001610d9e565b6000611373630a85bd0160e11b61127a610c85565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156112e15781810151838201526020016112c9565b50505050905090810190601f16801561130e5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611720603291396001600160a01b0388169190611572565b9050600081806020019051602081101561138c57600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6000818152600183016020526040812054801561148157835460001980830191908101906000908790839081106113f857fe5b906000526020600020015490508087600001848154811061141557fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061144557fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506106e1565b60009150506106e1565b600061149783836113ad565b6114cd575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106e1565b5060006106e1565b60008281526001840160205260408120548061153a575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f2a565b8285600001600183038154811061154d57fe5b9060005260206000209060020201600101819055506000915050610f2a565b3b151590565b6060610f278484600085856115868561156c565b6115d7576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106116155780518252601f1990920191602091820191016115f6565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611677576040519150601f19603f3d011682016040523d82523d6000602084013e61167c565b606091505b509150915061168c828286611697565b979650505050505050565b606083156116a6575081610f2a565b8251156116b65782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156111db5781810151838201526020016111c356fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220d43797a8d97872343841831798dea9243b2d1e48c48a8db9d3cf8741bbae156264736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x413 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x430 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH2 0x481 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x517 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x579 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x207 PUSH2 0x654 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x665 JUMP JUMPDEST PUSH2 0x207 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6BC JUMP JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6E7 JUMP JUMPDEST PUSH2 0x207 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x702 JUMP JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x718 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x740 JUMP JUMPDEST PUSH2 0x207 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x809 JUMP JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x86A JUMP JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x96B SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4F0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x522 DUP3 PUSH2 0xC78 JUMP JUMPDEST PUSH2 0x55D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x184F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x584 DUP3 PUSH2 0x718 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x5D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18D3 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5E9 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x60A JUMPI POP PUSH2 0x60A DUP2 PUSH2 0x605 PUSH2 0xC85 JUMP JUMPDEST PUSH2 0xC4A JUMP JUMPDEST PUSH2 0x645 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17A2 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x64F DUP4 DUP4 PUSH2 0xC89 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x660 PUSH1 0x2 PUSH2 0xCF7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x676 PUSH2 0x670 PUSH2 0xC85 JUMP JUMPDEST DUP3 PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x6B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18F4 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x64F DUP4 DUP4 DUP4 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x6DE SWAP1 DUP4 PUSH2 0xEF2 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x64F DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x96B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x710 PUSH1 0x2 DUP5 PUSH2 0xEFE JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1804 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xF1A JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x7E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17DA PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x6E1 SWAP1 PUSH2 0xCF7 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50D JUMP JUMPDEST PUSH2 0x872 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x8D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x22A9219B99189D1030B8383937BB32903A379031B0B63632B9 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x8E1 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x925 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x97C PUSH2 0x976 PUSH2 0xC85 JUMP JUMPDEST DUP4 PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18F4 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9C3 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF31 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9D4 DUP3 PUSH2 0xC78 JUMP JUMPDEST PUSH2 0xA0F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18A4 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP3 MLOAD PUSH1 0x2 PUSH1 0x1 DUP4 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 DIV PUSH1 0x1F DUP2 ADD DUP6 SWAP1 DIV DUP6 MUL DUP3 ADD DUP6 ADD SWAP1 SWAP4 MSTORE DUP3 DUP2 MSTORE SWAP3 SWAP1 SWAP2 SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xAA2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA77 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAA2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA85 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xAB3 PUSH2 0x740 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xAC7 JUMPI POP SWAP1 POP PUSH2 0x47C JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB88 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB02 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xAE3 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB4A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB2B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x47C JUMP JUMPDEST DUP1 PUSH2 0xB92 DUP6 PUSH2 0xF83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xBC4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBA5 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xC0C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBED JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E1 PUSH1 0x2 DUP4 PUSH2 0x105E JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xCBE DUP3 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP3 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0D DUP3 PUSH2 0xC78 JUMP JUMPDEST PUSH2 0xD48 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1776 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD53 DUP4 PUSH2 0x718 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xD8E JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD83 DUP5 PUSH2 0x517 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0xD9E JUMPI POP PUSH2 0xD9E DUP2 DUP6 PUSH2 0xC4A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDB9 DUP3 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xDFE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x187B PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE43 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1752 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE4E DUP4 DUP4 DUP4 PUSH2 0x64F JUMP JUMPDEST PUSH2 0xE59 PUSH1 0x0 DUP3 PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xE7B SWAP1 DUP3 PUSH2 0x106E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xE9E SWAP1 DUP3 PUSH2 0x107A JUMP JUMPDEST POP PUSH2 0xEAB PUSH1 0x2 DUP3 DUP5 PUSH2 0x1086 JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DE DUP4 DUP4 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xF0D DUP7 DUP7 PUSH2 0x1100 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF27 DUP5 DUP5 DUP5 PUSH2 0x117B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF3C DUP5 DUP5 DUP5 PUSH2 0xDA6 JUMP JUMPDEST PUSH2 0xF48 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x9C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1720 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xFA8 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x47C JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0xFAC JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xFD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1004 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x1055 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x1033 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x1010 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DE DUP4 DUP4 PUSH2 0x13AD JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DE DUP4 DUP4 PUSH2 0x13C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DE DUP4 DUP4 PUSH2 0x148B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF27 DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x14D5 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x10DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16FE PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x10ED JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x1144 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x182D PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1155 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11DB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1208 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1229 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1259 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x156C JUMP JUMPDEST PUSH2 0x1265 JUMPI POP PUSH1 0x1 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1373 PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x127A PUSH2 0xC85 JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12E1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12C9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x130E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND 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 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1720 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x1572 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x138C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1481 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x13F8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1415 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x1445 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1497 DUP4 DUP4 PUSH2 0x13AD JUMP JUMPDEST PUSH2 0x14CD JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x6E1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x153A JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xF2A JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x154D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0xF2A JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF27 DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x1586 DUP6 PUSH2 0x156C JUMP JUMPDEST PUSH2 0x15D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1615 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x15F6 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1677 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x167C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x168C DUP3 DUP3 DUP7 PUSH2 0x1697 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x16A6 JUMPI POP DUP2 PUSH2 0xF2A JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x16B6 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11DB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C3 JUMP INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76656420717565727920666F72206E6F6E65 PUSH25 0x697374656E7420746F6B656E4552433732313A207472616E73 PUSH7 0x6572206F662074 PUSH16 0x6B656E2074686174206973206E6F7420 PUSH16 0x776E4552433732314D65746164617461 GASPRICE KECCAK256 SSTORE MSTORE 0x49 KECCAK256 PUSH18 0x7565727920666F72206E6F6E657869737465 PUSH15 0x7420746F6B656E4552433732313A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x58221220D43797A8D97872343841831798DEA924 EXTCODESIZE 0x2D 0x1E 0x48 0xC4 DUP11 DUP14 0xB9 0xD3 0xCF DUP8 COINBASE 0xBB 0xAE ISZERO PUSH3 0x64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"563:16527:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:148:42;;;;;;;;;;;;;;;;-1:-1:-1;948:148:42;-1:-1:-1;;;;;;948:148:42;;:::i;:::-;;;;;;;;;;;;;;;;;;4502:98:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7207:217;;;;;;;;;;;;;;;;-1:-1:-1;7207:217:46;;:::i;:::-;;;;-1:-1:-1;;;;;7207:217:46;;;;;;;;;;;;;;6751:395;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6751:395:46;;;;;;;;:::i;:::-;;6245:208;;;:::i;:::-;;;;;;;;;;;;;;;;8071:300;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8071:300:46;;;;;;;;;;;;;;;;;:::i;6014:160::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6014:160:46;;;;;;;;:::i;8437:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8437:149:46;;;;;;;;;;;;;;;;;:::i;6525:169::-;;;;;;;;;;;;;;;;-1:-1:-1;6525:169:46;;:::i;4265:175::-;;;;;;;;;;;;;;;;-1:-1:-1;4265:175:46;;:::i;5840:95::-;;;:::i;3990:218::-;;;;;;;;;;;;;;;;-1:-1:-1;3990:218:46;-1:-1:-1;;;;;3990:218:46;;:::i;4664:102::-;;;:::i;7491:290::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7491:290:46;;;;;;;;;;:::i;8652:282::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8652:282:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8652:282:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8652:282:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8652:282:46;;-1:-1:-1;8652:282:46;;-1:-1:-1;;;;;8652:282:46:i;4832:776::-;;;;;;;;;;;;;;;;-1:-1:-1;4832:776:46;;:::i;7847:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7847:162:46;;;;;;;;;;:::i;948:148:42:-;-1:-1:-1;;;;;;1056:33:42;;1033:4;1056:33;;;;;;;;;;;;;948:148;;;;:::o;4502:98:46:-;4588:5;4581:12;;;;;;;;-1:-1:-1;;4581:12:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4556:13;;4581:12;;4588:5;;4581:12;;4588:5;4581:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4502:98;:::o;7207:217::-;7283:7;7310:16;7318:7;7310;:16::i;:::-;7302:73;;;;-1:-1:-1;;;7302:73:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7393:24:46;;;;:15;:24;;;;;;-1:-1:-1;;;;;7393:24:46;;7207:217::o;6751:395::-;6831:13;6847:23;6862:7;6847:14;:23::i;:::-;6831:39;;6894:5;-1:-1:-1;;;;;6888:11:46;:2;-1:-1:-1;;;;;6888:11:46;;;6880:57;;;;-1:-1:-1;;;6880:57:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6972:5;-1:-1:-1;;;;;6956:21:46;:12;:10;:12::i;:::-;-1:-1:-1;;;;;6956:21:46;;:69;;;;6981:44;7005:5;7012:12;:10;:12::i;:::-;6981:23;:44::i;:::-;6948:159;;;;-1:-1:-1;;;6948:159:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7118:21;7127:2;7131:7;7118:8;:21::i;:::-;6751:395;;;:::o;6245:208::-;6306:7;6425:21;:12;:19;:21::i;:::-;6418:28;;6245:208;:::o;8071:300::-;8230:41;8249:12;:10;:12::i;:::-;8263:7;8230:18;:41::i;:::-;8222:103;;;;-1:-1:-1;;;8222:103:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8336:28;8346:4;8352:2;8356:7;8336:9;:28::i;6014:160::-;-1:-1:-1;;;;;6137:20:46;;6111:7;6137:20;;;:13;:20;;;;;:30;;6161:5;6137:23;:30::i;:::-;6130:37;;6014:160;;;;;:::o;8437:149::-;8540:39;8557:4;8563:2;8567:7;8540:39;;;;;;;;;;;;:16;:39::i;6525:169::-;6600:7;;6641:22;:12;6657:5;6641:15;:22::i;:::-;-1:-1:-1;6619:44:46;6525:169;-1:-1:-1;;;6525:169:46:o;4265:175::-;4337:7;4363:70;4380:7;4363:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;5840:95::-;5920:8;5913:15;;;;;;;;-1:-1:-1;;5913:15:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5888:13;;5913:15;;5920:8;;5913:15;;5920:8;5913:15;;;;;;;;;;;;;;;;;;;;;;;;3990:218;4062:7;-1:-1:-1;;;;;4089:19:46;;4081:74;;;;-1:-1:-1;;;4081:74:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4172:20:46;;;;;;:13;:20;;;;;:29;;:27;:29::i;4664:102::-;4752:7;4745:14;;;;;;;;-1:-1:-1;;4745:14:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:13;;4745:14;;4752:7;;4745:14;;4752:7;4745:14;;;;;;;;;;;;;;;;;;;;;;;;7491:290;7605:12;:10;:12::i;:::-;-1:-1:-1;;;;;7593:24:46;:8;-1:-1:-1;;;;;7593:24:46;;;7585:62;;;;;-1:-1:-1;;;7585:62:46;;;;;;;;;;;;-1:-1:-1;;;7585:62:46;;;;;;;;;;;;;;;7703:8;7658:18;:32;7677:12;:10;:12::i;:::-;-1:-1:-1;;;;;7658:32:46;;;;;;;;;;;;;;;;;-1:-1:-1;7658:32:46;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;7658:53:46;;;;;;;;;;;7741:12;:10;:12::i;:::-;-1:-1:-1;;;;;7726:48:46;;7765:8;7726:48;;;;;;;;;;;;;;;;;;;;7491:290;;:::o;8652:282::-;8783:41;8802:12;:10;:12::i;:::-;8816:7;8783:18;:41::i;:::-;8775:103;;;;-1:-1:-1;;;8775:103:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8888:39;8902:4;8908:2;8912:7;8921:5;8888:13;:39::i;:::-;8652:282;;;;:::o;4832:776::-;4905:13;4938:16;4946:7;4938;:16::i;:::-;4930:76;;;;-1:-1:-1;;;4930:76:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5017:23;5043:19;;;:10;:19;;;;;;;;5017:45;;;;;;;;;;;-1:-1:-1;;5017:45:46;;;;;;;;;;;;;;;;;;;;;;;;;;;5043:19;;5017:45;;;5043:19;5017:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5072:18;5093:9;:7;:9::i;:::-;5072:30;;5181:4;5175:18;5197:1;5175:23;5171:70;;;-1:-1:-1;5221:9:46;-1:-1:-1;5214:16:46;;5171:70;5343:23;;:27;5339:106;;5417:4;5423:9;5400:33;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5400:33:46;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5400:33:46;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5400:33:46;;;;;;;;;;;;;-1:-1:-1;;5400:33:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5386:48;;;;;;5339:106;5575:4;5581:18;:7;:16;:18::i;:::-;5558:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5558:42:46;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5558:42:46;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5558:42:46;;;;;;;;;;;;;-1:-1:-1;;5558:42:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5544:57;;;;4832:776;;;:::o;7847:162::-;-1:-1:-1;;;;;7967:25:46;;;7944:4;7967:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7847:162::o;10368:125::-;10433:4;10456:30;:12;10478:7;10456:21;:30::i;598:104:52:-;685:10;598:104;:::o;16210:189:46:-;16284:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;16284:29:46;-1:-1:-1;;;;;16284:29:46;;;;;;;;:24;;16337:23;16284:24;16337:14;:23::i;:::-;-1:-1:-1;;;;;16328:46:46;;;;;;;;;;;16210:189;;:::o;7812:121:53:-;7881:7;7907:19;7915:3;7907:7;:19::i;10651:351:46:-;10744:4;10768:16;10776:7;10768;:16::i;:::-;10760:73;;;;-1:-1:-1;;;10760:73:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10843:13;10859:23;10874:7;10859:14;:23::i;:::-;10843:39;;10911:5;-1:-1:-1;;;;;10900:16:46;:7;-1:-1:-1;;;;;10900:16:46;;:51;;;;10944:7;-1:-1:-1;;;;;10920:31:46;:20;10932:7;10920:11;:20::i;:::-;-1:-1:-1;;;;;10920:31:46;;10900:51;:94;;;;10955:39;10979:5;10986:7;10955:23;:39::i;:::-;10892:103;10651:351;-1:-1:-1;;;;10651:351:46:o;13692:584::-;13816:4;-1:-1:-1;;;;;13789:31:46;:23;13804:7;13789:14;:23::i;:::-;-1:-1:-1;;;;;13789:31:46;;13781:85;;;;-1:-1:-1;;;13781:85:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13902:16:46;;13894:65;;;;-1:-1:-1;;;13894:65:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13970:39;13991:4;13997:2;14001:7;13970:20;:39::i;:::-;14071:29;14088:1;14092:7;14071:8;:29::i;:::-;-1:-1:-1;;;;;14111:19:46;;;;;;:13;:19;;;;;:35;;14138:7;14111:26;:35::i;:::-;-1:-1:-1;;;;;;14156:17:46;;;;;;:13;:17;;;;;:30;;14178:7;14156:21;:30::i;:::-;-1:-1:-1;14197:29:46;:12;14214:7;14223:2;14197:16;:29::i;:::-;;14261:7;14257:2;-1:-1:-1;;;;;14242:27:46;14251:4;-1:-1:-1;;;;;14242:27:46;;;;;;;;;;;13692:584;;;:::o;9242:135:54:-;9313:7;9347:22;9351:3;9363:5;9347:3;:22::i;8261:233:53:-;8341:7;;;;8400:22;8404:3;8416:5;8400:3;:22::i;:::-;8369:53;;;;-1:-1:-1;8261:233:53;-1:-1:-1;;;;;8261:233:53:o;9514:211::-;9621:7;9671:44;9676:3;9696;9702:12;9671:4;:44::i;:::-;9663:53;-1:-1:-1;9514:211:53;;;;;;:::o;9796:269:46:-;9909:28;9919:4;9925:2;9929:7;9909:9;:28::i;:::-;9955:48;9978:4;9984:2;9988:7;9997:5;9955:22;:48::i;:::-;9947:111;;;;-1:-1:-1;;;9947:111:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:725:55;258:13;475:10;471:51;;-1:-1:-1;501:10:55;;;;;;;;;;;;-1:-1:-1;;;501:10:55;;;;;;471:51;546:5;531:12;585:75;592:9;;585:75;;617:8;;647:2;639:10;;;;585:75;;;669:19;701:6;691:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;691:17:55;-1:-1:-1;761:5:55;;-1:-1:-1;669:39:55;-1:-1:-1;;;734:10:55;;776:114;783:9;;776:114;;851:2;844:4;:9;839:2;:14;826:29;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:47;-1:-1:-1;;;;;808:47:55;;;;;;;;-1:-1:-1;877:2:55;869:10;;;;776:114;;;-1:-1:-1;913:6:55;202:725;-1:-1:-1;;;;202:725:55:o;7580:149:53:-;7664:4;7687:35;7697:3;7717;7687:9;:35::i;4483:108::-;4565:19;;4483:108::o;8357:135:54:-;8427:4;8450:35;8458:3;8478:5;8450:7;:35::i;8060:129::-;8127:4;8150:32;8155:3;8175:5;8150:4;:32::i;7019:183:53:-;7108:4;7131:64;7136:3;7156;-1:-1:-1;;;;;7170:23:53;;7131:4;:64::i;4444:201:54:-;4538:18;;4511:7;;4538:26;-1:-1:-1;4530:73:54;;;;-1:-1:-1;;;4530:73:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4620:3;:11;;4632:5;4620:18;;;;;;;;;;;;;;;;4613:25;;4444:201;;;;:::o;4934:274:53:-;5037:19;;5001:7;;;;5037:27;-1:-1:-1;5029:74:53;;;;-1:-1:-1;;;5029:74:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;6395:315::-;6489:7;6527:17;;;:12;;;:17;;;;;;6577:12;6562:13;6554:36;;;;-1:-1:-1;;;6554:36:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6643:3;:12;;6667:1;6656:8;:12;6643:26;;;;;;;;;;;;;;;;;;:33;;;6636:40;;;6395:315;;;;;:::o;15509:589:46:-;15629:4;15654:15;:2;-1:-1:-1;;;;;15654:13:46;;:15::i;:::-;15649:58;;-1:-1:-1;15692:4:46;15685:11;;15649:58;15716:23;15742:246;-1:-1:-1;;;15853:12:46;:10;:12::i;:::-;15879:4;15897:7;15918:5;15758:175;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;;-1:-1:-1;;;;;15758:175:46;;;;;;;;;;;15742:246;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15742:15:46;;;:246;:15;:246::i;:::-;15716:272;;15998:13;16025:10;16014:32;;;;;;;;;;;;;;;-1:-1:-1;16014:32:46;-1:-1:-1;;;;;;16064:26:46;-1:-1:-1;;;16064:26:46;;-1:-1:-1;;;15509:589:46;;;;;;:::o;4270:123:53:-;4341:4;4364:17;;;:12;;;;;:17;;;;;;:22;;;4270:123::o;2204:1512:54:-;2270:4;2407:19;;;:12;;;:19;;;;;;2441:15;;2437:1273;;2870:18;;-1:-1:-1;;2822:14:54;;;;2870:22;;;;2798:21;;2870:3;;:22;;3152;;;;;;;;;;;;;;3132:42;;3295:9;3266:3;:11;;3278:13;3266:26;;;;;;;;;;;;;;;;;;;:38;;;;3370:23;;;3412:1;3370:12;;;:23;;;;;;3396:17;;;3370:43;;3519:17;;3370:3;;3519:17;;;;;;;;;;;;;;;;;;;;;;3611:3;:12;;:19;3624:5;3611:19;;;;;;;;;;;3604:26;;;3652:4;3645:11;;;;;;;;2437:1273;3694:5;3687:12;;;;;1632:404;1695:4;1716:21;1726:3;1731:5;1716:9;:21::i;:::-;1711:319;;-1:-1:-1;1753:23:54;;;;;;;;:11;:23;;;;;;;;;;;;;1933:18;;1911:19;;;:12;;;:19;;;;;;:40;;;;1965:11;;1711:319;-1:-1:-1;2014:5:54;2007:12;;1828:678:53;1904:4;2037:17;;;:12;;;:17;;;;;;2069:13;2065:435;;-1:-1:-1;;2153:38:53;;;;;;;;;;;;;;;;;;2135:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;2347:19;;2327:17;;;:12;;;:17;;;;;;;:39;2380:11;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;;;718:413:51;1078:20;1116:8;;;718:413::o;3573:193::-;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3676;4850:18;4861:6;4850:10;:18::i;:::-;4842:60;;;;;-1:-1:-1;;;4842:60:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:12;4987:23;5014:6;-1:-1:-1;;;;;5014:11:51;5034:5;5042:4;5014:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5014:33:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:51:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:51;7249:17;;7222:580;7367:17;;:21;7363:429;;7625:10;7619:17;7685:15;7672:10;7668:2;7664:19;7657:44;7574:145;7757:20;;-1:-1:-1;;;7757:20:51;;;;;;;;;;;;;;;;;7764:12;;7757:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"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\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"see https://eips.ethereum.org/EIPS/eip-721\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"title\":\"ERC721 Non-Fungible Token Standard basic implementation\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"openzeppelin-contracts-solc-0.7/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"openzeppelin-contracts-solc-0.7/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"openzeppelin-contracts-solc-0.7/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol":{"IERC721Enumerable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol":{"IERC721Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200c00156267132061fdf41f1079aefb0bc8ded4facf6ac7ed4617974d93170b5c64736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC STOP ISZERO PUSH3 0x671320 PUSH2 0xFDF4 0x1F LT PUSH26 0xAEFB0BC8DED4FACF6AC7ED4617974D93170B5C64736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"126:7684:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200c00156267132061fdf41f1079aefb0bc8ded4facf6ac7ed4617974d93170b5c64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC STOP ISZERO PUSH3 0x671320 PUSH2 0xFDF4 0x1F LT PUSH26 0xAEFB0BC8DED4FACF6AC7ED4617974D93170B5C64736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"126:7684:51:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/utils/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol":{"EnumerableMap":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201b31d2d6e72924faae97c3422f1a9d5ac4b52476dff01753e3e3ba6eafe03dad64736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL BALANCE 0xD2 0xD6 0xE7 0x29 0x24 STATICCALL 0xAE SWAP8 0xC3 TIMESTAMP 0x2F BYTE SWAP14 GAS 0xC4 0xB5 0x24 PUSH23 0xDFF01753E3E3BA6EAFE03DAD64736F6C63430007060033 ","sourceMap":"764:8963:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201b31d2d6e72924faae97c3422f1a9d5ac4b52476dff01753e3e3ba6eafe03dad64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL BALANCE 0xD2 0xD6 0xE7 0x29 0x24 STATICCALL 0xAE SWAP8 0xC3 TIMESTAMP 0x2F BYTE SWAP14 GAS 0xC4 0xB5 0x24 PUSH23 0xDFF01753E3E3BA6EAFE03DAD64736F6C63430007060033 ","sourceMap":"764:8963:53:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing an enumerable variant of Solidity's https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] type. Maps have the following properties: - Entries are added, removed, and checked for existence in constant time (O(1)). - Entries are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableMap for EnumerableMap.UintToAddressMap;     // Declare a set state variable     EnumerableMap.UintToAddressMap private myMap; } ``` As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol\":\"EnumerableMap\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122087fe30daaca722441f746cfb0b6fd11274cf732e18a04ab95da61dca9d146a8a64736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP8 INVALID ADDRESS 0xDA 0xAC 0xA7 0x22 DIFFICULTY 0x1F PUSH21 0x6CFB0B6FD11274CF732E18A04AB95DA61DCA9D146A DUP11 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"745:8634:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122087fe30daaca722441f746cfb0b6fd11274cf732e18a04ab95da61dca9d146a8a64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP8 INVALID ADDRESS 0xDA 0xAC 0xA7 0x22 DIFFICULTY 0x1F PUSH21 0x6CFB0B6FD11274CF732E18A04AB95DA61DCA9D146A DUP11 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"745:8634:54:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/utils/Strings.sol":{"Strings":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a36289ce93ef0f3bfb05573265074c81ef8d98fd29d0711be530906fc27cca264736f6c63430007060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH11 0x36289CE93EF0F3BFB05573 0x26 POP PUSH21 0xC81EF8D98FD29D0711BE530906FC27CCA264736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"93:836:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a36289ce93ef0f3bfb05573265074c81ef8d98fd29d0711be530906fc27cca264736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH11 0x36289CE93EF0F3BFB05573 0x26 POP PUSH21 0xC81EF8D98FD29D0711BE530906FC27CCA264736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"93:836:55:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}}}}}