{"id":"61213caa4d8ca425160f2d65fe387bc6","_format":"hh-sol-build-info-1","solcVersion":"0.7.6","solcLongVersion":"0.7.6+commit.7338295f","input":{"language":"Solidity","sources":{"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IAstraCLPoolActions#mint\n/// @notice Any contract that calls IAstraCLPoolActions#mint must implement this interface\ninterface IAstraCLMintCallback {\n    /// @notice Called to `msg.sender` after minting liquidity to a position from IAstraCLPool#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 AstraCLPool deployed by the canonical AstraCLFactory.\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 IAstraCLPoolActions#mint call\n    function astraCLMintCallback(uint256 amount0Owed, uint256 amount1Owed, bytes calldata data) external;\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title The interface for the Astra CL Factory\n/// @notice The Astra CL Factory facilitates creation of Astra CL pools and control over the protocol fees\ninterface IAstraCLFactory {\n    /// @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\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\n\n    /// @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\n    event PoolCreated(\n        address indexed token0,\n        address indexed token1,\n        uint24 indexed fee,\n        int24 tickSpacing,\n        address pool\n    );\n\n    /// @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\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\n\n    /// @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\n    function owner() external view returns (address);\n\n    /// @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\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\n\n    /// @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\n    function getPool(address tokenA, address tokenB, uint24 fee) external view returns (address pool);\n\n    /// @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\n    function createPool(address tokenA, address tokenB, uint24 fee) external returns (address pool);\n\n    /// @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\n    function setOwner(address _owner) external;\n\n    /// @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\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nimport {IAstraCLPoolActions} from './pool/IAstraCLPoolActions.sol';\nimport {IAstraCLPoolDerivedState} from './pool/IAstraCLPoolDerivedState.sol';\nimport {IAstraCLPoolEvents} from './pool/IAstraCLPoolEvents.sol';\nimport {IAstraCLPoolImmutables} from './pool/IAstraCLPoolImmutables.sol';\nimport {IAstraCLPoolOwnerActions} from './pool/IAstraCLPoolOwnerActions.sol';\nimport {IAstraCLPoolState} from './pool/IAstraCLPoolState.sol';\n\n/// @title The interface for a Astra CL Pool\n/// @notice An Astra 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\ninterface IAstraCLPool is\n    IAstraCLPoolImmutables,\n    IAstraCLPoolState,\n    IAstraCLPoolDerivedState,\n    IAstraCLPoolActions,\n    IAstraCLPoolOwnerActions,\n    IAstraCLPoolEvents\n{}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Permissionless pool actions\n/// @notice Contains pool methods that can be called by anyone\ninterface IAstraCLPoolActions {\n    /// @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\n    function initialize(uint160 sqrtPriceX96) external;\n\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\n    /// @dev The caller of this method receives a callback in the form of IAstraCLMintCallback.sol#astraCLMintCallback\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\n    function mint(\n        address recipient,\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount,\n        bytes calldata data\n    ) external returns (uint256 amount0, uint256 amount1);\n\n    /// @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\n    function collect(\n        address recipient,\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount0Requested,\n        uint128 amount1Requested\n    ) external returns (uint128 amount0, uint128 amount1);\n\n    /// @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\n    function burn(int24 tickLower, int24 tickUpper, uint128 amount) external returns (uint256 amount0, uint256 amount1);\n\n    /// @notice Swap token0 for token1, or token1 for token0\n    /// @dev The caller of this method receives a callback in the form of IAstraCLSwapCallback.sol#astraCLSwapCallback\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\n    function swap(\n        address recipient,\n        bool zeroForOne,\n        int256 amountSpecified,\n        uint160 sqrtPriceLimitX96,\n        bytes calldata data\n    ) external returns (int256 amount0, int256 amount1);\n\n    /// @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 IAstraCLFlashCallback.sol#astraCLFlashCallback\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\n    function flash(address recipient, uint256 amount0, uint256 amount1, bytes calldata data) external;\n\n    /// @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\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @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.\ninterface IAstraCLPoolDerivedState {\n    /// @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\n    function observe(\n        uint32[] calldata secondsAgos\n    ) external view returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\n\n    /// @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\n    function snapshotCumulativesInside(\n        int24 tickLower,\n        int24 tickUpper\n    ) external view returns (int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Events emitted by a pool\n/// @notice Contains all events emitted by the pool\ninterface IAstraCLPoolEvents {\n    /// @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\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\n\n    /// @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\n    event Mint(\n        address sender,\n        address indexed owner,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount,\n        uint256 amount0,\n        uint256 amount1\n    );\n\n    /// @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\n    event Collect(\n        address indexed owner,\n        address recipient,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount0,\n        uint128 amount1\n    );\n\n    /// @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\n    event Burn(\n        address indexed owner,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount,\n        uint256 amount0,\n        uint256 amount1\n    );\n\n    /// @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\n    event Swap(\n        address indexed sender,\n        address indexed recipient,\n        int256 amount0,\n        int256 amount1,\n        uint160 sqrtPriceX96,\n        uint128 liquidity,\n        int24 tick\n    );\n\n    /// @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\n    event Flash(\n        address indexed sender,\n        address indexed recipient,\n        uint256 amount0,\n        uint256 amount1,\n        uint256 paid0,\n        uint256 paid1\n    );\n\n    /// @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\n    event IncreaseObservationCardinalityNext(\n        uint16 observationCardinalityNextOld,\n        uint16 observationCardinalityNextNew\n    );\n\n    /// @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\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\n\n    /// @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\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @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\ninterface IAstraCLPoolImmutables {\n    /// @notice The contract that deployed the pool, which must adhere to the IAstraCLFactory interface\n    /// @return The contract address\n    function factory() external view returns (address);\n\n    /// @notice The first of the two tokens of the pool, sorted by address\n    /// @return The token contract address\n    function token0() external view returns (address);\n\n    /// @notice The second of the two tokens of the pool, sorted by address\n    /// @return The token contract address\n    function token1() external view returns (address);\n\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\n    /// @return The fee\n    function fee() external view returns (uint24);\n\n    /// @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\n    function tickSpacing() external view returns (int24);\n\n    /// @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\n    function maxLiquidityPerTick() external view returns (uint128);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Permissioned pool actions\n/// @notice Contains pool methods that may only be called by the factory owner\ninterface IAstraCLPoolOwnerActions {\n    /// @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\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\n\n    /// @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\n    function collectProtocol(\n        address recipient,\n        uint128 amount0Requested,\n        uint128 amount1Requested\n    ) external returns (uint128 amount0, uint128 amount1);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @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\ninterface IAstraCLPoolState {\n    /// @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\n    function slot0()\n        external\n        view\n        returns (\n            uint160 sqrtPriceX96,\n            int24 tick,\n            uint16 observationIndex,\n            uint16 observationCardinality,\n            uint16 observationCardinalityNext,\n            uint8 feeProtocol,\n            bool unlocked\n        );\n\n    /// @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\n    function feeGrowthGlobal0X128() external view returns (uint256);\n\n    /// @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\n    function feeGrowthGlobal1X128() external view returns (uint256);\n\n    /// @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\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\n\n    /// @notice The currently in range liquidity available to the pool\n    /// @dev This value has no relationship to the total liquidity across all ticks\n    function liquidity() external view returns (uint128);\n\n    /// @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.\n    function ticks(\n        int24 tick\n    )\n        external\n        view\n        returns (\n            uint128 liquidityGross,\n            int128 liquidityNet,\n            uint256 feeGrowthOutside0X128,\n            uint256 feeGrowthOutside1X128,\n            int56 tickCumulativeOutside,\n            uint160 secondsPerLiquidityOutsideX128,\n            uint32 secondsOutside,\n            bool initialized\n        );\n\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\n\n    /// @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\n    function positions(\n        bytes32 key\n    )\n        external\n        view\n        returns (\n            uint128 _liquidity,\n            uint256 feeGrowthInside0LastX128,\n            uint256 feeGrowthInside1LastX128,\n            uint128 tokensOwed0,\n            uint128 tokensOwed1\n        );\n\n    /// @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    function observations(\n        uint256 index\n    )\n        external\n        view\n        returns (\n            uint32 blockTimestamp,\n            int56 tickCumulative,\n            uint160 secondsPerLiquidityCumulativeX128,\n            bool initialized\n        );\n}\n"},"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.4.0;\n\n/// @title FixedPoint128\n/// @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\nlibrary FixedPoint128 {\n    uint256 internal constant Q128 = 0x100000000000000000000000000000000;\n}\n"},"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.4.0;\n\n/// @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\nlibrary FixedPoint96 {\n    uint8 internal constant RESOLUTION = 96;\n    uint256 internal constant Q96 = 0x1000000000000000000000000;\n}\n"},"@airdao/astra-cl-core/contracts/libraries/FullMath.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity >=0.4.0 <0.8.0;\n\n/// @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\nlibrary FullMath {\n    /// @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\n    function mulDiv(uint256 a, uint256 b, uint256 denominator) internal pure returns (uint256 result) {\n        // 512-bit multiply [prod1 prod0] = a * b\n        // Compute the product mod 2**256 and mod 2**256 - 1\n        // then use the Chinese Remainder Theorem to reconstruct\n        // the 512 bit result. The result is stored in two 256\n        // variables such that product = prod1 * 2**256 + prod0\n        uint256 prod0; // Least significant 256 bits of the product\n        uint256 prod1; // Most significant 256 bits of the product\n        assembly {\n            let mm := mulmod(a, b, not(0))\n            prod0 := mul(a, b)\n            prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n        }\n\n        // Handle non-overflow cases, 256 by 256 division\n        if (prod1 == 0) {\n            require(denominator > 0);\n            assembly {\n                result := div(prod0, denominator)\n            }\n            return result;\n        }\n\n        // Make sure the result is less than 2**256.\n        // Also prevents denominator == 0\n        require(denominator > prod1);\n\n        ///////////////////////////////////////////////\n        // 512 by 256 division.\n        ///////////////////////////////////////////////\n\n        // Make division exact by subtracting the remainder from [prod1 prod0]\n        // Compute remainder using mulmod\n        uint256 remainder;\n        assembly {\n            remainder := mulmod(a, b, denominator)\n        }\n        // Subtract 256 bit number from 512 bit number\n        assembly {\n            prod1 := sub(prod1, gt(remainder, prod0))\n            prod0 := sub(prod0, remainder)\n        }\n\n        // Factor powers of two out of denominator\n        // Compute largest power of two divisor of denominator.\n        // Always >= 1.\n        uint256 twos = -denominator & denominator;\n        // Divide denominator by power of two\n        assembly {\n            denominator := div(denominator, twos)\n        }\n\n        // Divide [prod1 prod0] by the factors of two\n        assembly {\n            prod0 := div(prod0, twos)\n        }\n        // Shift in bits from prod1 into prod0. For this we need\n        // to flip `twos` such that it is 2**256 / twos.\n        // If twos is zero, then it becomes one\n        assembly {\n            twos := add(div(sub(0, twos), twos), 1)\n        }\n        prod0 |= prod1 * twos;\n\n        // Invert denominator mod 2**256\n        // Now that denominator is an odd number, it has an inverse\n        // modulo 2**256 such that denominator * inv = 1 mod 2**256.\n        // Compute the inverse by starting with a seed that is correct\n        // correct for four bits. That is, denominator * inv = 1 mod 2**4\n        uint256 inv = (3 * denominator) ^ 2;\n        // Now use Newton-Raphson iteration to improve the precision.\n        // Thanks to Hensel's lifting lemma, this also works in modular\n        // arithmetic, doubling the correct bits in each step.\n        inv *= 2 - denominator * inv; // inverse mod 2**8\n        inv *= 2 - denominator * inv; // inverse mod 2**16\n        inv *= 2 - denominator * inv; // inverse mod 2**32\n        inv *= 2 - denominator * inv; // inverse mod 2**64\n        inv *= 2 - denominator * inv; // inverse mod 2**128\n        inv *= 2 - denominator * inv; // inverse mod 2**256\n\n        // Because the division is now exact we can divide by multiplying\n        // with the modular inverse of denominator. This will give us the\n        // correct result modulo 2**256. Since the precoditions guarantee\n        // that the outcome is less than 2**256, this is the final result.\n        // We don't need to compute the high bits of the result and prod1\n        // is no longer required.\n        result = prod0 * inv;\n        return result;\n    }\n\n    /// @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\n    function mulDivRoundingUp(uint256 a, uint256 b, uint256 denominator) internal pure returns (uint256 result) {\n        result = mulDiv(a, b, denominator);\n        if (mulmod(a, b, denominator) > 0) {\n            require(result < type(uint256).max);\n            result++;\n        }\n    }\n}\n"},"@airdao/astra-cl-core/contracts/libraries/TickMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0 <0.8.0;\n\n/// @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\nlibrary TickMath {\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128\n    int24 internal constant MIN_TICK = -887272;\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128\n    int24 internal constant MAX_TICK = -MIN_TICK;\n\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\n\n    /// @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\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\n        require(absTick <= uint256(MAX_TICK), 'T');\n\n        uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\n        if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\n        if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\n        if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\n        if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\n        if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\n        if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\n        if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\n        if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\n        if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\n        if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\n        if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\n        if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\n        if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\n        if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\n        if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\n        if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\n        if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\n        if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\n        if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\n\n        if (tick > 0) ratio = type(uint256).max / ratio;\n\n        // this divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\n        // we then downcast because we know the result always fits within 160 bits due to our tick input constraint\n        // we round up in the division so getTickAtSqrtRatio of the output price is always consistent\n        sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\n    }\n\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n    /// ever return.\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\n        // second inequality must be < because the price can never reach the price at the max tick\n        require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R');\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\n\n        uint256 r = ratio;\n        uint256 msb = 0;\n\n        assembly {\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(5, gt(r, 0xFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(4, gt(r, 0xFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(3, gt(r, 0xFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(2, gt(r, 0xF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(1, gt(r, 0x3))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := gt(r, 0x1)\n            msb := or(msb, f)\n        }\n\n        if (msb >= 128) r = ratio >> (msb - 127);\n        else r = ratio << (127 - msb);\n\n        int256 log_2 = (int256(msb) - 128) << 64;\n\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(63, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(62, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(61, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(60, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(59, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(58, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(57, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(56, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(55, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(54, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(53, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(52, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(51, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(50, f))\n        }\n\n        int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number\n\n        int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\n        int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\n\n        tick = tickLow == tickHi\n            ? tickLow\n            : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96\n                ? tickHi\n                : tickLow;\n    }\n}\n"},"@openzeppelin/contracts/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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"},"contracts/base/BlockTimestamp.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\n/// @title Function for getting block timestamp\n/// @dev Base contract that is overridden for tests\nabstract contract BlockTimestamp {\n    /// @dev Method that exists purely to be overridden for tests\n    /// @return The current block timestamp\n    function _blockTimestamp() internal view virtual returns (uint256) {\n        return block.timestamp;\n    }\n}\n"},"contracts/base/ERC721Permit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\nimport '@openzeppelin/contracts/token/ERC721/ERC721.sol';\nimport '@openzeppelin/contracts/utils/Address.sol';\n\nimport '../libraries/ChainId.sol';\nimport '../interfaces/external/IERC1271.sol';\nimport '../interfaces/IERC721Permit.sol';\nimport './BlockTimestamp.sol';\n\n/// @title ERC721 with permit\n/// @notice Nonfungible tokens that support an approve via signature, i.e. permit\nabstract contract ERC721Permit is BlockTimestamp, ERC721, IERC721Permit {\n    /// @dev Gets the current nonce for a token ID and then increments it, returning the original value\n    function _getAndIncrementNonce(uint256 tokenId) internal virtual returns (uint256);\n\n    /// @dev The hash of the name used in the permit signature verification\n    bytes32 private immutable nameHash;\n\n    /// @dev The hash of the version string used in the permit signature verification\n    bytes32 private immutable versionHash;\n\n    /// @notice Computes the nameHash and versionHash\n    constructor(string memory name_, string memory symbol_, string memory version_) ERC721(name_, symbol_) {\n        nameHash = keccak256(bytes(name_));\n        versionHash = keccak256(bytes(version_));\n    }\n\n    /// @inheritdoc IERC721Permit\n    function DOMAIN_SEPARATOR() public view override returns (bytes32) {\n        return\n            keccak256(\n                abi.encode(\n                    // keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)')\n                    0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f,\n                    nameHash,\n                    versionHash,\n                    ChainId.get(),\n                    address(this)\n                )\n            );\n    }\n\n    /// @inheritdoc IERC721Permit\n    /// @dev Value is equal to keccak256(\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\");\n    bytes32 public constant override PERMIT_TYPEHASH =\n        0x49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad;\n\n    /// @inheritdoc IERC721Permit\n    function permit(\n        address spender,\n        uint256 tokenId,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable override {\n        require(_blockTimestamp() <= deadline, 'Permit expired');\n\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                '\\x19\\x01',\n                DOMAIN_SEPARATOR(),\n                keccak256(abi.encode(PERMIT_TYPEHASH, spender, tokenId, _getAndIncrementNonce(tokenId), deadline))\n            )\n        );\n        address owner = ownerOf(tokenId);\n        require(spender != owner, 'ERC721Permit: approval to current owner');\n\n        if (Address.isContract(owner)) {\n            require(IERC1271(owner).isValidSignature(digest, abi.encodePacked(r, s, v)) == 0x1626ba7e, 'Unauthorized');\n        } else {\n            address recoveredAddress = ecrecover(digest, v, r, s);\n            require(recoveredAddress != address(0), 'Invalid signature');\n            require(recoveredAddress == owner, 'Unauthorized');\n        }\n\n        _approve(spender, tokenId);\n    }\n}\n"},"contracts/base/LiquidityManagement.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/TickMath.sol';\n\nimport '../libraries/PoolAddress.sol';\nimport '../libraries/CallbackValidation.sol';\nimport '../libraries/LiquidityAmounts.sol';\n\nimport './PeripheryPayments.sol';\nimport './PeripheryImmutableState.sol';\n\n/// @title Liquidity management functions\n/// @notice Internal functions for safely managing liquidity in AstraDEX CL\nabstract contract LiquidityManagement is IAstraCLMintCallback, PeripheryImmutableState, PeripheryPayments {\n    struct MintCallbackData {\n        PoolAddress.PoolKey poolKey;\n        address payer;\n    }\n\n    /// @inheritdoc IAstraCLMintCallback\n    function astraCLMintCallback(uint256 amount0Owed, uint256 amount1Owed, bytes calldata data) external override {\n        MintCallbackData memory decoded = abi.decode(data, (MintCallbackData));\n        CallbackValidation.verifyCallback(factory, decoded.poolKey);\n\n        if (amount0Owed > 0) pay(decoded.poolKey.token0, decoded.payer, msg.sender, amount0Owed);\n        if (amount1Owed > 0) pay(decoded.poolKey.token1, decoded.payer, msg.sender, amount1Owed);\n    }\n\n    struct AddLiquidityParams {\n        address token0;\n        address token1;\n        uint24 fee;\n        address recipient;\n        int24 tickLower;\n        int24 tickUpper;\n        uint256 amount0Desired;\n        uint256 amount1Desired;\n        uint256 amount0Min;\n        uint256 amount1Min;\n    }\n\n    /// @notice Add liquidity to an initialized pool\n    function addLiquidity(\n        AddLiquidityParams memory params\n    ) internal returns (uint128 liquidity, uint256 amount0, uint256 amount1, IAstraCLPool pool) {\n        PoolAddress.PoolKey memory poolKey = PoolAddress.PoolKey({\n            token0: params.token0,\n            token1: params.token1,\n            fee: params.fee\n        });\n\n        pool = IAstraCLPool(PoolAddress.computeAddress(factory, poolKey));\n\n        // compute the liquidity amount\n        {\n            (uint160 sqrtPriceX96, , , , , , ) = pool.slot0();\n            uint160 sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(params.tickLower);\n            uint160 sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(params.tickUpper);\n\n            liquidity = LiquidityAmounts.getLiquidityForAmounts(\n                sqrtPriceX96,\n                sqrtRatioAX96,\n                sqrtRatioBX96,\n                params.amount0Desired,\n                params.amount1Desired\n            );\n        }\n\n        (amount0, amount1) = pool.mint(\n            params.recipient,\n            params.tickLower,\n            params.tickUpper,\n            liquidity,\n            abi.encode(MintCallbackData({poolKey: poolKey, payer: msg.sender}))\n        );\n\n        require(amount0 >= params.amount0Min && amount1 >= params.amount1Min, 'Price slippage check');\n    }\n}\n"},"contracts/base/Multicall.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\npragma abicoder v2;\n\nimport '../interfaces/IMulticall.sol';\n\n/// @title Multicall\n/// @notice Enables calling multiple methods in a single call to the contract\nabstract contract Multicall is IMulticall {\n    /// @inheritdoc IMulticall\n    function multicall(bytes[] calldata data) public payable override returns (bytes[] memory results) {\n        results = new bytes[](data.length);\n        for (uint256 i = 0; i < data.length; i++) {\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\n\n            if (!success) {\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\n                if (result.length < 68) revert();\n                assembly {\n                    result := add(result, 0x04)\n                }\n                revert(abi.decode(result, (string)));\n            }\n\n            results[i] = result;\n        }\n    }\n}\n"},"contracts/base/PeripheryImmutableState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\nimport '../interfaces/IPeripheryImmutableState.sol';\n\n/// @title Immutable state\n/// @notice Immutable state used by periphery contracts\nabstract contract PeripheryImmutableState is IPeripheryImmutableState {\n    /// @inheritdoc IPeripheryImmutableState\n    address public immutable override factory;\n    /// @inheritdoc IPeripheryImmutableState\n    address public immutable override SAMB;\n\n    constructor(address _factory, address _SAMB) {\n        factory = _factory;\n        SAMB = _SAMB;\n    }\n}\n"},"contracts/base/PeripheryPayments.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n\nimport '../interfaces/IPeripheryPayments.sol';\nimport '../interfaces/external/ISAMB.sol';\n\nimport '../libraries/TransferHelper.sol';\n\nimport './PeripheryImmutableState.sol';\n\nabstract contract PeripheryPayments is IPeripheryPayments, PeripheryImmutableState {\n    receive() external payable {\n        require(msg.sender == SAMB, 'Not SAMB');\n    }\n\n    /// @inheritdoc IPeripheryPayments\n    function unwrapSAMB(uint256 amountMinimum, address recipient) public payable override {\n        uint256 balanceSAMB = ISAMB(SAMB).balanceOf(address(this));\n        require(balanceSAMB >= amountMinimum, 'Insufficient SAMB');\n\n        if (balanceSAMB > 0) {\n            ISAMB(SAMB).withdraw(balanceSAMB);\n            TransferHelper.safeTransferAMB(recipient, balanceSAMB);\n        }\n    }\n\n    /// @inheritdoc IPeripheryPayments\n    function sweepToken(address token, uint256 amountMinimum, address recipient) public payable override {\n        uint256 balanceToken = IERC20(token).balanceOf(address(this));\n        require(balanceToken >= amountMinimum, 'Insufficient token');\n\n        if (balanceToken > 0) {\n            TransferHelper.safeTransfer(token, recipient, balanceToken);\n        }\n    }\n\n    /// @inheritdoc IPeripheryPayments\n    function refundAMB() external payable override {\n        if (address(this).balance > 0) TransferHelper.safeTransferAMB(msg.sender, address(this).balance);\n    }\n\n    /// @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\n    function pay(address token, address payer, address recipient, uint256 value) internal {\n        if (token == SAMB && address(this).balance >= value) {\n            // pay with SAMB\n            ISAMB(SAMB).deposit{value: value}(); // wrap only what is needed to pay\n            ISAMB(SAMB).transfer(recipient, value);\n        } else if (payer == address(this)) {\n            // pay with tokens already in the contract (for the exact input multihop case)\n            TransferHelper.safeTransfer(token, recipient, value);\n        } else {\n            // pull payment\n            TransferHelper.safeTransferFrom(token, payer, recipient, value);\n        }\n    }\n}\n"},"contracts/base/PeripheryValidation.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\nimport './BlockTimestamp.sol';\n\nabstract contract PeripheryValidation is BlockTimestamp {\n    modifier checkDeadline(uint256 deadline) {\n        require(_blockTimestamp() <= deadline, 'Transaction too old');\n        _;\n    }\n}\n"},"contracts/base/PoolInitializer.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n\nimport './PeripheryImmutableState.sol';\nimport '../interfaces/IPoolInitializer.sol';\n\n/// @title Creates and initializes CL Pools\nabstract contract PoolInitializer is IPoolInitializer, PeripheryImmutableState {\n    /// @inheritdoc IPoolInitializer\n    function createAndInitializePoolIfNecessary(\n        address token0,\n        address token1,\n        uint24 fee,\n        uint160 sqrtPriceX96\n    ) external payable override returns (address pool) {\n        require(token0 < token1);\n        pool = IAstraCLFactory(factory).getPool(token0, token1, fee);\n\n        if (pool == address(0)) {\n            pool = IAstraCLFactory(factory).createPool(token0, token1, fee);\n            IAstraCLPool(pool).initialize(sqrtPriceX96);\n        } else {\n            (uint160 sqrtPriceX96Existing, , , , , , ) = IAstraCLPool(pool).slot0();\n            if (sqrtPriceX96Existing == 0) {\n                IAstraCLPool(pool).initialize(sqrtPriceX96);\n            }\n        }\n    }\n}\n"},"contracts/base/SelfPermit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\nimport '@openzeppelin/contracts/drafts/IERC20Permit.sol';\n\nimport '../interfaces/ISelfPermit.sol';\nimport '../interfaces/external/IERC20PermitAllowed.sol';\n\n/// @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.\nabstract contract SelfPermit is ISelfPermit {\n    /// @inheritdoc ISelfPermit\n    function selfPermit(\n        address token,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) public payable override {\n        IERC20Permit(token).permit(msg.sender, address(this), value, deadline, v, r, s);\n    }\n\n    /// @inheritdoc ISelfPermit\n    function selfPermitIfNecessary(\n        address token,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable override {\n        if (IERC20(token).allowance(msg.sender, address(this)) < value) selfPermit(token, value, deadline, v, r, s);\n    }\n\n    /// @inheritdoc ISelfPermit\n    function selfPermitAllowed(\n        address token,\n        uint256 nonce,\n        uint256 expiry,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) public payable override {\n        IERC20PermitAllowed(token).permit(msg.sender, address(this), nonce, expiry, true, v, r, s);\n    }\n\n    /// @inheritdoc ISelfPermit\n    function selfPermitAllowedIfNecessary(\n        address token,\n        uint256 nonce,\n        uint256 expiry,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable override {\n        if (IERC20(token).allowance(msg.sender, address(this)) < type(uint256).max)\n            selfPermitAllowed(token, nonce, expiry, v, r, s);\n    }\n}\n"},"contracts/interfaces/external/IERC1271.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @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\ninterface IERC1271 {\n    /// @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\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"contracts/interfaces/external/IERC20PermitAllowed.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Interface for permit\n/// @notice Interface used by DAI/CHAI for permit\ninterface IERC20PermitAllowed {\n    /// @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`\n    function permit(\n        address holder,\n        address spender,\n        uint256 nonce,\n        uint256 expiry,\n        bool allowed,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external;\n}\n"},"contracts/interfaces/external/ISAMB.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n\n/// @title Interface for SAMB\ninterface ISAMB is IERC20 {\n    /// @notice Deposit ether to get wrapped ether\n    function deposit() external payable;\n\n    /// @notice Withdraw wrapped ether to get ether\n    function withdraw(uint256) external;\n}\n"},"contracts/interfaces/IERC721Permit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\n\nimport '@openzeppelin/contracts/token/ERC721/IERC721.sol';\n\n/// @title ERC721 with permit\n/// @notice Extension to ERC721 that includes a permit function for signature based approvals\ninterface IERC721Permit is IERC721 {\n    /// @notice The permit typehash used in the permit signature\n    /// @return The typehash for the permit\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\n\n    /// @notice The domain separator used in the permit signature\n    /// @return The domain seperator used in encoding of permit signature\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n\n    /// @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`\n    function permit(address spender, uint256 tokenId, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external payable;\n}\n"},"contracts/interfaces/IMulticall.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\n/// @title Multicall interface\n/// @notice Enables calling multiple methods in a single call to the contract\ninterface IMulticall {\n    /// @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\n    function multicall(bytes[] calldata data) external payable returns (bytes[] memory results);\n}\n"},"contracts/interfaces/INonfungiblePositionManager.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\nimport '@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol';\nimport '@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol';\n\nimport './IPoolInitializer.sol';\nimport './IERC721Permit.sol';\nimport './IPeripheryPayments.sol';\nimport './IPeripheryImmutableState.sol';\n\n/// @title Non-fungible token for positions\n/// @notice Wraps AstraDEX CL positions in a non-fungible token interface which allows for them to be transferred\n/// and authorized.\ninterface INonfungiblePositionManager is\n    IPoolInitializer,\n    IPeripheryPayments,\n    IPeripheryImmutableState,\n    IERC721Metadata,\n    IERC721Enumerable,\n    IERC721Permit\n{\n    /// @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\n    event IncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);\n    /// @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\n    event DecreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);\n    /// @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\n    event Collect(uint256 indexed tokenId, address recipient, uint256 amount0, uint256 amount1);\n\n    /// @notice Returns the position information associated with a given token ID.\n    /// @dev Throws if the token ID is not valid.\n    /// @param tokenId The ID of the token that represents the position\n    /// @return nonce The nonce for permits\n    /// @return operator The address that is approved for spending\n    /// @return token0 The address of the token0 for a specific pool\n    /// @return token1 The address of the token1 for a specific pool\n    /// @return fee The fee associated with the pool\n    /// @return tickLower The lower end of the tick range for the position\n    /// @return tickUpper The higher end of the tick range for the position\n    /// @return liquidity The liquidity of the position\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\n    function positions(\n        uint256 tokenId\n    )\n        external\n        view\n        returns (\n            uint96 nonce,\n            address operator,\n            address token0,\n            address token1,\n            uint24 fee,\n            int24 tickLower,\n            int24 tickUpper,\n            uint128 liquidity,\n            uint256 feeGrowthInside0LastX128,\n            uint256 feeGrowthInside1LastX128,\n            uint128 tokensOwed0,\n            uint128 tokensOwed1\n        );\n\n    struct MintParams {\n        address token0;\n        address token1;\n        uint24 fee;\n        int24 tickLower;\n        int24 tickUpper;\n        uint256 amount0Desired;\n        uint256 amount1Desired;\n        uint256 amount0Min;\n        uint256 amount1Min;\n        address recipient;\n        uint256 deadline;\n    }\n\n    /// @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\n    function mint(\n        MintParams calldata params\n    ) external payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);\n\n    struct IncreaseLiquidityParams {\n        uint256 tokenId;\n        uint256 amount0Desired;\n        uint256 amount1Desired;\n        uint256 amount0Min;\n        uint256 amount1Min;\n        uint256 deadline;\n    }\n\n    /// @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\n    function increaseLiquidity(\n        IncreaseLiquidityParams calldata params\n    ) external payable returns (uint128 liquidity, uint256 amount0, uint256 amount1);\n\n    struct DecreaseLiquidityParams {\n        uint256 tokenId;\n        uint128 liquidity;\n        uint256 amount0Min;\n        uint256 amount1Min;\n        uint256 deadline;\n    }\n\n    /// @notice Decreases the amount of liquidity in a position and accounts it to the position\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\n    /// amount The amount by which liquidity will be decreased,\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\n    /// deadline The time by which the transaction must be included to effect the change\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\n    function decreaseLiquidity(\n        DecreaseLiquidityParams calldata params\n    ) external payable returns (uint256 amount0, uint256 amount1);\n\n    struct CollectParams {\n        uint256 tokenId;\n        address recipient;\n        uint128 amount0Max;\n        uint128 amount1Max;\n    }\n\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\n    /// recipient The account that should receive the tokens,\n    /// amount0Max The maximum amount of token0 to collect,\n    /// amount1Max The maximum amount of token1 to collect\n    /// @return amount0 The amount of fees collected in token0\n    /// @return amount1 The amount of fees collected in token1\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\n\n    /// @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\n    function burn(uint256 tokenId) external payable;\n}\n"},"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nimport './INonfungiblePositionManager.sol';\n\n/// @title Describes position NFT tokens via URI\ninterface INonfungibleTokenPositionDescriptor {\n    /// @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\n    function tokenURI(\n        INonfungiblePositionManager positionManager,\n        uint256 tokenId\n    ) external view returns (string memory);\n}\n"},"contracts/interfaces/IPeripheryImmutableState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Immutable state\n/// @notice Functions that return immutable state of the router\ninterface IPeripheryImmutableState {\n    /// @return Returns the address of the AstraDEX CL factory\n    function factory() external view returns (address);\n\n    /// @return Returns the address of SAMB\n    function SAMB() external view returns (address);\n}\n"},"contracts/interfaces/IPeripheryPayments.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\n\n/// @title Periphery Payments\n/// @notice Functions to ease deposits and withdrawals of AMB\ninterface IPeripheryPayments {\n    /// @notice Unwraps the contract's SAMB balance and sends it to recipient as AMB.\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\n    /// @param amountMinimum The minimum amount of SAMB to unwrap\n    /// @param recipient The address receiving AMB\n    function unwrapSAMB(uint256 amountMinimum, address recipient) external payable;\n\n    /// @notice Refunds any AMB 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\n    function refundAMB() external payable;\n\n    /// @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\n    function sweepToken(address token, uint256 amountMinimum, address recipient) external payable;\n}\n"},"contracts/interfaces/IPoolInitializer.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\n/// @title Creates and initializes CL 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.\ninterface IPoolInitializer {\n    /// @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 CL 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\n    function createAndInitializePoolIfNecessary(\n        address token0,\n        address token1,\n        uint24 fee,\n        uint160 sqrtPriceX96\n    ) external payable returns (address pool);\n}\n"},"contracts/interfaces/ISelfPermit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\n\n/// @title Self Permit\n/// @notice Functionality to call permit on any EIP-2612-compliant token for use in the route\ninterface ISelfPermit {\n    /// @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`\n    function selfPermit(address token, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external payable;\n\n    /// @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`\n    function selfPermitIfNecessary(\n        address token,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable;\n\n    /// @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`\n    function selfPermitAllowed(\n        address token,\n        uint256 nonce,\n        uint256 expiry,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable;\n\n    /// @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`\n    function selfPermitAllowedIfNecessary(\n        address token,\n        uint256 nonce,\n        uint256 expiry,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable;\n}\n"},"contracts/libraries/CallbackValidation.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\nimport './PoolAddress.sol';\n\n/// @notice Provides validation for callbacks from AstraDEX CL Pools\nlibrary CallbackValidation {\n    /// @notice Returns the address of a valid AstraDEX CL Pool\n    /// @param factory The contract address of the AstraDEX CL 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 CL pool contract address\n    function verifyCallback(\n        address factory,\n        address tokenA,\n        address tokenB,\n        uint24 fee\n    ) internal view returns (IAstraCLPool pool) {\n        return verifyCallback(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee));\n    }\n\n    /// @notice Returns the address of a valid AstraDEX CL Pool\n    /// @param factory The contract address of the AstraDEX CL factory\n    /// @param poolKey The identifying key of the CL pool\n    /// @return pool The CL pool contract address\n    function verifyCallback(\n        address factory,\n        PoolAddress.PoolKey memory poolKey\n    ) internal view returns (IAstraCLPool pool) {\n        pool = IAstraCLPool(PoolAddress.computeAddress(factory, poolKey));\n        require(msg.sender == address(pool));\n    }\n}\n"},"contracts/libraries/ChainId.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.0;\n\n/// @title Function for getting the current chain ID\nlibrary ChainId {\n    /// @dev Gets the current chain ID\n    /// @return chainId The current chain ID\n    function get() internal pure returns (uint256 chainId) {\n        assembly {\n            chainId := chainid()\n        }\n    }\n}\n"},"contracts/libraries/LiquidityAmounts.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/FullMath.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol';\n\n/// @title Liquidity amount functions\n/// @notice Provides functions for computing liquidity amounts from token amounts and prices\nlibrary LiquidityAmounts {\n    /// @notice Downcasts uint256 to uint128\n    /// @param x The uint258 to be downcasted\n    /// @return y The passed value, downcasted to uint128\n    function toUint128(uint256 x) private pure returns (uint128 y) {\n        require((y = uint128(x)) == x);\n    }\n\n    /// @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\n    function getLiquidityForAmount0(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount0\n    ) internal pure returns (uint128 liquidity) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n        uint256 intermediate = FullMath.mulDiv(sqrtRatioAX96, sqrtRatioBX96, FixedPoint96.Q96);\n        return toUint128(FullMath.mulDiv(amount0, intermediate, sqrtRatioBX96 - sqrtRatioAX96));\n    }\n\n    /// @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\n    function getLiquidityForAmount1(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount1\n    ) internal pure returns (uint128 liquidity) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n        return toUint128(FullMath.mulDiv(amount1, FixedPoint96.Q96, sqrtRatioBX96 - sqrtRatioAX96));\n    }\n\n    /// @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\n    function getLiquidityForAmounts(\n        uint160 sqrtRatioX96,\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount0,\n        uint256 amount1\n    ) internal pure returns (uint128 liquidity) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n        if (sqrtRatioX96 <= sqrtRatioAX96) {\n            liquidity = getLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\n        } else if (sqrtRatioX96 < sqrtRatioBX96) {\n            uint128 liquidity0 = getLiquidityForAmount0(sqrtRatioX96, sqrtRatioBX96, amount0);\n            uint128 liquidity1 = getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioX96, amount1);\n\n            liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1;\n        } else {\n            liquidity = getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\n        }\n    }\n\n    /// @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\n    function getAmount0ForLiquidity(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) internal pure returns (uint256 amount0) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n        return\n            FullMath.mulDiv(\n                uint256(liquidity) << FixedPoint96.RESOLUTION,\n                sqrtRatioBX96 - sqrtRatioAX96,\n                sqrtRatioBX96\n            ) / sqrtRatioAX96;\n    }\n\n    /// @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\n    function getAmount1ForLiquidity(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) internal pure returns (uint256 amount1) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n        return FullMath.mulDiv(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96);\n    }\n\n    /// @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\n    function getAmountsForLiquidity(\n        uint160 sqrtRatioX96,\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) internal pure returns (uint256 amount0, uint256 amount1) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n        if (sqrtRatioX96 <= sqrtRatioAX96) {\n            amount0 = getAmount0ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n        } else if (sqrtRatioX96 < sqrtRatioBX96) {\n            amount0 = getAmount0ForLiquidity(sqrtRatioX96, sqrtRatioBX96, liquidity);\n            amount1 = getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioX96, liquidity);\n        } else {\n            amount1 = getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n        }\n    }\n}\n"},"contracts/libraries/PoolAddress.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Provides functions for deriving a pool address from the factory, tokens, and the fee\nlibrary PoolAddress {\n    bytes32 internal constant POOL_INIT_CODE_HASH = 0x203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c04;\n\n    /// @notice The identifying key of the pool\n    struct PoolKey {\n        address token0;\n        address token1;\n        uint24 fee;\n    }\n\n    /// @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\n    function getPoolKey(address tokenA, address tokenB, uint24 fee) internal pure returns (PoolKey memory) {\n        if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA);\n        return PoolKey({token0: tokenA, token1: tokenB, fee: fee});\n    }\n\n    /// @notice Deterministically computes the pool address given the factory and PoolKey\n    /// @param factory The AstraDEX CL factory contract address\n    /// @param key The PoolKey\n    /// @return pool The contract address of the CL pool\n    function computeAddress(address factory, PoolKey memory key) internal pure returns (address pool) {\n        require(key.token0 < key.token1);\n        pool = address(\n            uint256(\n                keccak256(\n                    abi.encodePacked(\n                        hex'ff',\n                        factory,\n                        keccak256(abi.encode(key.token0, key.token1, key.fee)),\n                        POOL_INIT_CODE_HASH\n                    )\n                )\n            )\n        );\n    }\n}\n"},"contracts/libraries/PositionKey.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nlibrary PositionKey {\n    /// @dev Returns the key of the position in the core library\n    function compute(address owner, int24 tickLower, int24 tickUpper) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(owner, tickLower, tickUpper));\n    }\n}\n"},"contracts/libraries/TransferHelper.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.0;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n\nlibrary TransferHelper {\n    /// @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\n    function safeTransferFrom(address token, address from, address to, uint256 value) internal {\n        (bool success, bytes memory data) = token.call(\n            abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, value)\n        );\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'STF');\n    }\n\n    /// @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\n    function safeTransfer(address token, address to, uint256 value) internal {\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'ST');\n    }\n\n    /// @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\n    function safeApprove(address token, address to, uint256 value) internal {\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.approve.selector, to, value));\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'SA');\n    }\n\n    /// @notice Transfers AMB 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\n    function safeTransferAMB(address to, uint256 value) internal {\n        (bool success, ) = to.call{value: value}(new bytes(0));\n        require(success, 'STE');\n    }\n}\n"},"contracts/NonfungiblePositionManager.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/FullMath.sol';\n\nimport './interfaces/INonfungiblePositionManager.sol';\nimport './interfaces/INonfungibleTokenPositionDescriptor.sol';\nimport './libraries/PositionKey.sol';\nimport './libraries/PoolAddress.sol';\nimport './base/LiquidityManagement.sol';\nimport './base/PeripheryImmutableState.sol';\nimport './base/Multicall.sol';\nimport './base/ERC721Permit.sol';\nimport './base/PeripheryValidation.sol';\nimport './base/SelfPermit.sol';\nimport './base/PoolInitializer.sol';\n\n/// @title NFT positions\n/// @notice Wraps AstraDEX CL positions in the ERC721 non-fungible token interface\ncontract NonfungiblePositionManager is\n    INonfungiblePositionManager,\n    Multicall,\n    ERC721Permit,\n    PeripheryImmutableState,\n    PoolInitializer,\n    LiquidityManagement,\n    PeripheryValidation,\n    SelfPermit\n{\n    // details about the astra position\n    struct Position {\n        // the nonce for permits\n        uint96 nonce;\n        // the address that is approved for spending this token\n        address operator;\n        // the ID of the pool with which this token is connected\n        uint80 poolId;\n        // the tick range of the position\n        int24 tickLower;\n        int24 tickUpper;\n        // the liquidity of the position\n        uint128 liquidity;\n        // the fee growth of the aggregate position as of the last action on the individual position\n        uint256 feeGrowthInside0LastX128;\n        uint256 feeGrowthInside1LastX128;\n        // how many uncollected tokens are owed to the position, as of the last computation\n        uint128 tokensOwed0;\n        uint128 tokensOwed1;\n    }\n\n    /// @dev IDs of pools assigned by this contract\n    mapping(address => uint80) private _poolIds;\n\n    /// @dev Pool keys by pool ID, to save on SSTOREs for position data\n    mapping(uint80 => PoolAddress.PoolKey) private _poolIdToPoolKey;\n\n    /// @dev The token ID position data\n    mapping(uint256 => Position) private _positions;\n\n    /// @dev The ID of the next token that will be minted. Skips 0\n    uint176 private _nextId = 1;\n    /// @dev The ID of the next pool that is used for the first time. Skips 0\n    uint80 private _nextPoolId = 1;\n\n    /// @dev The address of the token descriptor contract, which handles generating token URIs for position tokens\n    address private immutable _tokenDescriptor;\n\n    constructor(\n        address _factory,\n        address _SAMB,\n        address _tokenDescriptor_\n    ) ERC721Permit('AstraDEX CL Positions NFT-V1', 'AST-CL-POS', '1') PeripheryImmutableState(_factory, _SAMB) {\n        _tokenDescriptor = _tokenDescriptor_;\n    }\n\n    /// @inheritdoc INonfungiblePositionManager\n    function positions(\n        uint256 tokenId\n    )\n        external\n        view\n        override\n        returns (\n            uint96 nonce,\n            address operator,\n            address token0,\n            address token1,\n            uint24 fee,\n            int24 tickLower,\n            int24 tickUpper,\n            uint128 liquidity,\n            uint256 feeGrowthInside0LastX128,\n            uint256 feeGrowthInside1LastX128,\n            uint128 tokensOwed0,\n            uint128 tokensOwed1\n        )\n    {\n        Position memory position = _positions[tokenId];\n        require(position.poolId != 0, 'Invalid token ID');\n        PoolAddress.PoolKey memory poolKey = _poolIdToPoolKey[position.poolId];\n        return (\n            position.nonce,\n            position.operator,\n            poolKey.token0,\n            poolKey.token1,\n            poolKey.fee,\n            position.tickLower,\n            position.tickUpper,\n            position.liquidity,\n            position.feeGrowthInside0LastX128,\n            position.feeGrowthInside1LastX128,\n            position.tokensOwed0,\n            position.tokensOwed1\n        );\n    }\n\n    /// @dev Caches a pool key\n    function cachePoolKey(address pool, PoolAddress.PoolKey memory poolKey) private returns (uint80 poolId) {\n        poolId = _poolIds[pool];\n        if (poolId == 0) {\n            _poolIds[pool] = (poolId = _nextPoolId++);\n            _poolIdToPoolKey[poolId] = poolKey;\n        }\n    }\n\n    /// @inheritdoc INonfungiblePositionManager\n    function mint(\n        MintParams calldata params\n    )\n        external\n        payable\n        override\n        checkDeadline(params.deadline)\n        returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)\n    {\n        IAstraCLPool pool;\n        (liquidity, amount0, amount1, pool) = addLiquidity(\n            AddLiquidityParams({\n                token0: params.token0,\n                token1: params.token1,\n                fee: params.fee,\n                recipient: address(this),\n                tickLower: params.tickLower,\n                tickUpper: params.tickUpper,\n                amount0Desired: params.amount0Desired,\n                amount1Desired: params.amount1Desired,\n                amount0Min: params.amount0Min,\n                amount1Min: params.amount1Min\n            })\n        );\n\n        _mint(params.recipient, (tokenId = _nextId++));\n\n        bytes32 positionKey = PositionKey.compute(address(this), params.tickLower, params.tickUpper);\n        (, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, , ) = pool.positions(positionKey);\n\n        // idempotent set\n        uint80 poolId = cachePoolKey(\n            address(pool),\n            PoolAddress.PoolKey({token0: params.token0, token1: params.token1, fee: params.fee})\n        );\n\n        _positions[tokenId] = Position({\n            nonce: 0,\n            operator: address(0),\n            poolId: poolId,\n            tickLower: params.tickLower,\n            tickUpper: params.tickUpper,\n            liquidity: liquidity,\n            feeGrowthInside0LastX128: feeGrowthInside0LastX128,\n            feeGrowthInside1LastX128: feeGrowthInside1LastX128,\n            tokensOwed0: 0,\n            tokensOwed1: 0\n        });\n\n        emit IncreaseLiquidity(tokenId, liquidity, amount0, amount1);\n    }\n\n    modifier isAuthorizedForToken(uint256 tokenId) {\n        require(_isApprovedOrOwner(msg.sender, tokenId), 'Not approved');\n        _;\n    }\n\n    function tokenURI(uint256 tokenId) public view override(ERC721, IERC721Metadata) returns (string memory) {\n        require(_exists(tokenId));\n        return INonfungibleTokenPositionDescriptor(_tokenDescriptor).tokenURI(this, tokenId);\n    }\n\n    // save bytecode by removing implementation of unused method\n    function baseURI() public pure override returns (string memory) {}\n\n    /// @inheritdoc INonfungiblePositionManager\n    function increaseLiquidity(\n        IncreaseLiquidityParams calldata params\n    )\n        external\n        payable\n        override\n        checkDeadline(params.deadline)\n        returns (uint128 liquidity, uint256 amount0, uint256 amount1)\n    {\n        Position storage position = _positions[params.tokenId];\n\n        PoolAddress.PoolKey memory poolKey = _poolIdToPoolKey[position.poolId];\n\n        IAstraCLPool pool;\n        (liquidity, amount0, amount1, pool) = addLiquidity(\n            AddLiquidityParams({\n                token0: poolKey.token0,\n                token1: poolKey.token1,\n                fee: poolKey.fee,\n                tickLower: position.tickLower,\n                tickUpper: position.tickUpper,\n                amount0Desired: params.amount0Desired,\n                amount1Desired: params.amount1Desired,\n                amount0Min: params.amount0Min,\n                amount1Min: params.amount1Min,\n                recipient: address(this)\n            })\n        );\n\n        bytes32 positionKey = PositionKey.compute(address(this), position.tickLower, position.tickUpper);\n\n        // this is now updated to the current transaction\n        (, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, , ) = pool.positions(positionKey);\n\n        position.tokensOwed0 += uint128(\n            FullMath.mulDiv(\n                feeGrowthInside0LastX128 - position.feeGrowthInside0LastX128,\n                position.liquidity,\n                FixedPoint128.Q128\n            )\n        );\n        position.tokensOwed1 += uint128(\n            FullMath.mulDiv(\n                feeGrowthInside1LastX128 - position.feeGrowthInside1LastX128,\n                position.liquidity,\n                FixedPoint128.Q128\n            )\n        );\n\n        position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;\n        position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;\n        position.liquidity += liquidity;\n\n        emit IncreaseLiquidity(params.tokenId, liquidity, amount0, amount1);\n    }\n\n    /// @inheritdoc INonfungiblePositionManager\n    function decreaseLiquidity(\n        DecreaseLiquidityParams calldata params\n    )\n        external\n        payable\n        override\n        isAuthorizedForToken(params.tokenId)\n        checkDeadline(params.deadline)\n        returns (uint256 amount0, uint256 amount1)\n    {\n        require(params.liquidity > 0);\n        Position storage position = _positions[params.tokenId];\n\n        uint128 positionLiquidity = position.liquidity;\n        require(positionLiquidity >= params.liquidity);\n\n        PoolAddress.PoolKey memory poolKey = _poolIdToPoolKey[position.poolId];\n        IAstraCLPool pool = IAstraCLPool(PoolAddress.computeAddress(factory, poolKey));\n        (amount0, amount1) = pool.burn(position.tickLower, position.tickUpper, params.liquidity);\n\n        require(amount0 >= params.amount0Min && amount1 >= params.amount1Min, 'Price slippage check');\n\n        bytes32 positionKey = PositionKey.compute(address(this), position.tickLower, position.tickUpper);\n        // this is now updated to the current transaction\n        (, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, , ) = pool.positions(positionKey);\n\n        position.tokensOwed0 +=\n            uint128(amount0) +\n            uint128(\n                FullMath.mulDiv(\n                    feeGrowthInside0LastX128 - position.feeGrowthInside0LastX128,\n                    positionLiquidity,\n                    FixedPoint128.Q128\n                )\n            );\n        position.tokensOwed1 +=\n            uint128(amount1) +\n            uint128(\n                FullMath.mulDiv(\n                    feeGrowthInside1LastX128 - position.feeGrowthInside1LastX128,\n                    positionLiquidity,\n                    FixedPoint128.Q128\n                )\n            );\n\n        position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;\n        position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;\n        // subtraction is safe because we checked positionLiquidity is gte params.liquidity\n        position.liquidity = positionLiquidity - params.liquidity;\n\n        emit DecreaseLiquidity(params.tokenId, params.liquidity, amount0, amount1);\n    }\n\n    /// @inheritdoc INonfungiblePositionManager\n    function collect(\n        CollectParams calldata params\n    ) external payable override isAuthorizedForToken(params.tokenId) returns (uint256 amount0, uint256 amount1) {\n        require(params.amount0Max > 0 || params.amount1Max > 0);\n        // allow collecting to the nft position manager address with address 0\n        address recipient = params.recipient == address(0) ? address(this) : params.recipient;\n\n        Position storage position = _positions[params.tokenId];\n\n        PoolAddress.PoolKey memory poolKey = _poolIdToPoolKey[position.poolId];\n\n        IAstraCLPool pool = IAstraCLPool(PoolAddress.computeAddress(factory, poolKey));\n\n        (uint128 tokensOwed0, uint128 tokensOwed1) = (position.tokensOwed0, position.tokensOwed1);\n\n        // trigger an update of the position fees owed and fee growth snapshots if it has any liquidity\n        if (position.liquidity > 0) {\n            pool.burn(position.tickLower, position.tickUpper, 0);\n            (, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, , ) = pool.positions(\n                PositionKey.compute(address(this), position.tickLower, position.tickUpper)\n            );\n\n            tokensOwed0 += uint128(\n                FullMath.mulDiv(\n                    feeGrowthInside0LastX128 - position.feeGrowthInside0LastX128,\n                    position.liquidity,\n                    FixedPoint128.Q128\n                )\n            );\n            tokensOwed1 += uint128(\n                FullMath.mulDiv(\n                    feeGrowthInside1LastX128 - position.feeGrowthInside1LastX128,\n                    position.liquidity,\n                    FixedPoint128.Q128\n                )\n            );\n\n            position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;\n            position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;\n        }\n\n        // compute the arguments to give to the pool#collect method\n        (uint128 amount0Collect, uint128 amount1Collect) = (\n            params.amount0Max > tokensOwed0 ? tokensOwed0 : params.amount0Max,\n            params.amount1Max > tokensOwed1 ? tokensOwed1 : params.amount1Max\n        );\n\n        // the actual amounts collected are returned\n        (amount0, amount1) = pool.collect(\n            recipient,\n            position.tickLower,\n            position.tickUpper,\n            amount0Collect,\n            amount1Collect\n        );\n\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\n        // instead of the actual amount so we can burn the token\n        (position.tokensOwed0, position.tokensOwed1) = (tokensOwed0 - amount0Collect, tokensOwed1 - amount1Collect);\n\n        emit Collect(params.tokenId, recipient, amount0Collect, amount1Collect);\n    }\n\n    /// @inheritdoc INonfungiblePositionManager\n    function burn(uint256 tokenId) external payable override isAuthorizedForToken(tokenId) {\n        Position storage position = _positions[tokenId];\n        require(position.liquidity == 0 && position.tokensOwed0 == 0 && position.tokensOwed1 == 0, 'Not cleared');\n        delete _positions[tokenId];\n        _burn(tokenId);\n    }\n\n    function _getAndIncrementNonce(uint256 tokenId) internal override returns (uint256) {\n        return uint256(_positions[tokenId].nonce++);\n    }\n\n    /// @inheritdoc IERC721\n    function getApproved(uint256 tokenId) public view override(ERC721, IERC721) returns (address) {\n        require(_exists(tokenId), 'ERC721: approved query for nonexistent token');\n\n        return _positions[tokenId].operator;\n    }\n\n    /// @dev Overrides _approve to use the operator in the position, which is packed with the position permit nonce\n    function _approve(address to, uint256 tokenId) internal override(ERC721) {\n        _positions[tokenId].operator = to;\n        emit Approval(ownerOf(tokenId), to, tokenId);\n    }\n}\n"},"contracts/test/MockTimeNonfungiblePositionManager.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\npragma abicoder v2;\n\nimport '../NonfungiblePositionManager.sol';\n\ncontract MockTimeNonfungiblePositionManager is NonfungiblePositionManager {\n    uint256 time;\n\n    constructor(\n        address _factory,\n        address _SAMB,\n        address _tokenDescriptor\n    ) NonfungiblePositionManager(_factory, _SAMB, _tokenDescriptor) {}\n\n    function _blockTimestamp() internal view override returns (uint256) {\n        return time;\n    }\n\n    function setTime(uint256 _time) external {\n        time = _time;\n    }\n}\n"}},"settings":{"evmVersion":"istanbul","optimizer":{"enabled":true,"runs":2000},"metadata":{"bytecodeHash":"none"},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol","exportedSymbols":{"IAstraCLFactory":[82]},"id":83,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"71:157:0","text":"@title The interface for the Astra CL Factory\n @notice The Astra CL Factory facilitates creation of Astra CL pools and control over the protocol fees"},"fullyImplemented":false,"id":82,"linearizedBaseContracts":[82],"name":"IAstraCLFactory","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"260:185: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":"469:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"469: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":"495:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"495:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"468:52:0"},"src":"450:71:0"},{"anonymous":false,"documentation":{"id":10,"nodeType":"StructuredDocumentation","src":"527:421: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":"980:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"980: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":"1012:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"1012: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":"1044:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":15,"name":"uint24","nodeType":"ElementaryTypeName","src":"1044: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":"1072:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":17,"name":"int24","nodeType":"ElementaryTypeName","src":"1072: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":"1099:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"1099:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"970:147:0"},"src":"953:165:0"},{"anonymous":false,"documentation":{"id":23,"nodeType":"StructuredDocumentation","src":"1124:275: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":"1427:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":24,"name":"uint24","nodeType":"ElementaryTypeName","src":"1427: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":"1447:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":26,"name":"int24","nodeType":"ElementaryTypeName","src":"1447:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1426:47:0"},"src":"1404:70:0"},{"documentation":{"id":30,"nodeType":"StructuredDocumentation","src":"1480:163: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":35,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nodeType":"FunctionDefinition","parameters":{"id":31,"nodeType":"ParameterList","parameters":[],"src":"1662:2:0"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":35,"src":"1688:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1687:9:0"},"scope":82,"src":"1648:49:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1703:348: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":43,"implemented":false,"kind":"function","modifiers":[],"name":"feeAmountTickSpacing","nodeType":"FunctionDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":43,"src":"2086:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":37,"name":"uint24","nodeType":"ElementaryTypeName","src":"2086:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2085:12:0"},"returnParameters":{"id":42,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":43,"src":"2121:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":40,"name":"int24","nodeType":"ElementaryTypeName","src":"2121:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2120:7:0"},"scope":82,"src":"2056:72:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":44,"nodeType":"StructuredDocumentation","src":"2134:471: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":55,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":55,"src":"2627:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45,"name":"address","nodeType":"ElementaryTypeName","src":"2627:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":48,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":55,"src":"2643:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":47,"name":"address","nodeType":"ElementaryTypeName","src":"2643:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":50,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":55,"src":"2659:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":49,"name":"uint24","nodeType":"ElementaryTypeName","src":"2659:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2626:44:0"},"returnParameters":{"id":54,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":55,"src":"2694:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52,"name":"address","nodeType":"ElementaryTypeName","src":"2694:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2693:14:0"},"scope":82,"src":"2610:98:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":56,"nodeType":"StructuredDocumentation","src":"2714:554: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":67,"implemented":false,"kind":"function","modifiers":[],"name":"createPool","nodeType":"FunctionDefinition","parameters":{"id":63,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":67,"src":"3293:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"3293:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":67,"src":"3309:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59,"name":"address","nodeType":"ElementaryTypeName","src":"3309:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":67,"src":"3325:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":61,"name":"uint24","nodeType":"ElementaryTypeName","src":"3325:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3292:44:0"},"returnParameters":{"id":66,"nodeType":"ParameterList","parameters":[{"constant":false,"id":65,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":67,"src":"3355:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":64,"name":"address","nodeType":"ElementaryTypeName","src":"3355:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3354:14:0"},"scope":82,"src":"3273:96:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":68,"nodeType":"StructuredDocumentation","src":"3375:144: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":73,"implemented":false,"kind":"function","modifiers":[],"name":"setOwner","nodeType":"FunctionDefinition","parameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"mutability":"mutable","name":"_owner","nodeType":"VariableDeclaration","scope":73,"src":"3542:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"3542:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3541:16:0"},"returnParameters":{"id":72,"nodeType":"ParameterList","parameters":[],"src":"3566:0:0"},"scope":82,"src":"3524:43:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":74,"nodeType":"StructuredDocumentation","src":"3573:326: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":81,"implemented":false,"kind":"function","modifiers":[],"name":"enableFeeAmount","nodeType":"FunctionDefinition","parameters":{"id":79,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":81,"src":"3929:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":75,"name":"uint24","nodeType":"ElementaryTypeName","src":"3929:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":78,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":81,"src":"3941:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":77,"name":"int24","nodeType":"ElementaryTypeName","src":"3941:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3928:31:0"},"returnParameters":{"id":80,"nodeType":"ParameterList","parameters":[],"src":"3968:0:0"},"scope":82,"src":"3904:65:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":83,"src":"228:3743:0"}],"src":"45:3927:0"},"id":0},"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","exportedSymbols":{"IAstraCLPool":[110],"IAstraCLPoolActions":[220],"IAstraCLPoolDerivedState":[251],"IAstraCLPoolEvents":[370],"IAstraCLPoolImmutables":[410],"IAstraCLPoolOwnerActions":[436],"IAstraCLPoolState":[544]},"id":111,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":84,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:1"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol","file":"./pool/IAstraCLPoolActions.sol","id":86,"nodeType":"ImportDirective","scope":111,"sourceUnit":221,"src":"71:67:1","symbolAliases":[{"foreign":{"id":85,"name":"IAstraCLPoolActions","nodeType":"Identifier","overloadedDeclarations":[],"src":"79:19:1","typeDescriptions":{}}}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol","file":"./pool/IAstraCLPoolDerivedState.sol","id":88,"nodeType":"ImportDirective","scope":111,"sourceUnit":252,"src":"139:77:1","symbolAliases":[{"foreign":{"id":87,"name":"IAstraCLPoolDerivedState","nodeType":"Identifier","overloadedDeclarations":[],"src":"147:24:1","typeDescriptions":{}}}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol","file":"./pool/IAstraCLPoolEvents.sol","id":90,"nodeType":"ImportDirective","scope":111,"sourceUnit":371,"src":"217:65:1","symbolAliases":[{"foreign":{"id":89,"name":"IAstraCLPoolEvents","nodeType":"Identifier","overloadedDeclarations":[],"src":"225:18:1","typeDescriptions":{}}}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol","file":"./pool/IAstraCLPoolImmutables.sol","id":92,"nodeType":"ImportDirective","scope":111,"sourceUnit":411,"src":"283:73:1","symbolAliases":[{"foreign":{"id":91,"name":"IAstraCLPoolImmutables","nodeType":"Identifier","overloadedDeclarations":[],"src":"291:22:1","typeDescriptions":{}}}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol","file":"./pool/IAstraCLPoolOwnerActions.sol","id":94,"nodeType":"ImportDirective","scope":111,"sourceUnit":437,"src":"357:77:1","symbolAliases":[{"foreign":{"id":93,"name":"IAstraCLPoolOwnerActions","nodeType":"Identifier","overloadedDeclarations":[],"src":"365:24:1","typeDescriptions":{}}}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol","file":"./pool/IAstraCLPoolState.sol","id":96,"nodeType":"ImportDirective","scope":111,"sourceUnit":545,"src":"435:63:1","symbolAliases":[{"foreign":{"id":95,"name":"IAstraCLPoolState","nodeType":"Identifier","overloadedDeclarations":[],"src":"443:17:1","typeDescriptions":{}}}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":98,"name":"IAstraCLPoolImmutables","nodeType":"UserDefinedTypeName","referencedDeclaration":410,"src":"792:22:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolImmutables_$410","typeString":"contract IAstraCLPoolImmutables"}},"id":99,"nodeType":"InheritanceSpecifier","src":"792:22:1"},{"baseName":{"id":100,"name":"IAstraCLPoolState","nodeType":"UserDefinedTypeName","referencedDeclaration":544,"src":"820:17:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolState_$544","typeString":"contract IAstraCLPoolState"}},"id":101,"nodeType":"InheritanceSpecifier","src":"820:17:1"},{"baseName":{"id":102,"name":"IAstraCLPoolDerivedState","nodeType":"UserDefinedTypeName","referencedDeclaration":251,"src":"843:24:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolDerivedState_$251","typeString":"contract IAstraCLPoolDerivedState"}},"id":103,"nodeType":"InheritanceSpecifier","src":"843:24:1"},{"baseName":{"id":104,"name":"IAstraCLPoolActions","nodeType":"UserDefinedTypeName","referencedDeclaration":220,"src":"873:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolActions_$220","typeString":"contract IAstraCLPoolActions"}},"id":105,"nodeType":"InheritanceSpecifier","src":"873:19:1"},{"baseName":{"id":106,"name":"IAstraCLPoolOwnerActions","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"898:24:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolOwnerActions_$436","typeString":"contract IAstraCLPoolOwnerActions"}},"id":107,"nodeType":"InheritanceSpecifier","src":"898:24:1"},{"baseName":{"id":108,"name":"IAstraCLPoolEvents","nodeType":"UserDefinedTypeName","referencedDeclaration":370,"src":"928:18:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolEvents_$370","typeString":"contract IAstraCLPoolEvents"}},"id":109,"nodeType":"InheritanceSpecifier","src":"928:18:1"}],"contractDependencies":[220,251,370,410,436,544],"contractKind":"interface","documentation":{"id":97,"nodeType":"StructuredDocumentation","src":"500:262:1","text":"@title The interface for a Astra CL Pool\n @notice An Astra 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,370,436,220,251,544,410],"name":"IAstraCLPool","nodeType":"ContractDefinition","nodes":[],"scope":111,"src":"762:187:1"}],"src":"45:905:1"},"id":1},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol","exportedSymbols":{"IAstraCLMintCallback":[124]},"id":125,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":112,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:2"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":113,"nodeType":"StructuredDocumentation","src":"71:140:2","text":"@title Callback for IAstraCLPoolActions#mint\n @notice Any contract that calls IAstraCLPoolActions#mint must implement this interface"},"fullyImplemented":false,"id":124,"linearizedBaseContracts":[124],"name":"IAstraCLMintCallback","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":114,"nodeType":"StructuredDocumentation","src":"248:577:2","text":"@notice Called to `msg.sender` after minting liquidity to a position from IAstraCLPool#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 AstraCLPool deployed by the canonical AstraCLFactory.\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 IAstraCLPoolActions#mint call"},"functionSelector":"4cb42d2d","id":123,"implemented":false,"kind":"function","modifiers":[],"name":"astraCLMintCallback","nodeType":"FunctionDefinition","parameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116,"mutability":"mutable","name":"amount0Owed","nodeType":"VariableDeclaration","scope":123,"src":"859:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":115,"name":"uint256","nodeType":"ElementaryTypeName","src":"859:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":118,"mutability":"mutable","name":"amount1Owed","nodeType":"VariableDeclaration","scope":123,"src":"880:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":117,"name":"uint256","nodeType":"ElementaryTypeName","src":"880:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":123,"src":"901:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":119,"name":"bytes","nodeType":"ElementaryTypeName","src":"901:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"858:63:2"},"returnParameters":{"id":122,"nodeType":"ParameterList","parameters":[],"src":"930:0:2"},"scope":124,"src":"830:101:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":125,"src":"211:722:2"}],"src":"45:889:2"},"id":2},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol","exportedSymbols":{"IAstraCLPoolActions":[220]},"id":221,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":126,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:3"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":127,"nodeType":"StructuredDocumentation","src":"71:102:3","text":"@title Permissionless pool actions\n @notice Contains pool methods that can be called by anyone"},"fullyImplemented":false,"id":220,"linearizedBaseContracts":[220],"name":"IAstraCLPoolActions","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":128,"nodeType":"StructuredDocumentation","src":"209:206: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":"440:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":129,"name":"uint160","nodeType":"ElementaryTypeName","src":"440:7:3","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"439:22:3"},"returnParameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"470:0:3"},"scope":220,"src":"420:51:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":134,"nodeType":"StructuredDocumentation","src":"477:1029: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 IAstraCLMintCallback.sol#astraCLMintCallback\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":"1534:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135,"name":"address","nodeType":"ElementaryTypeName","src":"1534: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":"1561:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":137,"name":"int24","nodeType":"ElementaryTypeName","src":"1561:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":140,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":151,"src":"1586:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":139,"name":"int24","nodeType":"ElementaryTypeName","src":"1586:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":142,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":151,"src":"1611:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":141,"name":"uint128","nodeType":"ElementaryTypeName","src":"1611:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":144,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":151,"src":"1635:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":143,"name":"bytes","nodeType":"ElementaryTypeName","src":"1635:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1524:136:3"},"returnParameters":{"id":150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":147,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":151,"src":"1679:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":146,"name":"uint256","nodeType":"ElementaryTypeName","src":"1679:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":149,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":151,"src":"1696:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":148,"name":"uint256","nodeType":"ElementaryTypeName","src":"1696:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1678:34:3"},"scope":220,"src":"1511:202:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":152,"nodeType":"StructuredDocumentation","src":"1719:1053: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":"2803:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":153,"name":"address","nodeType":"ElementaryTypeName","src":"2803: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":"2830:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":155,"name":"int24","nodeType":"ElementaryTypeName","src":"2830:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":158,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":169,"src":"2855:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":157,"name":"int24","nodeType":"ElementaryTypeName","src":"2855:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":160,"mutability":"mutable","name":"amount0Requested","nodeType":"VariableDeclaration","scope":169,"src":"2880:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":159,"name":"uint128","nodeType":"ElementaryTypeName","src":"2880:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":162,"mutability":"mutable","name":"amount1Requested","nodeType":"VariableDeclaration","scope":169,"src":"2914:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":161,"name":"uint128","nodeType":"ElementaryTypeName","src":"2914:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2793:151:3"},"returnParameters":{"id":168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":165,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":169,"src":"2963:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":164,"name":"uint128","nodeType":"ElementaryTypeName","src":"2963:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":167,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":169,"src":"2980:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":166,"name":"uint128","nodeType":"ElementaryTypeName","src":"2980:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2962:34:3"},"scope":220,"src":"2777:220:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":170,"nodeType":"StructuredDocumentation","src":"3003:631: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":"3653:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":171,"name":"int24","nodeType":"ElementaryTypeName","src":"3653:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":174,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":183,"src":"3670:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":173,"name":"int24","nodeType":"ElementaryTypeName","src":"3670:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":183,"src":"3687:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":175,"name":"uint128","nodeType":"ElementaryTypeName","src":"3687:7:3","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3652:50:3"},"returnParameters":{"id":182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":179,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":183,"src":"3721:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"3721:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":181,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":183,"src":"3738:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":180,"name":"uint256","nodeType":"ElementaryTypeName","src":"3738:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3720:34:3"},"scope":220,"src":"3639:116:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":184,"nodeType":"StructuredDocumentation","src":"3761:1015: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 IAstraCLSwapCallback.sol#astraCLSwapCallback\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":"4804:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"4804: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":"4831:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":187,"name":"bool","nodeType":"ElementaryTypeName","src":"4831:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"amountSpecified","nodeType":"VariableDeclaration","scope":201,"src":"4856:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":189,"name":"int256","nodeType":"ElementaryTypeName","src":"4856:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":192,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":201,"src":"4888:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":191,"name":"uint160","nodeType":"ElementaryTypeName","src":"4888:7:3","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":194,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":201,"src":"4923:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":193,"name":"bytes","nodeType":"ElementaryTypeName","src":"4923:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4794:154:3"},"returnParameters":{"id":200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":197,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":201,"src":"4967:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":196,"name":"int256","nodeType":"ElementaryTypeName","src":"4967:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":199,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":201,"src":"4983:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":198,"name":"int256","nodeType":"ElementaryTypeName","src":"4983:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4966:32:3"},"scope":220,"src":"4781:218:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":202,"nodeType":"StructuredDocumentation","src":"5005:657: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 IAstraCLFlashCallback.sol#astraCLFlashCallback\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":"5682:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"5682: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":"5701:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":205,"name":"uint256","nodeType":"ElementaryTypeName","src":"5701:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":208,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":213,"src":"5718:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":207,"name":"uint256","nodeType":"ElementaryTypeName","src":"5718:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":210,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":213,"src":"5735:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":209,"name":"bytes","nodeType":"ElementaryTypeName","src":"5735:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5681:74:3"},"returnParameters":{"id":212,"nodeType":"ParameterList","parameters":[],"src":"5764:0:3"},"scope":220,"src":"5667:98:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":214,"nodeType":"StructuredDocumentation","src":"5771:367: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":"6187:33:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":215,"name":"uint16","nodeType":"ElementaryTypeName","src":"6187:6:3","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6186:35:3"},"returnParameters":{"id":218,"nodeType":"ParameterList","parameters":[],"src":"6230:0:3"},"scope":220,"src":"6143:88:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":221,"src":"173:6060:3"}],"src":"45:6189:3"},"id":3},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol","exportedSymbols":{"IAstraCLPoolDerivedState":[251]},"id":252,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":222,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:4"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":223,"nodeType":"StructuredDocumentation","src":"71:222: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":251,"linearizedBaseContracts":[251],"name":"IAstraCLPoolDerivedState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":224,"nodeType":"StructuredDocumentation","src":"334:1045: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":236,"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":236,"src":"1410: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":"1410:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":226,"nodeType":"ArrayTypeName","src":"1410:8:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"1400:45:4"},"returnParameters":{"id":235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":231,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":236,"src":"1469: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":"1469:5:4","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":230,"nodeType":"ArrayTypeName","src":"1469: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":236,"src":"1501: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":"1501:7:4","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":233,"nodeType":"ArrayTypeName","src":"1501:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"}],"src":"1468:85:4"},"scope":251,"src":"1384:170:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":237,"nodeType":"StructuredDocumentation","src":"1560:771: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":250,"implemented":false,"kind":"function","modifiers":[],"name":"snapshotCumulativesInside","nodeType":"FunctionDefinition","parameters":{"id":242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":239,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":250,"src":"2380:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":238,"name":"int24","nodeType":"ElementaryTypeName","src":"2380:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":241,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":250,"src":"2405:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":240,"name":"int24","nodeType":"ElementaryTypeName","src":"2405:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2370:56:4"},"returnParameters":{"id":249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":244,"mutability":"mutable","name":"tickCumulativeInside","nodeType":"VariableDeclaration","scope":250,"src":"2450:26:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":243,"name":"int56","nodeType":"ElementaryTypeName","src":"2450:5:4","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":246,"mutability":"mutable","name":"secondsPerLiquidityInsideX128","nodeType":"VariableDeclaration","scope":250,"src":"2478:37:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":245,"name":"uint160","nodeType":"ElementaryTypeName","src":"2478:7:4","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":248,"mutability":"mutable","name":"secondsInside","nodeType":"VariableDeclaration","scope":250,"src":"2517:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":247,"name":"uint32","nodeType":"ElementaryTypeName","src":"2517:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2449:89:4"},"scope":251,"src":"2336:203:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":252,"src":"293:2248:4"}],"src":"45:2497:4"},"id":4},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol","exportedSymbols":{"IAstraCLPoolEvents":[370]},"id":371,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":253,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:5"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":254,"nodeType":"StructuredDocumentation","src":"71:88:5","text":"@title Events emitted by a pool\n @notice Contains all events emitted by the pool"},"fullyImplemented":true,"id":370,"linearizedBaseContracts":[370],"name":"IAstraCLPoolEvents","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":255,"nodeType":"StructuredDocumentation","src":"194:344: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":261,"name":"Initialize","nodeType":"EventDefinition","parameters":{"id":260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":261,"src":"560:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":256,"name":"uint160","nodeType":"ElementaryTypeName","src":"560:7:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":259,"indexed":false,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":261,"src":"582:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":258,"name":"int24","nodeType":"ElementaryTypeName","src":"582:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"559:34:5"},"src":"543:51:5"},{"anonymous":false,"documentation":{"id":262,"nodeType":"StructuredDocumentation","src":"600:551: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":278,"name":"Mint","nodeType":"EventDefinition","parameters":{"id":277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":264,"indexed":false,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":278,"src":"1176:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":263,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":266,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":278,"src":"1200:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"1200:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":268,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":278,"src":"1231:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":267,"name":"int24","nodeType":"ElementaryTypeName","src":"1231:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":270,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":278,"src":"1264:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":269,"name":"int24","nodeType":"ElementaryTypeName","src":"1264:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":272,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":278,"src":"1297:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":271,"name":"uint128","nodeType":"ElementaryTypeName","src":"1297:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":274,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":278,"src":"1321:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":273,"name":"uint256","nodeType":"ElementaryTypeName","src":"1321:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":276,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":278,"src":"1346:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":275,"name":"uint256","nodeType":"ElementaryTypeName","src":"1346:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1166:201:5"},"src":"1156:212:5"},{"anonymous":false,"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"1374:493: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":293,"name":"Collect","nodeType":"EventDefinition","parameters":{"id":292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":281,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":293,"src":"1895:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":280,"name":"address","nodeType":"ElementaryTypeName","src":"1895:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":283,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":293,"src":"1926:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":282,"name":"address","nodeType":"ElementaryTypeName","src":"1926:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":285,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":293,"src":"1953:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":284,"name":"int24","nodeType":"ElementaryTypeName","src":"1953:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":287,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":293,"src":"1986:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":286,"name":"int24","nodeType":"ElementaryTypeName","src":"1986:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":289,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":293,"src":"2019:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":288,"name":"uint128","nodeType":"ElementaryTypeName","src":"2019:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":291,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":293,"src":"2044:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":290,"name":"uint128","nodeType":"ElementaryTypeName","src":"2044:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1885:180:5"},"src":"1872:194:5"},{"anonymous":false,"documentation":{"id":294,"nodeType":"StructuredDocumentation","src":"2072:523: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":308,"name":"Burn","nodeType":"EventDefinition","parameters":{"id":307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":296,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":308,"src":"2620:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":295,"name":"address","nodeType":"ElementaryTypeName","src":"2620:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":298,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":308,"src":"2651:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":297,"name":"int24","nodeType":"ElementaryTypeName","src":"2651:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":300,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":308,"src":"2684:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":299,"name":"int24","nodeType":"ElementaryTypeName","src":"2684:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":302,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":308,"src":"2717:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":301,"name":"uint128","nodeType":"ElementaryTypeName","src":"2717:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":304,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":308,"src":"2741:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":303,"name":"uint256","nodeType":"ElementaryTypeName","src":"2741:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":306,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":308,"src":"2766:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":305,"name":"uint256","nodeType":"ElementaryTypeName","src":"2766:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2610:177:5"},"src":"2600:188:5"},{"anonymous":false,"documentation":{"id":309,"nodeType":"StructuredDocumentation","src":"2794:600: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":325,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":311,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":325,"src":"3419:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":310,"name":"address","nodeType":"ElementaryTypeName","src":"3419:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":313,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":325,"src":"3451:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":312,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":315,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":325,"src":"3486:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":314,"name":"int256","nodeType":"ElementaryTypeName","src":"3486:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":317,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":325,"src":"3510:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":316,"name":"int256","nodeType":"ElementaryTypeName","src":"3510:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":319,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":325,"src":"3534:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":318,"name":"uint160","nodeType":"ElementaryTypeName","src":"3534:7:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":321,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":325,"src":"3564:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":320,"name":"uint128","nodeType":"ElementaryTypeName","src":"3564:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":323,"indexed":false,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":325,"src":"3591:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":322,"name":"int24","nodeType":"ElementaryTypeName","src":"3591:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3409:198:5"},"src":"3399:209:5"},{"anonymous":false,"documentation":{"id":326,"nodeType":"StructuredDocumentation","src":"3614:562: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":340,"name":"Flash","nodeType":"EventDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":328,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":340,"src":"4202:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":327,"name":"address","nodeType":"ElementaryTypeName","src":"4202:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":330,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":340,"src":"4234:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":329,"name":"address","nodeType":"ElementaryTypeName","src":"4234:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":332,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":340,"src":"4269:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":331,"name":"uint256","nodeType":"ElementaryTypeName","src":"4269:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":334,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":340,"src":"4294:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":333,"name":"uint256","nodeType":"ElementaryTypeName","src":"4294:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":336,"indexed":false,"mutability":"mutable","name":"paid0","nodeType":"VariableDeclaration","scope":340,"src":"4319:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":335,"name":"uint256","nodeType":"ElementaryTypeName","src":"4319:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":338,"indexed":false,"mutability":"mutable","name":"paid1","nodeType":"VariableDeclaration","scope":340,"src":"4342:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":337,"name":"uint256","nodeType":"ElementaryTypeName","src":"4342:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:169:5"},"src":"4181:181:5"},{"anonymous":false,"documentation":{"id":341,"nodeType":"StructuredDocumentation","src":"4368:451: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":347,"name":"IncreaseObservationCardinalityNext","nodeType":"EventDefinition","parameters":{"id":346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextOld","nodeType":"VariableDeclaration","scope":347,"src":"4874:36:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":342,"name":"uint16","nodeType":"ElementaryTypeName","src":"4874:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":345,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextNew","nodeType":"VariableDeclaration","scope":347,"src":"4920:36:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":344,"name":"uint16","nodeType":"ElementaryTypeName","src":"4920:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4864:98:5"},"src":"4824:139:5"},{"anonymous":false,"documentation":{"id":348,"nodeType":"StructuredDocumentation","src":"4969:370: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":358,"name":"SetFeeProtocol","nodeType":"EventDefinition","parameters":{"id":357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":350,"indexed":false,"mutability":"mutable","name":"feeProtocol0Old","nodeType":"VariableDeclaration","scope":358,"src":"5365:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":349,"name":"uint8","nodeType":"ElementaryTypeName","src":"5365:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":352,"indexed":false,"mutability":"mutable","name":"feeProtocol1Old","nodeType":"VariableDeclaration","scope":358,"src":"5388:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":351,"name":"uint8","nodeType":"ElementaryTypeName","src":"5388:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":354,"indexed":false,"mutability":"mutable","name":"feeProtocol0New","nodeType":"VariableDeclaration","scope":358,"src":"5411:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":353,"name":"uint8","nodeType":"ElementaryTypeName","src":"5411:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":356,"indexed":false,"mutability":"mutable","name":"feeProtocol1New","nodeType":"VariableDeclaration","scope":358,"src":"5434:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":355,"name":"uint8","nodeType":"ElementaryTypeName","src":"5434:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5364:92:5"},"src":"5344:113:5"},{"anonymous":false,"documentation":{"id":359,"nodeType":"StructuredDocumentation","src":"5463:384: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":369,"name":"CollectProtocol","nodeType":"EventDefinition","parameters":{"id":368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":369,"src":"5874:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":360,"name":"address","nodeType":"ElementaryTypeName","src":"5874:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":363,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":369,"src":"5898:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":362,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":365,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":369,"src":"5925:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":364,"name":"uint128","nodeType":"ElementaryTypeName","src":"5925:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":367,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":369,"src":"5942:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":366,"name":"uint128","nodeType":"ElementaryTypeName","src":"5942:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5873:85:5"},"src":"5852:107:5"}],"scope":371,"src":"159:5802:5"}],"src":"45:5917:5"},"id":5},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol","exportedSymbols":{"IAstraCLPoolImmutables":[410]},"id":411,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":372,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:6"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":373,"nodeType":"StructuredDocumentation","src":"71:153: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":410,"linearizedBaseContracts":[410],"name":"IAstraCLPoolImmutables","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":374,"nodeType":"StructuredDocumentation","src":"263:136:6","text":"@notice The contract that deployed the pool, which must adhere to the IAstraCLFactory interface\n @return The contract address"},"functionSelector":"c45a0155","id":379,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":375,"nodeType":"ParameterList","parameters":[],"src":"420:2:6"},"returnParameters":{"id":378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":379,"src":"446:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":376,"name":"address","nodeType":"ElementaryTypeName","src":"446:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"445:9:6"},"scope":410,"src":"404:51:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":380,"nodeType":"StructuredDocumentation","src":"461:113:6","text":"@notice The first of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"0dfe1681","id":385,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nodeType":"FunctionDefinition","parameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"594:2:6"},"returnParameters":{"id":384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":385,"src":"620:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":382,"name":"address","nodeType":"ElementaryTypeName","src":"620:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"619:9:6"},"scope":410,"src":"579:50:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":386,"nodeType":"StructuredDocumentation","src":"635:114:6","text":"@notice The second of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"d21220a7","id":391,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nodeType":"FunctionDefinition","parameters":{"id":387,"nodeType":"ParameterList","parameters":[],"src":"769:2:6"},"returnParameters":{"id":390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":389,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":391,"src":"795:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":388,"name":"address","nodeType":"ElementaryTypeName","src":"795:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"794:9:6"},"scope":410,"src":"754:50:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":392,"nodeType":"StructuredDocumentation","src":"810:84:6","text":"@notice The pool's fee in hundredths of a bip, i.e. 1e-6\n @return The fee"},"functionSelector":"ddca3f43","id":397,"implemented":false,"kind":"function","modifiers":[],"name":"fee","nodeType":"FunctionDefinition","parameters":{"id":393,"nodeType":"ParameterList","parameters":[],"src":"911:2:6"},"returnParameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":397,"src":"937:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":394,"name":"uint24","nodeType":"ElementaryTypeName","src":"937:6:6","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"936:8:6"},"scope":410,"src":"899:46:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":398,"nodeType":"StructuredDocumentation","src":"951:358: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":403,"implemented":false,"kind":"function","modifiers":[],"name":"tickSpacing","nodeType":"FunctionDefinition","parameters":{"id":399,"nodeType":"ParameterList","parameters":[],"src":"1334:2:6"},"returnParameters":{"id":402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":401,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":403,"src":"1360:5:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":400,"name":"int24","nodeType":"ElementaryTypeName","src":"1360:5:6","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1359:7:6"},"scope":410,"src":"1314:53:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":404,"nodeType":"StructuredDocumentation","src":"1373:363: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":409,"implemented":false,"kind":"function","modifiers":[],"name":"maxLiquidityPerTick","nodeType":"FunctionDefinition","parameters":{"id":405,"nodeType":"ParameterList","parameters":[],"src":"1769:2:6"},"returnParameters":{"id":408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":407,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":409,"src":"1795:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":406,"name":"uint128","nodeType":"ElementaryTypeName","src":"1795:7:6","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1794:9:6"},"scope":410,"src":"1741:63:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":411,"src":"224:1582:6"}],"src":"45:1762:6"},"id":6},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol","exportedSymbols":{"IAstraCLPoolOwnerActions":[436]},"id":437,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":412,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:7"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":413,"nodeType":"StructuredDocumentation","src":"71:116:7","text":"@title Permissioned pool actions\n @notice Contains pool methods that may only be called by the factory owner"},"fullyImplemented":false,"id":436,"linearizedBaseContracts":[436],"name":"IAstraCLPoolOwnerActions","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":414,"nodeType":"StructuredDocumentation","src":"228:205: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":421,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeProtocol","nodeType":"FunctionDefinition","parameters":{"id":419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"feeProtocol0","nodeType":"VariableDeclaration","scope":421,"src":"462:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":415,"name":"uint8","nodeType":"ElementaryTypeName","src":"462:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":418,"mutability":"mutable","name":"feeProtocol1","nodeType":"VariableDeclaration","scope":421,"src":"482:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":417,"name":"uint8","nodeType":"ElementaryTypeName","src":"482:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"461:40:7"},"returnParameters":{"id":420,"nodeType":"ParameterList","parameters":[],"src":"510:0:7"},"scope":436,"src":"438:73:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":422,"nodeType":"StructuredDocumentation","src":"517:483: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":435,"implemented":false,"kind":"function","modifiers":[],"name":"collectProtocol","nodeType":"FunctionDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":424,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":435,"src":"1039:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":423,"name":"address","nodeType":"ElementaryTypeName","src":"1039:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":426,"mutability":"mutable","name":"amount0Requested","nodeType":"VariableDeclaration","scope":435,"src":"1066:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":425,"name":"uint128","nodeType":"ElementaryTypeName","src":"1066:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":428,"mutability":"mutable","name":"amount1Requested","nodeType":"VariableDeclaration","scope":435,"src":"1100:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":427,"name":"uint128","nodeType":"ElementaryTypeName","src":"1100:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1029:101:7"},"returnParameters":{"id":434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":431,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":435,"src":"1149:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":430,"name":"uint128","nodeType":"ElementaryTypeName","src":"1149:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":433,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":435,"src":"1166:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":432,"name":"uint128","nodeType":"ElementaryTypeName","src":"1166:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1148:34:7"},"scope":436,"src":"1005:178:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":437,"src":"187:998:7"}],"src":"45:1141:7"},"id":7},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol","exportedSymbols":{"IAstraCLPoolState":[544]},"id":545,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":438,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:8"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":439,"nodeType":"StructuredDocumentation","src":"71:169: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":544,"linearizedBaseContracts":[544],"name":"IAstraCLPoolState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":440,"nodeType":"StructuredDocumentation","src":"274:1140: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":457,"implemented":false,"kind":"function","modifiers":[],"name":"slot0","nodeType":"FunctionDefinition","parameters":{"id":441,"nodeType":"ParameterList","parameters":[],"src":"1433:2:8"},"returnParameters":{"id":456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":443,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":457,"src":"1496:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":442,"name":"uint160","nodeType":"ElementaryTypeName","src":"1496:7:8","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":445,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":457,"src":"1530:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":444,"name":"int24","nodeType":"ElementaryTypeName","src":"1530:5:8","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":447,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","scope":457,"src":"1554:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":446,"name":"uint16","nodeType":"ElementaryTypeName","src":"1554:6:8","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"observationCardinality","nodeType":"VariableDeclaration","scope":457,"src":"1591:29:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":448,"name":"uint16","nodeType":"ElementaryTypeName","src":"1591:6:8","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":451,"mutability":"mutable","name":"observationCardinalityNext","nodeType":"VariableDeclaration","scope":457,"src":"1634:33:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":450,"name":"uint16","nodeType":"ElementaryTypeName","src":"1634:6:8","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":453,"mutability":"mutable","name":"feeProtocol","nodeType":"VariableDeclaration","scope":457,"src":"1681:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":452,"name":"uint8","nodeType":"ElementaryTypeName","src":"1681:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":455,"mutability":"mutable","name":"unlocked","nodeType":"VariableDeclaration","scope":457,"src":"1712:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":454,"name":"bool","nodeType":"ElementaryTypeName","src":"1712:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:253:8"},"scope":544,"src":"1419:317:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":458,"nodeType":"StructuredDocumentation","src":"1742:168: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":463,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal0X128","nodeType":"FunctionDefinition","parameters":{"id":459,"nodeType":"ParameterList","parameters":[],"src":"1944:2:8"},"returnParameters":{"id":462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":461,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":463,"src":"1970:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":460,"name":"uint256","nodeType":"ElementaryTypeName","src":"1970:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1969:9:8"},"scope":544,"src":"1915:64:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":464,"nodeType":"StructuredDocumentation","src":"1985:168: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":469,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal1X128","nodeType":"FunctionDefinition","parameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"2187:2:8"},"returnParameters":{"id":468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":467,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":469,"src":"2213:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":466,"name":"uint256","nodeType":"ElementaryTypeName","src":"2213:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2212:9:8"},"scope":544,"src":"2158:64:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":470,"nodeType":"StructuredDocumentation","src":"2228:147: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":477,"implemented":false,"kind":"function","modifiers":[],"name":"protocolFees","nodeType":"FunctionDefinition","parameters":{"id":471,"nodeType":"ParameterList","parameters":[],"src":"2401:2:8"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":477,"src":"2427:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":472,"name":"uint128","nodeType":"ElementaryTypeName","src":"2427:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":475,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":477,"src":"2443:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":474,"name":"uint128","nodeType":"ElementaryTypeName","src":"2443:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2426:32:8"},"scope":544,"src":"2380:79:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":478,"nodeType":"StructuredDocumentation","src":"2465:150: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":483,"implemented":false,"kind":"function","modifiers":[],"name":"liquidity","nodeType":"FunctionDefinition","parameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"2638:2:8"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":481,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":483,"src":"2664:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":480,"name":"uint128","nodeType":"ElementaryTypeName","src":"2664:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2663:9:8"},"scope":544,"src":"2620:53:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":484,"nodeType":"StructuredDocumentation","src":"2679:1244: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":505,"implemented":false,"kind":"function","modifiers":[],"name":"ticks","nodeType":"FunctionDefinition","parameters":{"id":487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":486,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":505,"src":"3952:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":485,"name":"int24","nodeType":"ElementaryTypeName","src":"3952:5:8","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3942:26:8"},"returnParameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":489,"mutability":"mutable","name":"liquidityGross","nodeType":"VariableDeclaration","scope":505,"src":"4029:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":488,"name":"uint128","nodeType":"ElementaryTypeName","src":"4029:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":491,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":505,"src":"4065:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":490,"name":"int128","nodeType":"ElementaryTypeName","src":"4065:6:8","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":493,"mutability":"mutable","name":"feeGrowthOutside0X128","nodeType":"VariableDeclaration","scope":505,"src":"4098:29:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":492,"name":"uint256","nodeType":"ElementaryTypeName","src":"4098:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":495,"mutability":"mutable","name":"feeGrowthOutside1X128","nodeType":"VariableDeclaration","scope":505,"src":"4141:29:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":494,"name":"uint256","nodeType":"ElementaryTypeName","src":"4141:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":497,"mutability":"mutable","name":"tickCumulativeOutside","nodeType":"VariableDeclaration","scope":505,"src":"4184:27:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":496,"name":"int56","nodeType":"ElementaryTypeName","src":"4184:5:8","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":499,"mutability":"mutable","name":"secondsPerLiquidityOutsideX128","nodeType":"VariableDeclaration","scope":505,"src":"4225:38:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":498,"name":"uint160","nodeType":"ElementaryTypeName","src":"4225:7:8","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":501,"mutability":"mutable","name":"secondsOutside","nodeType":"VariableDeclaration","scope":505,"src":"4277:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":500,"name":"uint32","nodeType":"ElementaryTypeName","src":"4277:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":503,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":505,"src":"4312:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":502,"name":"bool","nodeType":"ElementaryTypeName","src":"4312:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4015:323:8"},"scope":544,"src":"3928:411:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":506,"nodeType":"StructuredDocumentation","src":"4345:99:8","text":"@notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information"},"functionSelector":"5339c296","id":513,"implemented":false,"kind":"function","modifiers":[],"name":"tickBitmap","nodeType":"FunctionDefinition","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":508,"mutability":"mutable","name":"wordPosition","nodeType":"VariableDeclaration","scope":513,"src":"4469:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":507,"name":"int16","nodeType":"ElementaryTypeName","src":"4469:5:8","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"4468:20:8"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":513,"src":"4512:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"4512:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4511:9:8"},"scope":544,"src":"4449:72:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":514,"nodeType":"StructuredDocumentation","src":"4527:700: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":529,"implemented":false,"kind":"function","modifiers":[],"name":"positions","nodeType":"FunctionDefinition","parameters":{"id":517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":516,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":529,"src":"5260:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":515,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5260:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5250:27:8"},"returnParameters":{"id":528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"_liquidity","nodeType":"VariableDeclaration","scope":529,"src":"5338:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":518,"name":"uint128","nodeType":"ElementaryTypeName","src":"5338:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":521,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":529,"src":"5370:32:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":520,"name":"uint256","nodeType":"ElementaryTypeName","src":"5370:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":523,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":529,"src":"5416:32:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":522,"name":"uint256","nodeType":"ElementaryTypeName","src":"5416:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":525,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":529,"src":"5462:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":524,"name":"uint128","nodeType":"ElementaryTypeName","src":"5462:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":527,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":529,"src":"5495:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":526,"name":"uint128","nodeType":"ElementaryTypeName","src":"5495:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5324:200:8"},"scope":544,"src":"5232:293:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":530,"nodeType":"StructuredDocumentation","src":"5531:749: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"},"functionSelector":"252c09d7","id":543,"implemented":false,"kind":"function","modifiers":[],"name":"observations","nodeType":"FunctionDefinition","parameters":{"id":533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":532,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":543,"src":"6316:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":531,"name":"uint256","nodeType":"ElementaryTypeName","src":"6316:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6306:29:8"},"returnParameters":{"id":542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":535,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","scope":543,"src":"6396:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":534,"name":"uint32","nodeType":"ElementaryTypeName","src":"6396:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":537,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":543,"src":"6431:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":536,"name":"int56","nodeType":"ElementaryTypeName","src":"6431:5:8","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":539,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":543,"src":"6465:41:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":538,"name":"uint160","nodeType":"ElementaryTypeName","src":"6465:7:8","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":541,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":543,"src":"6520:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":540,"name":"bool","nodeType":"ElementaryTypeName","src":"6520:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6382:164:8"},"scope":544,"src":"6285:262:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":545,"src":"240:6309:8"}],"src":"45:6505:8"},"id":8},"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol","exportedSymbols":{"FixedPoint128":[551]},"id":552,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":546,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"45:24:9"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":547,"nodeType":"StructuredDocumentation","src":"71:140: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":551,"linearizedBaseContracts":[551],"name":"FixedPoint128","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":550,"mutability":"constant","name":"Q128","nodeType":"VariableDeclaration","scope":551,"src":"239:68:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":548,"name":"uint256","nodeType":"ElementaryTypeName","src":"239:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"272:35:9","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"visibility":"internal"}],"scope":552,"src":"211:99:9"}],"src":"45:266:9"},"id":9},"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol","exportedSymbols":{"FixedPoint96":[561]},"id":562,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":553,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"45:24:10"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":554,"nodeType":"StructuredDocumentation","src":"71:174: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":561,"linearizedBaseContracts":[561],"name":"FixedPoint96","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":557,"mutability":"constant","name":"RESOLUTION","nodeType":"VariableDeclaration","scope":561,"src":"272:39:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":555,"name":"uint8","nodeType":"ElementaryTypeName","src":"272:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3936","id":556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"309:2:10","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"visibility":"internal"},{"constant":true,"id":560,"mutability":"constant","name":"Q96","nodeType":"VariableDeclaration","scope":561,"src":"317:59:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":558,"name":"uint256","nodeType":"ElementaryTypeName","src":"317:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307831303030303030303030303030303030303030303030303030","id":559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"349:27:10","typeDescriptions":{"typeIdentifier":"t_rational_79228162514264337593543950336_by_1","typeString":"int_const 79228162514264337593543950336"},"value":"0x1000000000000000000000000"},"visibility":"internal"}],"scope":562,"src":"245:134:10"}],"src":"45:335:10"},"id":10},"@airdao/astra-cl-core/contracts/libraries/FullMath.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","exportedSymbols":{"FullMath":[734]},"id":735,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":563,"literals":["solidity",">=","0.4",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"32:31:11"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":564,"nodeType":"StructuredDocumentation","src":"65:297: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":734,"linearizedBaseContracts":[734],"name":"FullMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":689,"nodeType":"Block","src":"847:3648:11","statements":[{"assignments":[577],"declarations":[{"constant":false,"id":577,"mutability":"mutable","name":"prod0","nodeType":"VariableDeclaration","scope":689,"src":"1160:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":576,"name":"uint256","nodeType":"ElementaryTypeName","src":"1160:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":578,"nodeType":"VariableDeclarationStatement","src":"1160:13:11"},{"assignments":[580],"declarations":[{"constant":false,"id":580,"mutability":"mutable","name":"prod1","nodeType":"VariableDeclaration","scope":689,"src":"1228:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":579,"name":"uint256","nodeType":"ElementaryTypeName","src":"1228:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":581,"nodeType":"VariableDeclarationStatement","src":"1228:13:11"},{"AST":{"nodeType":"YulBlock","src":"1304:141:11","statements":[{"nodeType":"YulVariableDeclaration","src":"1318:30:11","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"1335:1:11"},{"name":"b","nodeType":"YulIdentifier","src":"1338:1:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1345:1:11","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1341:3:11"},"nodeType":"YulFunctionCall","src":"1341:6:11"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"1328:6:11"},"nodeType":"YulFunctionCall","src":"1328:20:11"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"1322:2:11","type":""}]},{"nodeType":"YulAssignment","src":"1361:18:11","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"1374:1:11"},{"name":"b","nodeType":"YulIdentifier","src":"1377:1:11"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1370:3:11"},"nodeType":"YulFunctionCall","src":"1370:9:11"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"1361:5:11"}]},{"nodeType":"YulAssignment","src":"1392:43:11","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"1409:2:11"},{"name":"prod0","nodeType":"YulIdentifier","src":"1413:5:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1405:3:11"},"nodeType":"YulFunctionCall","src":"1405:14:11"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"1424:2:11"},{"name":"prod0","nodeType":"YulIdentifier","src":"1428:5:11"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1421:2:11"},"nodeType":"YulFunctionCall","src":"1421:13:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1401:3:11"},"nodeType":"YulFunctionCall","src":"1401:34:11"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"1392:5:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":567,"isOffset":false,"isSlot":false,"src":"1335:1:11","valueSize":1},{"declaration":567,"isOffset":false,"isSlot":false,"src":"1374:1:11","valueSize":1},{"declaration":569,"isOffset":false,"isSlot":false,"src":"1338:1:11","valueSize":1},{"declaration":569,"isOffset":false,"isSlot":false,"src":"1377:1:11","valueSize":1},{"declaration":577,"isOffset":false,"isSlot":false,"src":"1361:5:11","valueSize":1},{"declaration":577,"isOffset":false,"isSlot":false,"src":"1413:5:11","valueSize":1},{"declaration":577,"isOffset":false,"isSlot":false,"src":"1428:5:11","valueSize":1},{"declaration":580,"isOffset":false,"isSlot":false,"src":"1392:5:11","valueSize":1}],"id":582,"nodeType":"InlineAssembly","src":"1295:150:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":583,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":580,"src":"1517:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1526:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1517:10:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":596,"nodeType":"IfStatement","src":"1513:179:11","trueBody":{"id":595,"nodeType":"Block","src":"1529:163:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"1551:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1565:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1551:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":586,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1543:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1543:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":591,"nodeType":"ExpressionStatement","src":"1543:24:11"},{"AST":{"nodeType":"YulBlock","src":"1590:65:11","statements":[{"nodeType":"YulAssignment","src":"1608:33:11","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"1622:5:11"},{"name":"denominator","nodeType":"YulIdentifier","src":"1629:11:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"1618:3:11"},"nodeType":"YulFunctionCall","src":"1618:23:11"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"1608:6:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":571,"isOffset":false,"isSlot":false,"src":"1629:11:11","valueSize":1},{"declaration":577,"isOffset":false,"isSlot":false,"src":"1622:5:11","valueSize":1},{"declaration":574,"isOffset":false,"isSlot":false,"src":"1608:6:11","valueSize":1}],"id":592,"nodeType":"InlineAssembly","src":"1581:74:11"},{"expression":{"id":593,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"1675:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":575,"id":594,"nodeType":"Return","src":"1668:13:11"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":598,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"1805:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":599,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":580,"src":"1819:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1805:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":597,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1797:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1797:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":602,"nodeType":"ExpressionStatement","src":"1797:28:11"},{"assignments":[604],"declarations":[{"constant":false,"id":604,"mutability":"mutable","name":"remainder","nodeType":"VariableDeclaration","scope":689,"src":"2102:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":603,"name":"uint256","nodeType":"ElementaryTypeName","src":"2102:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":605,"nodeType":"VariableDeclarationStatement","src":"2102:17:11"},{"AST":{"nodeType":"YulBlock","src":"2138:62:11","statements":[{"nodeType":"YulAssignment","src":"2152:38:11","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2172:1:11"},{"name":"b","nodeType":"YulIdentifier","src":"2175:1:11"},{"name":"denominator","nodeType":"YulIdentifier","src":"2178:11:11"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2165:6:11"},"nodeType":"YulFunctionCall","src":"2165:25:11"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"2152:9:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":567,"isOffset":false,"isSlot":false,"src":"2172:1:11","valueSize":1},{"declaration":569,"isOffset":false,"isSlot":false,"src":"2175:1:11","valueSize":1},{"declaration":571,"isOffset":false,"isSlot":false,"src":"2178:11:11","valueSize":1},{"declaration":604,"isOffset":false,"isSlot":false,"src":"2152:9:11","valueSize":1}],"id":606,"nodeType":"InlineAssembly","src":"2129:71:11"},{"AST":{"nodeType":"YulBlock","src":"2273:108:11","statements":[{"nodeType":"YulAssignment","src":"2287:41:11","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"2300:5:11"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"2310:9:11"},{"name":"prod0","nodeType":"YulIdentifier","src":"2321:5:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2307:2:11"},"nodeType":"YulFunctionCall","src":"2307:20:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2296:3:11"},"nodeType":"YulFunctionCall","src":"2296:32:11"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2287:5:11"}]},{"nodeType":"YulAssignment","src":"2341:30:11","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"2354:5:11"},{"name":"remainder","nodeType":"YulIdentifier","src":"2361:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2350:3:11"},"nodeType":"YulFunctionCall","src":"2350:21:11"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2341:5:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":577,"isOffset":false,"isSlot":false,"src":"2321:5:11","valueSize":1},{"declaration":577,"isOffset":false,"isSlot":false,"src":"2341:5:11","valueSize":1},{"declaration":577,"isOffset":false,"isSlot":false,"src":"2354:5:11","valueSize":1},{"declaration":580,"isOffset":false,"isSlot":false,"src":"2287:5:11","valueSize":1},{"declaration":580,"isOffset":false,"isSlot":false,"src":"2300:5:11","valueSize":1},{"declaration":604,"isOffset":false,"isSlot":false,"src":"2310:9:11","valueSize":1},{"declaration":604,"isOffset":false,"isSlot":false,"src":"2361:9:11","valueSize":1}],"id":607,"nodeType":"InlineAssembly","src":"2264:117:11"},{"assignments":[609],"declarations":[{"constant":false,"id":609,"mutability":"mutable","name":"twos","nodeType":"VariableDeclaration","scope":689,"src":"2530:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":608,"name":"uint256","nodeType":"ElementaryTypeName","src":"2530:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":614,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2545:12:11","subExpression":{"id":610,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"2546:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":612,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"2560:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2545:26:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2530:41:11"},{"AST":{"nodeType":"YulBlock","src":"2636:61:11","statements":[{"nodeType":"YulAssignment","src":"2650:37:11","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"2669:11:11"},{"name":"twos","nodeType":"YulIdentifier","src":"2682:4:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2665:3:11"},"nodeType":"YulFunctionCall","src":"2665:22:11"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"2650:11:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":571,"isOffset":false,"isSlot":false,"src":"2650:11:11","valueSize":1},{"declaration":571,"isOffset":false,"isSlot":false,"src":"2669:11:11","valueSize":1},{"declaration":609,"isOffset":false,"isSlot":false,"src":"2682:4:11","valueSize":1}],"id":615,"nodeType":"InlineAssembly","src":"2627:70:11"},{"AST":{"nodeType":"YulBlock","src":"2770:49:11","statements":[{"nodeType":"YulAssignment","src":"2784:25:11","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"2797:5:11"},{"name":"twos","nodeType":"YulIdentifier","src":"2804:4:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2793:3:11"},"nodeType":"YulFunctionCall","src":"2793:16:11"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2784:5:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":577,"isOffset":false,"isSlot":false,"src":"2784:5:11","valueSize":1},{"declaration":577,"isOffset":false,"isSlot":false,"src":"2797:5:11","valueSize":1},{"declaration":609,"isOffset":false,"isSlot":false,"src":"2804:4:11","valueSize":1}],"id":616,"nodeType":"InlineAssembly","src":"2761:58:11"},{"AST":{"nodeType":"YulBlock","src":"3007:63:11","statements":[{"nodeType":"YulAssignment","src":"3021:39:11","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3041:1:11","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"3044:4:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3037:3:11"},"nodeType":"YulFunctionCall","src":"3037:12:11"},{"name":"twos","nodeType":"YulIdentifier","src":"3051:4:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3033:3:11"},"nodeType":"YulFunctionCall","src":"3033:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"3058:1:11","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3029:3:11"},"nodeType":"YulFunctionCall","src":"3029:31:11"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"3021:4:11"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":609,"isOffset":false,"isSlot":false,"src":"3021:4:11","valueSize":1},{"declaration":609,"isOffset":false,"isSlot":false,"src":"3044:4:11","valueSize":1},{"declaration":609,"isOffset":false,"isSlot":false,"src":"3051:4:11","valueSize":1}],"id":617,"nodeType":"InlineAssembly","src":"2998:72:11"},{"expression":{"id":622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":577,"src":"3079:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":619,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":580,"src":"3088:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":620,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"3096:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3088:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3079:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":623,"nodeType":"ExpressionStatement","src":"3079:21:11"},{"assignments":[625],"declarations":[{"constant":false,"id":625,"mutability":"mutable","name":"inv","nodeType":"VariableDeclaration","scope":689,"src":"3434:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":624,"name":"uint256","nodeType":"ElementaryTypeName","src":"3434:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":632,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:11","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":627,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"3453:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3449:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":629,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3448:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3468:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3448:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3434:35:11"},{"expression":{"id":639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":633,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3684:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3691: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":637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":635,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"3695:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":636,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3709:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3695:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3691:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3684:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":640,"nodeType":"ExpressionStatement","src":"3684:28:11"},{"expression":{"id":647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":641,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3742:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3749: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":645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":643,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"3753:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":644,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3767:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3753:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3749:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3742:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":648,"nodeType":"ExpressionStatement","src":"3742:28:11"},{"expression":{"id":655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":649,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3801:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3808: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":653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":651,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"3812:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":652,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3826:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3812:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3808:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3801:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":656,"nodeType":"ExpressionStatement","src":"3801:28:11"},{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":657,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3860:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3867: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":661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":659,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"3871:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":660,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3885:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3871:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3867:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3860:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"3860:28:11"},{"expression":{"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":665,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3919:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3926: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":669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":667,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"3930:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":668,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3944:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3930:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3926:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3919:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":672,"nodeType":"ExpressionStatement","src":"3919:28:11"},{"expression":{"id":679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":673,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"3979:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3986: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":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":675,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"3990:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":676,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"4004:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3990:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3986:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3979:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":680,"nodeType":"ExpressionStatement","src":"3979:28:11"},{"expression":{"id":685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":681,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"4445:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":682,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":577,"src":"4454:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":683,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"4462:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4454:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4445:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":686,"nodeType":"ExpressionStatement","src":"4445:20:11"},{"expression":{"id":687,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"4482:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":575,"id":688,"nodeType":"Return","src":"4475:13:11"}]},"documentation":{"id":565,"nodeType":"StructuredDocumentation","src":"385:359: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":690,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nodeType":"FunctionDefinition","parameters":{"id":572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":567,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":690,"src":"765:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":566,"name":"uint256","nodeType":"ElementaryTypeName","src":"765:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":569,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":690,"src":"776:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":568,"name":"uint256","nodeType":"ElementaryTypeName","src":"776:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":571,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":690,"src":"787:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":570,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"764:43:11"},"returnParameters":{"id":575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":574,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":690,"src":"831:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":573,"name":"uint256","nodeType":"ElementaryTypeName","src":"831:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"830:16:11"},"scope":734,"src":"749:3746:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":732,"nodeType":"Block","src":"4885:177:11","statements":[{"expression":{"id":708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":702,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":700,"src":"4895:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":704,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"4911:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":705,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"4914:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":706,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"4917: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":703,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":690,"src":"4904: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":707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4904:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4895:34:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":709,"nodeType":"ExpressionStatement","src":"4895:34:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":711,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"4950:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":712,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"4953:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":713,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"4956: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":710,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"4943: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":714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4943:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4971:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4943:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":731,"nodeType":"IfStatement","src":"4939:117:11","trueBody":{"id":730,"nodeType":"Block","src":"4974:82:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":700,"src":"4996:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5010:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":720,"name":"uint256","nodeType":"ElementaryTypeName","src":"5010:7:11","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":719,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5005:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5005:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"5005:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4996:26:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":717,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4988:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4988:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":726,"nodeType":"ExpressionStatement","src":"4988:35:11"},{"expression":{"id":728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5037:8:11","subExpression":{"id":727,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":700,"src":"5037:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":729,"nodeType":"ExpressionStatement","src":"5037:8:11"}]}}]},"documentation":{"id":691,"nodeType":"StructuredDocumentation","src":"4501:271: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":733,"implemented":true,"kind":"function","modifiers":[],"name":"mulDivRoundingUp","nodeType":"FunctionDefinition","parameters":{"id":698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":693,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":733,"src":"4803:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":692,"name":"uint256","nodeType":"ElementaryTypeName","src":"4803:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":695,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":733,"src":"4814:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":694,"name":"uint256","nodeType":"ElementaryTypeName","src":"4814:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":697,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":733,"src":"4825:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":696,"name":"uint256","nodeType":"ElementaryTypeName","src":"4825:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4802:43:11"},"returnParameters":{"id":701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":700,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":733,"src":"4869:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":699,"name":"uint256","nodeType":"ElementaryTypeName","src":"4869:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4868:16:11"},"scope":734,"src":"4777:285:11","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":735,"src":"362:4702:11"}],"src":"32:5033:11"},"id":11},"@airdao/astra-cl-core/contracts/libraries/TickMath.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","exportedSymbols":{"TickMath":[1269]},"id":1270,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":736,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"45:31:12"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":737,"nodeType":"StructuredDocumentation","src":"78:235: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":1269,"linearizedBaseContracts":[1269],"name":"TickMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":738,"nodeType":"StructuredDocumentation","src":"336:108:12","text":"@dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128"},"id":742,"mutability":"constant","name":"MIN_TICK","nodeType":"VariableDeclaration","scope":1269,"src":"449:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":739,"name":"int24","nodeType":"ElementaryTypeName","src":"449:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"id":741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"484:7:12","subExpression":{"hexValue":"383837323732","id":740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"485: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":743,"nodeType":"StructuredDocumentation","src":"497:107:12","text":"@dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128"},"id":747,"mutability":"constant","name":"MAX_TICK","nodeType":"VariableDeclaration","scope":1269,"src":"609:44:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":744,"name":"int24","nodeType":"ElementaryTypeName","src":"609:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"id":746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"644:9:12","subExpression":{"id":745,"name":"MIN_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":742,"src":"645:8:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":true,"documentation":{"id":748,"nodeType":"StructuredDocumentation","src":"660:116:12","text":"@dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)"},"id":751,"mutability":"constant","name":"MIN_SQRT_RATIO","nodeType":"VariableDeclaration","scope":1269,"src":"781:53:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":749,"name":"uint160","nodeType":"ElementaryTypeName","src":"781:7:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"34323935313238373339","id":750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"824:10:12","typeDescriptions":{"typeIdentifier":"t_rational_4295128739_by_1","typeString":"int_const 4295128739"},"value":"4295128739"},"visibility":"internal"},{"constant":true,"documentation":{"id":752,"nodeType":"StructuredDocumentation","src":"840:116:12","text":"@dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)"},"id":755,"mutability":"constant","name":"MAX_SQRT_RATIO","nodeType":"VariableDeclaration","scope":1269,"src":"961:92:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":753,"name":"uint160","nodeType":"ElementaryTypeName","src":"961:7:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432","id":754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1004:49:12","typeDescriptions":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822378723970342_by_1","typeString":"int_const 1461...(41 digits omitted)...0342"},"value":"1461446703485210103287273052203988822378723970342"},"visibility":"internal"},{"body":{"id":1128,"nodeType":"Block","src":"1447:2495:12","statements":[{"assignments":[764],"declarations":[{"constant":false,"id":764,"mutability":"mutable","name":"absTick","nodeType":"VariableDeclaration","scope":1128,"src":"1457:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":763,"name":"uint256","nodeType":"ElementaryTypeName","src":"1457:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":784,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":765,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":758,"src":"1475:4:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1482:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1475:8:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":780,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":758,"src":"1526:4:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":779,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1519:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":778,"name":"int256","nodeType":"ElementaryTypeName","src":"1519:6:12","typeDescriptions":{}}},"id":781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1519:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1511:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":776,"name":"uint256","nodeType":"ElementaryTypeName","src":"1511:7:12","typeDescriptions":{}}},"id":782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1511:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1475:57:12","trueExpression":{"arguments":[{"id":774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1494:13:12","subExpression":{"arguments":[{"id":772,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":758,"src":"1502:4:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1495:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":770,"name":"int256","nodeType":"ElementaryTypeName","src":"1495:6:12","typeDescriptions":{}}},"id":773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1495:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1486:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":768,"name":"uint256","nodeType":"ElementaryTypeName","src":"1486:7:12","typeDescriptions":{}}},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1486:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1457:75:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":786,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"1550:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":789,"name":"MAX_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"1569:8:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1561:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":787,"name":"uint256","nodeType":"ElementaryTypeName","src":"1561:7:12","typeDescriptions":{}}},"id":790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1561:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1550:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"54","id":792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1580: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":785,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1542:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1542:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":794,"nodeType":"ExpressionStatement","src":"1542:42:12"},{"assignments":[796],"declarations":[{"constant":false,"id":796,"mutability":"mutable","name":"ratio","nodeType":"VariableDeclaration","scope":1128,"src":"1595:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":795,"name":"uint256","nodeType":"ElementaryTypeName","src":"1595:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":805,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":797,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"1611:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831","id":798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1621:3:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x1"},"src":"1611:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1628:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1611:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1669:35:12","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1611:93:12","trueExpression":{"hexValue":"30786666666362393333626436666164333761613264313632643161353934303031","id":802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632: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":"1595:109:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":806,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"1718:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307832","id":807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1728:3:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x2"},"src":"1718:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1718:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":820,"nodeType":"IfStatement","src":"1714:83:12","trueBody":{"expression":{"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":811,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"1738:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":812,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"1747:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666663937323732333733643431333235396134363939303538306532313361","id":813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1755:34:12","typeDescriptions":{"typeIdentifier":"t_rational_340248342086729790484326174814286782778_by_1","typeString":"int_const 3402...(31 digits omitted)...2778"},"value":"0xfff97272373d413259a46990580e213a"},"src":"1747:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":815,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1746:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1794:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1746:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1738:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":819,"nodeType":"ExpressionStatement","src":"1738:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":821,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"1811:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307834","id":822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1821:3:12","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"src":"1811:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1828:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1811:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":835,"nodeType":"IfStatement","src":"1807:83:12","trueBody":{"expression":{"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":826,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"1831:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":827,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"1840:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666663265353066356636353639333265663132333537636633633766646363","id":828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1848:34:12","typeDescriptions":{"typeIdentifier":"t_rational_340214320654664324051920982716015181260_by_1","typeString":"int_const 3402...(31 digits omitted)...1260"},"value":"0xfff2e50f5f656932ef12357cf3c7fdcc"},"src":"1840:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":830,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1839:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1887:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1839:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1831:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":834,"nodeType":"ExpressionStatement","src":"1831:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":836,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"1904:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307838","id":837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1914:3:12","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x8"},"src":"1904:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1921:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1904:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":850,"nodeType":"IfStatement","src":"1900:83:12","trueBody":{"expression":{"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":841,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"1924:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":842,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"1933:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666653563616361376531306534653631633336323465616130393431636430","id":843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1941:34:12","typeDescriptions":{"typeIdentifier":"t_rational_340146287995602323631171512101879684304_by_1","typeString":"int_const 3401...(31 digits omitted)...4304"},"value":"0xffe5caca7e10e4e61c3624eaa0941cd0"},"src":"1933:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1932:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1980:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1932:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1924:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":849,"nodeType":"ExpressionStatement","src":"1924:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":851,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"1997:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2007:4:12","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"1997:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2015:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1997:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":865,"nodeType":"IfStatement","src":"1993:84:12","trueBody":{"expression":{"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":856,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2018:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":857,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2027:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666636239383433643630663631353963396462353838333563393236363434","id":858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2035:34:12","typeDescriptions":{"typeIdentifier":"t_rational_340010263488231146823593991679159461444_by_1","typeString":"int_const 3400...(31 digits omitted)...1444"},"value":"0xffcb9843d60f6159c9db58835c926644"},"src":"2027:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":860,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2026:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2074:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2026:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2018:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":864,"nodeType":"ExpressionStatement","src":"2018:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":866,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"2091:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2101:4:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"2091:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2109:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2091:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":880,"nodeType":"IfStatement","src":"2087:84:12","trueBody":{"expression":{"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":871,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2112:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":872,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2121:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666393733623431666139386330383134373265363839366466623235346330","id":873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2129:34:12","typeDescriptions":{"typeIdentifier":"t_rational_339738377640345403697157401104375502016_by_1","typeString":"int_const 3397...(31 digits omitted)...2016"},"value":"0xff973b41fa98c081472e6896dfb254c0"},"src":"2121:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":875,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2120:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2168:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2120:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2112:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":879,"nodeType":"ExpressionStatement","src":"2112:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":881,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"2185:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430","id":882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2195:4:12","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"src":"2185:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2203:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2185:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":895,"nodeType":"IfStatement","src":"2181:84:12","trueBody":{"expression":{"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":886,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2206:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":887,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2215:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666326561313634363663393661333834336563373862333236623532383631","id":888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2223:34:12","typeDescriptions":{"typeIdentifier":"t_rational_339195258003219555707034227454543997025_by_1","typeString":"int_const 3391...(31 digits omitted)...7025"},"value":"0xff2ea16466c96a3843ec78b326b52861"},"src":"2215:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":890,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2214:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2262:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2214:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2206:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":894,"nodeType":"ExpressionStatement","src":"2206:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":896,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"2279:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830","id":897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2289:4:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"src":"2279:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2279:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":910,"nodeType":"IfStatement","src":"2275:84:12","trueBody":{"expression":{"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":901,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2300:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":902,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2309:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786665356465653034366139396132613831316334363166313936396333303533","id":903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2317:34:12","typeDescriptions":{"typeIdentifier":"t_rational_338111622100601834656805679988414885971_by_1","typeString":"int_const 3381...(31 digits omitted)...5971"},"value":"0xfe5dee046a99a2a811c461f1969c3053"},"src":"2309:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":905,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2308:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2356:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2308:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2300:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":909,"nodeType":"ExpressionStatement","src":"2300:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":911,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"2373:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078313030","id":912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2383:5:12","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"src":"2373:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2392:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2373:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":925,"nodeType":"IfStatement","src":"2369:85:12","trueBody":{"expression":{"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":916,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2395:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":917,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2404:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786663626538366337393030613838616564636666633833623437396161336134","id":918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2412:34:12","typeDescriptions":{"typeIdentifier":"t_rational_335954724994790223023589805789778977700_by_1","typeString":"int_const 3359...(31 digits omitted)...7700"},"value":"0xfcbe86c7900a88aedcffc83b479aa3a4"},"src":"2404:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":920,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2403:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2451:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2403:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2395:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":924,"nodeType":"ExpressionStatement","src":"2395:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":926,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"2468:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078323030","id":927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2478:5:12","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"src":"2468:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2487:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2468:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":940,"nodeType":"IfStatement","src":"2464:85:12","trueBody":{"expression":{"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":931,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2490:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":932,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2499:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786639383761373235336163343133313736663262303734636637383135653534","id":933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2507:34:12","typeDescriptions":{"typeIdentifier":"t_rational_331682121138379247127172139078559817300_by_1","typeString":"int_const 3316...(31 digits omitted)...7300"},"value":"0xf987a7253ac413176f2b074cf7815e54"},"src":"2499:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":935,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2498:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2546:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2498:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2490:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":939,"nodeType":"ExpressionStatement","src":"2490:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":941,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"2563:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078343030","id":942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2573:5:12","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"},"value":"0x400"},"src":"2563:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2582:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2563:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":955,"nodeType":"IfStatement","src":"2559:85:12","trueBody":{"expression":{"id":953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":946,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2585:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":947,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2594:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786633333932623038323262373030303539343063376133393865346237306633","id":948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2602:34:12","typeDescriptions":{"typeIdentifier":"t_rational_323299236684853023288211250268160618739_by_1","typeString":"int_const 3232...(31 digits omitted)...8739"},"value":"0xf3392b0822b70005940c7a398e4b70f3"},"src":"2594:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":950,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2593:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2641:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2593:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2585:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":954,"nodeType":"ExpressionStatement","src":"2585:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":956,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"2658:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078383030","id":957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2668:5:12","typeDescriptions":{"typeIdentifier":"t_rational_2048_by_1","typeString":"int_const 2048"},"value":"0x800"},"src":"2658:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2677:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2658:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":970,"nodeType":"IfStatement","src":"2654:85:12","trueBody":{"expression":{"id":968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":961,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2680:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":962,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2689:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786537313539343735613263323962373434336232396337666136653838396439","id":963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2697:34:12","typeDescriptions":{"typeIdentifier":"t_rational_307163716377032989948697243942600083929_by_1","typeString":"int_const 3071...(31 digits omitted)...3929"},"value":"0xe7159475a2c29b7443b29c7fa6e889d9"},"src":"2689:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":965,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2688:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2736:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2688:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2680:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":969,"nodeType":"ExpressionStatement","src":"2680:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":971,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"2753:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831303030","id":972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2763:6:12","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"},"value":"0x1000"},"src":"2753:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2773:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2753:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":985,"nodeType":"IfStatement","src":"2749:86:12","trueBody":{"expression":{"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":976,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2776:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":977,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2785:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786430393766336264666432303232623838343561643866373932616135383235","id":978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2793:34:12","typeDescriptions":{"typeIdentifier":"t_rational_277268403626896220162999269216087595045_by_1","typeString":"int_const 2772...(31 digits omitted)...5045"},"value":"0xd097f3bdfd2022b8845ad8f792aa5825"},"src":"2785:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":980,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2784:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2832:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2784:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2776:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":984,"nodeType":"ExpressionStatement","src":"2776:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":986,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"2849:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307832303030","id":987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2859:6:12","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"},"value":"0x2000"},"src":"2849:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2869:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2849:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1000,"nodeType":"IfStatement","src":"2845:86:12","trueBody":{"expression":{"id":998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":991,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2872:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":992,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2881:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786139663734363436326438373066646638613635646331663930653036316535","id":993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2889:34:12","typeDescriptions":{"typeIdentifier":"t_rational_225923453940442621947126027127485391333_by_1","typeString":"int_const 2259...(31 digits omitted)...1333"},"value":"0xa9f746462d870fdf8a65dc1f90e061e5"},"src":"2881:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":995,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2880:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2928:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2880:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2872:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":999,"nodeType":"ExpressionStatement","src":"2872:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1001,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"2945:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307834303030","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2955:6:12","typeDescriptions":{"typeIdentifier":"t_rational_16384_by_1","typeString":"int_const 16384"},"value":"0x4000"},"src":"2945:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2965:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2945:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1015,"nodeType":"IfStatement","src":"2941:86:12","trueBody":{"expression":{"id":1013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1006,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2968:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1007,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2977:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783730643836396131353664326131623839306262336466363262616633326637","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2985:34:12","typeDescriptions":{"typeIdentifier":"t_rational_149997214084966997727330242082538205943_by_1","typeString":"int_const 1499...(31 digits omitted)...5943"},"value":"0x70d869a156d2a1b890bb3df62baf32f7"},"src":"2977:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1010,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2976:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3024:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2976:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2968:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1014,"nodeType":"ExpressionStatement","src":"2968:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1016,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"3041:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307838303030","id":1017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3051:6:12","typeDescriptions":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"},"value":"0x8000"},"src":"3041:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3061:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3041:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1030,"nodeType":"IfStatement","src":"3037:86:12","trueBody":{"expression":{"id":1028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1021,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3064:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1022,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3073:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783331626531333566393764303866643938313233313530353534326663666136","id":1023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3081:34:12","typeDescriptions":{"typeIdentifier":"t_rational_66119101136024775622716233608466517926_by_1","typeString":"int_const 6611...(30 digits omitted)...7926"},"value":"0x31be135f97d08fd981231505542fcfa6"},"src":"3073:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1025,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3072:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3120:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3072:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3064:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1029,"nodeType":"ExpressionStatement","src":"3064:59:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1031,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"3137:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130303030","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:7:12","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"value":"0x10000"},"src":"3137:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3158:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3137:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1045,"nodeType":"IfStatement","src":"3133:86:12","trueBody":{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1036,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3161:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1037,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3170:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"307839616135303862356237613834653163363737646535346633653939626339","id":1038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3178:33:12","typeDescriptions":{"typeIdentifier":"t_rational_12847376061809297530290974190478138313_by_1","typeString":"int_const 1284...(30 digits omitted)...8313"},"value":"0x9aa508b5b7a84e1c677de54f3e99bc9"},"src":"3170:41:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1040,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3169:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3216:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3169:50:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3161:58:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"3161:58:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1046,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"3233:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230303030","id":1047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3243:7:12","typeDescriptions":{"typeIdentifier":"t_rational_131072_by_1","typeString":"int_const 131072"},"value":"0x20000"},"src":"3233:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3254:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3233:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1060,"nodeType":"IfStatement","src":"3229:85:12","trueBody":{"expression":{"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1051,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3257:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1052,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3266:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3078356436616638646564623831313936363939633332393232356565363034","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3274:32:12","typeDescriptions":{"typeIdentifier":"t_rational_485053260817066172746253684029974020_by_1","typeString":"int_const 4850...(28 digits omitted)...4020"},"value":"0x5d6af8dedb81196699c329225ee604"},"src":"3266:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1055,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3265:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3311:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3265:49:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3257:57:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1059,"nodeType":"ExpressionStatement","src":"3257:57:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1061,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"3328:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430303030","id":1062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3338:7:12","typeDescriptions":{"typeIdentifier":"t_rational_262144_by_1","typeString":"int_const 262144"},"value":"0x40000"},"src":"3328:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3349:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3328:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1075,"nodeType":"IfStatement","src":"3324:83:12","trueBody":{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1066,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3352:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1067,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3361:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"307832323136653538346635666131656139323630343162656466653938","id":1068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3369:30:12","typeDescriptions":{"typeIdentifier":"t_rational_691415978906521570653435304214168_by_1","typeString":"int_const 6914...(25 digits omitted)...4168"},"value":"0x2216e584f5fa1ea926041bedfe98"},"src":"3361:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1070,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3360:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3404:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3360:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3352:55:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"3352:55:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1076,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"3421:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830303030","id":1077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3431:7:12","typeDescriptions":{"typeIdentifier":"t_rational_524288_by_1","typeString":"int_const 524288"},"value":"0x80000"},"src":"3421:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3442:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3421:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1090,"nodeType":"IfStatement","src":"3417:78:12","trueBody":{"expression":{"id":1088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1081,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3445:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1082,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3454:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783438613137303339316637646334323434346538666132","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:25:12","typeDescriptions":{"typeIdentifier":"t_rational_1404880482679654955896180642_by_1","typeString":"int_const 1404880482679654955896180642"},"value":"0x48a170391f7dc42444e8fa2"},"src":"3454:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1085,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3453:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3492:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3453:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3445:50:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1089,"nodeType":"ExpressionStatement","src":"3445:50:12"}},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1091,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":758,"src":"3510:4:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3517:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3510:8:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1104,"nodeType":"IfStatement","src":"3506:47:12","trueBody":{"expression":{"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1094,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3520: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":{"expression":{"arguments":[{"id":1097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3533:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1096,"name":"uint256","nodeType":"ElementaryTypeName","src":"3533:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1095,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3528:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3528:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3528:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1100,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3548:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3528:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3520:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1103,"nodeType":"ExpressionStatement","src":"3520:33:12"}},{"expression":{"id":1126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1105,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":761,"src":"3863:12:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1108,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3887:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3896:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3887:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1111,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3886:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1112,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3903: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":1115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3912:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":1114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3917:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3912:7:12","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":1116,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3911:9:12","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"3903:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3924:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3903:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"31","id":1121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3932:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3903:30:12","trueExpression":{"hexValue":"30","id":1120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3928:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1123,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3902:32:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3886:48:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3878:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1106,"name":"uint160","nodeType":"ElementaryTypeName","src":"3878:7:12","typeDescriptions":{}}},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3878:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3863:72:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":1127,"nodeType":"ExpressionStatement","src":"3863:72:12"}]},"documentation":{"id":756,"nodeType":"StructuredDocumentation","src":"1060:297: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":1129,"implemented":true,"kind":"function","modifiers":[],"name":"getSqrtRatioAtTick","nodeType":"FunctionDefinition","parameters":{"id":759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":758,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1129,"src":"1390:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":757,"name":"int24","nodeType":"ElementaryTypeName","src":"1390:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1389:12:12"},"returnParameters":{"id":762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":761,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":1129,"src":"1425:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":760,"name":"uint160","nodeType":"ElementaryTypeName","src":"1425:7:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1424:22:12"},"scope":1269,"src":"1362:2580:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1267,"nodeType":"Block","src":"4446:4252:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1138,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"4563:12:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1139,"name":"MIN_SQRT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":751,"src":"4579:14:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4563:30:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1141,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"4597:12:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1142,"name":"MAX_SQRT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"4612:14:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4597:29:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4563:63:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52","id":1145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4628: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":1137,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4555:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4555:77:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1147,"nodeType":"ExpressionStatement","src":"4555:77:12"},{"assignments":[1149],"declarations":[{"constant":false,"id":1149,"mutability":"mutable","name":"ratio","nodeType":"VariableDeclaration","scope":1267,"src":"4642:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1148,"name":"uint256","nodeType":"ElementaryTypeName","src":"4642:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1156,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1152,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"4666:12:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4658:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"4658:7:12","typeDescriptions":{}}},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4658:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":1154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4683:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"4658:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4642:43:12"},{"assignments":[1158],"declarations":[{"constant":false,"id":1158,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":1267,"src":"4696:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1157,"name":"uint256","nodeType":"ElementaryTypeName","src":"4696:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1160,"initialValue":{"id":1159,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"4708:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4696:17:12"},{"assignments":[1162],"declarations":[{"constant":false,"id":1162,"mutability":"mutable","name":"msb","nodeType":"VariableDeclaration","scope":1267,"src":"4723:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1161,"name":"uint256","nodeType":"ElementaryTypeName","src":"4723:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1164,"initialValue":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4737:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4723:15:12"},{"AST":{"nodeType":"YulBlock","src":"4758:139:12","statements":[{"nodeType":"YulVariableDeclaration","src":"4772:58:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4785:1:12","type":"","value":"7"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"4791:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"4794:34:12","type":"","value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4788:2:12"},"nodeType":"YulFunctionCall","src":"4788:41:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4781:3:12"},"nodeType":"YulFunctionCall","src":"4781:49:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"4776:1:12","type":""}]},{"nodeType":"YulAssignment","src":"4843:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"4853:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"4858:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4850:2:12"},"nodeType":"YulFunctionCall","src":"4850:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"4843:3:12"}]},{"nodeType":"YulAssignment","src":"4873:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"4882:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"4885:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4878:3:12"},"nodeType":"YulFunctionCall","src":"4878:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"4873:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1162,"isOffset":false,"isSlot":false,"src":"4843:3:12","valueSize":1},{"declaration":1162,"isOffset":false,"isSlot":false,"src":"4853:3:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"4791:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"4873:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"4885:1:12","valueSize":1}],"id":1165,"nodeType":"InlineAssembly","src":"4749:148:12"},{"AST":{"nodeType":"YulBlock","src":"4915:123:12","statements":[{"nodeType":"YulVariableDeclaration","src":"4929:42:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4942:1:12","type":"","value":"6"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"4948:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"4951:18:12","type":"","value":"0xFFFFFFFFFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4945:2:12"},"nodeType":"YulFunctionCall","src":"4945:25:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4938:3:12"},"nodeType":"YulFunctionCall","src":"4938:33:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"4933:1:12","type":""}]},{"nodeType":"YulAssignment","src":"4984:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"4994:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"4999:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4991:2:12"},"nodeType":"YulFunctionCall","src":"4991:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"4984:3:12"}]},{"nodeType":"YulAssignment","src":"5014:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5023:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5026:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5019:3:12"},"nodeType":"YulFunctionCall","src":"5019:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5014:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1162,"isOffset":false,"isSlot":false,"src":"4984:3:12","valueSize":1},{"declaration":1162,"isOffset":false,"isSlot":false,"src":"4994:3:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"4948:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5014:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5026:1:12","valueSize":1}],"id":1166,"nodeType":"InlineAssembly","src":"4906:132:12"},{"AST":{"nodeType":"YulBlock","src":"5056:115:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5070:34:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5083:1:12","type":"","value":"5"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5089:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5092:10:12","type":"","value":"0xFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5086:2:12"},"nodeType":"YulFunctionCall","src":"5086:17:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5079:3:12"},"nodeType":"YulFunctionCall","src":"5079:25:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5074:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5117:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5127:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5132:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5124:2:12"},"nodeType":"YulFunctionCall","src":"5124:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5117:3:12"}]},{"nodeType":"YulAssignment","src":"5147:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5156:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5159:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5152:3:12"},"nodeType":"YulFunctionCall","src":"5152:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5147:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5117:3:12","valueSize":1},{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5127:3:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5089:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5147:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5159:1:12","valueSize":1}],"id":1167,"nodeType":"InlineAssembly","src":"5047:124:12"},{"AST":{"nodeType":"YulBlock","src":"5189:111:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5203:30:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5216:1:12","type":"","value":"4"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5222:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5225:6:12","type":"","value":"0xFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5219:2:12"},"nodeType":"YulFunctionCall","src":"5219:13:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5212:3:12"},"nodeType":"YulFunctionCall","src":"5212:21:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5207:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5246:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5256:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5261:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5253:2:12"},"nodeType":"YulFunctionCall","src":"5253:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5246:3:12"}]},{"nodeType":"YulAssignment","src":"5276:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5285:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5288:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5281:3:12"},"nodeType":"YulFunctionCall","src":"5281:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5276:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5246:3:12","valueSize":1},{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5256:3:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5222:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5276:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5288:1:12","valueSize":1}],"id":1168,"nodeType":"InlineAssembly","src":"5180:120:12"},{"AST":{"nodeType":"YulBlock","src":"5318:109:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5332:28:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5345:1:12","type":"","value":"3"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5351:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5354:4:12","type":"","value":"0xFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5348:2:12"},"nodeType":"YulFunctionCall","src":"5348:11:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5341:3:12"},"nodeType":"YulFunctionCall","src":"5341:19:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5336:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5373:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5383:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5388:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5380:2:12"},"nodeType":"YulFunctionCall","src":"5380:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5373:3:12"}]},{"nodeType":"YulAssignment","src":"5403:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5412:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5415:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5408:3:12"},"nodeType":"YulFunctionCall","src":"5408:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5403:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5373:3:12","valueSize":1},{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5383:3:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5351:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5403:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5415:1:12","valueSize":1}],"id":1169,"nodeType":"InlineAssembly","src":"5309:118:12"},{"AST":{"nodeType":"YulBlock","src":"5445:108:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5459:27:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5472:1:12","type":"","value":"2"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5478:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5481:3:12","type":"","value":"0xF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5475:2:12"},"nodeType":"YulFunctionCall","src":"5475:10:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5468:3:12"},"nodeType":"YulFunctionCall","src":"5468:18:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5463:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5499:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5509:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5514:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5506:2:12"},"nodeType":"YulFunctionCall","src":"5506:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5499:3:12"}]},{"nodeType":"YulAssignment","src":"5529:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5538:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5541:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5534:3:12"},"nodeType":"YulFunctionCall","src":"5534:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5529:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5499:3:12","valueSize":1},{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5509:3:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5478:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5529:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5541:1:12","valueSize":1}],"id":1170,"nodeType":"InlineAssembly","src":"5436:117:12"},{"AST":{"nodeType":"YulBlock","src":"5571:108:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5585:27:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5598:1:12","type":"","value":"1"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5604:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5607:3:12","type":"","value":"0x3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5601:2:12"},"nodeType":"YulFunctionCall","src":"5601:10:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5594:3:12"},"nodeType":"YulFunctionCall","src":"5594:18:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5589:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5625:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5635:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5640:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5632:2:12"},"nodeType":"YulFunctionCall","src":"5632:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5625:3:12"}]},{"nodeType":"YulAssignment","src":"5655:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5664:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5667:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5660:3:12"},"nodeType":"YulFunctionCall","src":"5660:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5655:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5625:3:12","valueSize":1},{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5635:3:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5604:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5655:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5667:1:12","valueSize":1}],"id":1171,"nodeType":"InlineAssembly","src":"5562:117:12"},{"AST":{"nodeType":"YulBlock","src":"5697:73:12","statements":[{"nodeType":"YulVariableDeclaration","src":"5711:19:12","value":{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5723:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"5726:3:12","type":"","value":"0x1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5720:2:12"},"nodeType":"YulFunctionCall","src":"5720:10:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5715:1:12","type":""}]},{"nodeType":"YulAssignment","src":"5743:17:12","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5753:3:12"},{"name":"f","nodeType":"YulIdentifier","src":"5758:1:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5750:2:12"},"nodeType":"YulFunctionCall","src":"5750:10:12"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5743:3:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5743:3:12","valueSize":1},{"declaration":1162,"isOffset":false,"isSlot":false,"src":"5753:3:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5723:1:12","valueSize":1}],"id":1172,"nodeType":"InlineAssembly","src":"5688:82:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1173,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"5784:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"313238","id":1174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5791:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5784:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1185,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1158,"src":"5835:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1186,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"5839:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313237","id":1187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5849:3:12","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1188,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"5855:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5849:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5848:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5839:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5835:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1193,"nodeType":"ExpressionStatement","src":"5835:24:12"},"id":1194,"nodeType":"IfStatement","src":"5780:79:12","trueBody":{"expression":{"id":1183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1176,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1158,"src":"5796:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1177,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"5800:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1178,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"5810:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"313237","id":1179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5816:3:12","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"src":"5810:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1181,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5809:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5800:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5796:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1184,"nodeType":"ExpressionStatement","src":"5796:24:12"}},{"assignments":[1196],"declarations":[{"constant":false,"id":1196,"mutability":"mutable","name":"log_2","nodeType":"VariableDeclaration","scope":1267,"src":"5870:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1195,"name":"int256","nodeType":"ElementaryTypeName","src":"5870:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1206,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1199,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"5893:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5886:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1197,"name":"int256","nodeType":"ElementaryTypeName","src":"5886:6:12","typeDescriptions":{}}},"id":1200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5886:11:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"313238","id":1201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5900:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5886:17:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1203,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5885:19:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":1204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5908:2:12","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"5885:25:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5870:40:12"},{"AST":{"nodeType":"YulBlock","src":"5930:151:12","statements":[{"nodeType":"YulAssignment","src":"5944:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5953:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5962:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"5965:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5958:3:12"},"nodeType":"YulFunctionCall","src":"5958:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5949:3:12"},"nodeType":"YulFunctionCall","src":"5949:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5944:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"5981:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5994:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"5999:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5990:3:12"},"nodeType":"YulFunctionCall","src":"5990:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5985:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6014:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6026:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6037:2:12","type":"","value":"63"},{"name":"f","nodeType":"YulIdentifier","src":"6041:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6033:3:12"},"nodeType":"YulFunctionCall","src":"6033:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6023:2:12"},"nodeType":"YulFunctionCall","src":"6023:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6014:5:12"}]},{"nodeType":"YulAssignment","src":"6057:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6066:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6069:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6062:3:12"},"nodeType":"YulFunctionCall","src":"6062:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6057:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6014:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6026:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5944:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5962:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5965:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"5999:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6057:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6069:1:12","valueSize":1}],"id":1207,"nodeType":"InlineAssembly","src":"5921:160:12"},{"AST":{"nodeType":"YulBlock","src":"6099:151:12","statements":[{"nodeType":"YulAssignment","src":"6113:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6122:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6131:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6134:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6127:3:12"},"nodeType":"YulFunctionCall","src":"6127:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6118:3:12"},"nodeType":"YulFunctionCall","src":"6118:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6113:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6150:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6163:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6168:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6159:3:12"},"nodeType":"YulFunctionCall","src":"6159:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6154:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6183:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6195:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6206:2:12","type":"","value":"62"},{"name":"f","nodeType":"YulIdentifier","src":"6210:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6202:3:12"},"nodeType":"YulFunctionCall","src":"6202:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6192:2:12"},"nodeType":"YulFunctionCall","src":"6192:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6183:5:12"}]},{"nodeType":"YulAssignment","src":"6226:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6235:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6238:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6231:3:12"},"nodeType":"YulFunctionCall","src":"6231:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6226:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6183:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6195:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6113:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6131:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6134:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6168:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6226:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6238:1:12","valueSize":1}],"id":1208,"nodeType":"InlineAssembly","src":"6090:160:12"},{"AST":{"nodeType":"YulBlock","src":"6268:151:12","statements":[{"nodeType":"YulAssignment","src":"6282:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6291:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6300:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6303:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6296:3:12"},"nodeType":"YulFunctionCall","src":"6296:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6287:3:12"},"nodeType":"YulFunctionCall","src":"6287:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6282:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6319:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6332:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6337:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6328:3:12"},"nodeType":"YulFunctionCall","src":"6328:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6323:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6352:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6364:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6375:2:12","type":"","value":"61"},{"name":"f","nodeType":"YulIdentifier","src":"6379:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6371:3:12"},"nodeType":"YulFunctionCall","src":"6371:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6361:2:12"},"nodeType":"YulFunctionCall","src":"6361:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6352:5:12"}]},{"nodeType":"YulAssignment","src":"6395:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6404:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6407:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6400:3:12"},"nodeType":"YulFunctionCall","src":"6400:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6395:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6352:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6364:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6282:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6300:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6303:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6337:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6395:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6407:1:12","valueSize":1}],"id":1209,"nodeType":"InlineAssembly","src":"6259:160:12"},{"AST":{"nodeType":"YulBlock","src":"6437:151:12","statements":[{"nodeType":"YulAssignment","src":"6451:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6460:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6469:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6472:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6465:3:12"},"nodeType":"YulFunctionCall","src":"6465:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6456:3:12"},"nodeType":"YulFunctionCall","src":"6456:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6451:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6488:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6501:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6506:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6497:3:12"},"nodeType":"YulFunctionCall","src":"6497:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6492:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6521:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6533:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6544:2:12","type":"","value":"60"},{"name":"f","nodeType":"YulIdentifier","src":"6548:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6540:3:12"},"nodeType":"YulFunctionCall","src":"6540:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6530:2:12"},"nodeType":"YulFunctionCall","src":"6530:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6521:5:12"}]},{"nodeType":"YulAssignment","src":"6564:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6573:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6576:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6569:3:12"},"nodeType":"YulFunctionCall","src":"6569:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6564:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6521:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6533:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6451:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6469:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6472:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6506:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6564:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6576:1:12","valueSize":1}],"id":1210,"nodeType":"InlineAssembly","src":"6428:160:12"},{"AST":{"nodeType":"YulBlock","src":"6606:151:12","statements":[{"nodeType":"YulAssignment","src":"6620:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6629:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6638:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6641:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6634:3:12"},"nodeType":"YulFunctionCall","src":"6634:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6625:3:12"},"nodeType":"YulFunctionCall","src":"6625:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6620:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6657:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6670:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6675:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6666:3:12"},"nodeType":"YulFunctionCall","src":"6666:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6661:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6690:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6702:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6713:2:12","type":"","value":"59"},{"name":"f","nodeType":"YulIdentifier","src":"6717:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6709:3:12"},"nodeType":"YulFunctionCall","src":"6709:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6699:2:12"},"nodeType":"YulFunctionCall","src":"6699:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6690:5:12"}]},{"nodeType":"YulAssignment","src":"6733:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6742:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6745:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6738:3:12"},"nodeType":"YulFunctionCall","src":"6738:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6733:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6690:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6702:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6620:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6638:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6641:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6675:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6733:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6745:1:12","valueSize":1}],"id":1211,"nodeType":"InlineAssembly","src":"6597:160:12"},{"AST":{"nodeType":"YulBlock","src":"6775:151:12","statements":[{"nodeType":"YulAssignment","src":"6789:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6798:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6807:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6810:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6803:3:12"},"nodeType":"YulFunctionCall","src":"6803:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6794:3:12"},"nodeType":"YulFunctionCall","src":"6794:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6789:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6826:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6839:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6844:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6835:3:12"},"nodeType":"YulFunctionCall","src":"6835:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6830:1:12","type":""}]},{"nodeType":"YulAssignment","src":"6859:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6871:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6882:2:12","type":"","value":"58"},{"name":"f","nodeType":"YulIdentifier","src":"6886:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6878:3:12"},"nodeType":"YulFunctionCall","src":"6878:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6868:2:12"},"nodeType":"YulFunctionCall","src":"6868:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6859:5:12"}]},{"nodeType":"YulAssignment","src":"6902:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6911:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6914:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6907:3:12"},"nodeType":"YulFunctionCall","src":"6907:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6902:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6859:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"6871:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6789:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6807:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6810:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6844:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6902:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6914:1:12","valueSize":1}],"id":1212,"nodeType":"InlineAssembly","src":"6766:160:12"},{"AST":{"nodeType":"YulBlock","src":"6944:151:12","statements":[{"nodeType":"YulAssignment","src":"6958:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6967:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6976:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"6979:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6972:3:12"},"nodeType":"YulFunctionCall","src":"6972:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6963:3:12"},"nodeType":"YulFunctionCall","src":"6963:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6958:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"6995:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7008:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7013:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7004:3:12"},"nodeType":"YulFunctionCall","src":"7004:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6999:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7028:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7040:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7051:2:12","type":"","value":"57"},{"name":"f","nodeType":"YulIdentifier","src":"7055:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7047:3:12"},"nodeType":"YulFunctionCall","src":"7047:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7037:2:12"},"nodeType":"YulFunctionCall","src":"7037:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7028:5:12"}]},{"nodeType":"YulAssignment","src":"7071:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7080:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7083:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7076:3:12"},"nodeType":"YulFunctionCall","src":"7076:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7071:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7028:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7040:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6958:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6976:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"6979:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7013:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7071:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7083:1:12","valueSize":1}],"id":1213,"nodeType":"InlineAssembly","src":"6935:160:12"},{"AST":{"nodeType":"YulBlock","src":"7113:151:12","statements":[{"nodeType":"YulAssignment","src":"7127:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7136:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7145:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7148:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7141:3:12"},"nodeType":"YulFunctionCall","src":"7141:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7132:3:12"},"nodeType":"YulFunctionCall","src":"7132:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7127:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"7164:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7177:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7182:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7173:3:12"},"nodeType":"YulFunctionCall","src":"7173:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7168:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7197:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7209:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7220:2:12","type":"","value":"56"},{"name":"f","nodeType":"YulIdentifier","src":"7224:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7216:3:12"},"nodeType":"YulFunctionCall","src":"7216:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7206:2:12"},"nodeType":"YulFunctionCall","src":"7206:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7197:5:12"}]},{"nodeType":"YulAssignment","src":"7240:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7249:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7252:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7245:3:12"},"nodeType":"YulFunctionCall","src":"7245:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7240:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7197:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7209:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7127:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7145:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7148:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7182:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7240:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7252:1:12","valueSize":1}],"id":1214,"nodeType":"InlineAssembly","src":"7104:160:12"},{"AST":{"nodeType":"YulBlock","src":"7282:151:12","statements":[{"nodeType":"YulAssignment","src":"7296:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7305:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7314:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7317:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7310:3:12"},"nodeType":"YulFunctionCall","src":"7310:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7301:3:12"},"nodeType":"YulFunctionCall","src":"7301:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7296:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"7333:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7346:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7351:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7342:3:12"},"nodeType":"YulFunctionCall","src":"7342:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7337:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7366:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7378:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7389:2:12","type":"","value":"55"},{"name":"f","nodeType":"YulIdentifier","src":"7393:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7385:3:12"},"nodeType":"YulFunctionCall","src":"7385:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7375:2:12"},"nodeType":"YulFunctionCall","src":"7375:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7366:5:12"}]},{"nodeType":"YulAssignment","src":"7409:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7418:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7421:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7414:3:12"},"nodeType":"YulFunctionCall","src":"7414:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7409:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7366:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7378:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7296:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7314:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7317:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7351:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7409:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7421:1:12","valueSize":1}],"id":1215,"nodeType":"InlineAssembly","src":"7273:160:12"},{"AST":{"nodeType":"YulBlock","src":"7451:151:12","statements":[{"nodeType":"YulAssignment","src":"7465:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7474:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7483:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7486:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7479:3:12"},"nodeType":"YulFunctionCall","src":"7479:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7470:3:12"},"nodeType":"YulFunctionCall","src":"7470:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7465:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"7502:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7515:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7520:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7511:3:12"},"nodeType":"YulFunctionCall","src":"7511:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7506:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7535:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7547:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7558:2:12","type":"","value":"54"},{"name":"f","nodeType":"YulIdentifier","src":"7562:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7554:3:12"},"nodeType":"YulFunctionCall","src":"7554:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7544:2:12"},"nodeType":"YulFunctionCall","src":"7544:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7535:5:12"}]},{"nodeType":"YulAssignment","src":"7578:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7587:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7590:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7583:3:12"},"nodeType":"YulFunctionCall","src":"7583:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7578:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7535:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7547:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7465:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7483:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7486:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7520:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7578:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7590:1:12","valueSize":1}],"id":1216,"nodeType":"InlineAssembly","src":"7442:160:12"},{"AST":{"nodeType":"YulBlock","src":"7620:151:12","statements":[{"nodeType":"YulAssignment","src":"7634:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7643:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7652:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7655:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7648:3:12"},"nodeType":"YulFunctionCall","src":"7648:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7639:3:12"},"nodeType":"YulFunctionCall","src":"7639:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7634: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":"7704:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7716:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7727:2:12","type":"","value":"53"},{"name":"f","nodeType":"YulIdentifier","src":"7731:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7723:3:12"},"nodeType":"YulFunctionCall","src":"7723:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7713:2:12"},"nodeType":"YulFunctionCall","src":"7713:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7704:5:12"}]},{"nodeType":"YulAssignment","src":"7747:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7756:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7759:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7752:3:12"},"nodeType":"YulFunctionCall","src":"7752:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7747:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7704:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7716:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7634:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7652:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7655:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7689:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7747:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7759:1:12","valueSize":1}],"id":1217,"nodeType":"InlineAssembly","src":"7611:160:12"},{"AST":{"nodeType":"YulBlock","src":"7789:151:12","statements":[{"nodeType":"YulAssignment","src":"7803:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7812:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7821:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7824:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7817:3:12"},"nodeType":"YulFunctionCall","src":"7817:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7808:3:12"},"nodeType":"YulFunctionCall","src":"7808:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7803:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"7840:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7853:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7858:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7849:3:12"},"nodeType":"YulFunctionCall","src":"7849:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7844:1:12","type":""}]},{"nodeType":"YulAssignment","src":"7873:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7885:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7896:2:12","type":"","value":"52"},{"name":"f","nodeType":"YulIdentifier","src":"7900:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7892:3:12"},"nodeType":"YulFunctionCall","src":"7892:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7882:2:12"},"nodeType":"YulFunctionCall","src":"7882:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7873:5:12"}]},{"nodeType":"YulAssignment","src":"7916:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7925:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7928:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7921:3:12"},"nodeType":"YulFunctionCall","src":"7921:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7916:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7873:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"7885:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7803:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7821:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7824:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7858:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7916:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7928:1:12","valueSize":1}],"id":1218,"nodeType":"InlineAssembly","src":"7780:160:12"},{"AST":{"nodeType":"YulBlock","src":"7958:151:12","statements":[{"nodeType":"YulAssignment","src":"7972:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7981:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7990:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"7993:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7986:3:12"},"nodeType":"YulFunctionCall","src":"7986:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7977:3:12"},"nodeType":"YulFunctionCall","src":"7977:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7972:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"8009:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8022:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"8027:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8018:3:12"},"nodeType":"YulFunctionCall","src":"8018:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"8013:1:12","type":""}]},{"nodeType":"YulAssignment","src":"8042:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"8054:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8065:2:12","type":"","value":"51"},{"name":"f","nodeType":"YulIdentifier","src":"8069:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8061:3:12"},"nodeType":"YulFunctionCall","src":"8061:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8051:2:12"},"nodeType":"YulFunctionCall","src":"8051:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"8042:5:12"}]},{"nodeType":"YulAssignment","src":"8085:14:12","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"8094:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"8097:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8090:3:12"},"nodeType":"YulFunctionCall","src":"8090:9:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8085:1:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"8042:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"8054:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7972:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7990:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"7993:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"8027:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"8085:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"8097:1:12","valueSize":1}],"id":1219,"nodeType":"InlineAssembly","src":"7949:160:12"},{"AST":{"nodeType":"YulBlock","src":"8127:124:12","statements":[{"nodeType":"YulAssignment","src":"8141:24:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8150:3:12","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"8159:1:12"},{"name":"r","nodeType":"YulIdentifier","src":"8162:1:12"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8155:3:12"},"nodeType":"YulFunctionCall","src":"8155:9:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8146:3:12"},"nodeType":"YulFunctionCall","src":"8146:19:12"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8141:1:12"}]},{"nodeType":"YulVariableDeclaration","src":"8178:20:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8191:3:12","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"8196:1:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8187:3:12"},"nodeType":"YulFunctionCall","src":"8187:11:12"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"8182:1:12","type":""}]},{"nodeType":"YulAssignment","src":"8211:30:12","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"8223:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8234:2:12","type":"","value":"50"},{"name":"f","nodeType":"YulIdentifier","src":"8238:1:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8230:3:12"},"nodeType":"YulFunctionCall","src":"8230:10:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8220:2:12"},"nodeType":"YulFunctionCall","src":"8220:21:12"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"8211:5:12"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1196,"isOffset":false,"isSlot":false,"src":"8211:5:12","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"8223:5:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"8141:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"8159:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"8162:1:12","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"8196:1:12","valueSize":1}],"id":1220,"nodeType":"InlineAssembly","src":"8118:133:12"},{"assignments":[1222],"declarations":[{"constant":false,"id":1222,"mutability":"mutable","name":"log_sqrt10001","nodeType":"VariableDeclaration","scope":1267,"src":"8261:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1221,"name":"int256","nodeType":"ElementaryTypeName","src":"8261:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1226,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1223,"name":"log_2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1196,"src":"8284:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"323535373338393538393939363033383236333437313431","id":1224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8292:24:12","typeDescriptions":{"typeIdentifier":"t_rational_255738958999603826347141_by_1","typeString":"int_const 255738958999603826347141"},"value":"255738958999603826347141"},"src":"8284:32:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"8261:55:12"},{"assignments":[1228],"declarations":[{"constant":false,"id":1228,"mutability":"mutable","name":"tickLow","nodeType":"VariableDeclaration","scope":1267,"src":"8345:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1227,"name":"int24","nodeType":"ElementaryTypeName","src":"8345:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":1238,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1231,"name":"log_sqrt10001","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"8368:13:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"33343032393932393536383039313332343138353936313430313030363630323437323130","id":1232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8384:37:12","typeDescriptions":{"typeIdentifier":"t_rational_3402992956809132418596140100660247210_by_1","typeString":"int_const 3402...(29 digits omitted)...7210"},"value":"3402992956809132418596140100660247210"},"src":"8368:53:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1234,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8367:55:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8426:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8367:62:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8361:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":1229,"name":"int24","nodeType":"ElementaryTypeName","src":"8361:5:12","typeDescriptions":{}}},"id":1237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8361:69:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"8345:85:12"},{"assignments":[1240],"declarations":[{"constant":false,"id":1240,"mutability":"mutable","name":"tickHi","nodeType":"VariableDeclaration","scope":1267,"src":"8440:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1239,"name":"int24","nodeType":"ElementaryTypeName","src":"8440:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":1250,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1243,"name":"log_sqrt10001","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"8462:13:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323931333339343634373731393839363232393037303237363231313533333938303838343935","id":1244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8478:39:12","typeDescriptions":{"typeIdentifier":"t_rational_291339464771989622907027621153398088495_by_1","typeString":"int_const 2913...(31 digits omitted)...8495"},"value":"291339464771989622907027621153398088495"},"src":"8462:55:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1246,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8461:57:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8522:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8461:64:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8455:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":1241,"name":"int24","nodeType":"ElementaryTypeName","src":"8455:5:12","typeDescriptions":{}}},"id":1249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8455:71:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"8440:86:12"},{"expression":{"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1251,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"8537:4:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"8544:7:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1253,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1240,"src":"8555:6:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8544:17:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1257,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1240,"src":"8617:6:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1256,"name":"getSqrtRatioAtTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1129,"src":"8598:18:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8598:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1259,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"8628:12:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"8598:42:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1262,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"8684:7:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8598:93:12","trueExpression":{"id":1261,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1240,"src":"8659:6:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8544:147:12","trueExpression":{"id":1255,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"8576:7:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8537:154:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1266,"nodeType":"ExpressionStatement","src":"8537:154:12"}]},"documentation":{"id":1130,"nodeType":"StructuredDocumentation","src":"3948:408: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":1268,"implemented":true,"kind":"function","modifiers":[],"name":"getTickAtSqrtRatio","nodeType":"FunctionDefinition","parameters":{"id":1133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1132,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":1268,"src":"4389:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1131,"name":"uint160","nodeType":"ElementaryTypeName","src":"4389:7:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"4388:22:12"},"returnParameters":{"id":1136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1135,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1268,"src":"4434:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1134,"name":"int24","nodeType":"ElementaryTypeName","src":"4434:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4433:12:12"},"scope":1269,"src":"4361:4337:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1270,"src":"313:8387:12"}],"src":"45:8656:12"},"id":12},"@openzeppelin/contracts/drafts/IERC20Permit.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/drafts/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[1305]},"id":1306,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1271,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:13"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1272,"nodeType":"StructuredDocumentation","src":"66:482:13","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":1305,"linearizedBaseContracts":[1305],"name":"IERC20Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1273,"nodeType":"StructuredDocumentation","src":"578:788:13","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":1290,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":1288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1275,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1290,"src":"1387:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1274,"name":"address","nodeType":"ElementaryTypeName","src":"1387:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1277,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1290,"src":"1402:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1276,"name":"address","nodeType":"ElementaryTypeName","src":"1402:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1279,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1290,"src":"1419:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1278,"name":"uint256","nodeType":"ElementaryTypeName","src":"1419:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1281,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":1290,"src":"1434:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1280,"name":"uint256","nodeType":"ElementaryTypeName","src":"1434:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1283,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":1290,"src":"1452:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"1452:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1285,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":1290,"src":"1461:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1284,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1461:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1287,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":1290,"src":"1472:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1286,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1472:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1386:96:13"},"returnParameters":{"id":1289,"nodeType":"ParameterList","parameters":[],"src":"1491:0:13"},"scope":1305,"src":"1371:121:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1291,"nodeType":"StructuredDocumentation","src":"1498:294:13","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":1298,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":1294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1293,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1298,"src":"1813:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1292,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1812:15:13"},"returnParameters":{"id":1297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1296,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1298,"src":"1851:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1295,"name":"uint256","nodeType":"ElementaryTypeName","src":"1851:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1850:9:13"},"scope":1305,"src":"1797:63:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1299,"nodeType":"StructuredDocumentation","src":"1866:128:13","text":" @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}."},"functionSelector":"3644e515","id":1304,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":1300,"nodeType":"ParameterList","parameters":[],"src":"2077:2:13"},"returnParameters":{"id":1303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1302,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1304,"src":"2103:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1301,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2103:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2102:9:13"},"scope":1305,"src":"2052:60:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1306,"src":"549:1565:13"}],"src":"33:2082:13"},"id":13},"@openzeppelin/contracts/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/introspection/ERC165.sol","exportedSymbols":{"ERC165":[1362],"IERC165":[1374]},"id":1363,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1307,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:14"},{"absolutePath":"@openzeppelin/contracts/introspection/IERC165.sol","file":"./IERC165.sol","id":1308,"nodeType":"ImportDirective","scope":1363,"sourceUnit":1375,"src":"58:23:14","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1310,"name":"IERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"283:7:14","typeDescriptions":{"typeIdentifier":"t_contract$_IERC165_$1374","typeString":"contract IERC165"}},"id":1311,"nodeType":"InheritanceSpecifier","src":"283:7:14"}],"contractDependencies":[1374],"contractKind":"contract","documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"83:171:14","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":1362,"linearizedBaseContracts":[1362,1374],"name":"ERC165","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1314,"mutability":"constant","name":"_INTERFACE_ID_ERC165","nodeType":"VariableDeclaration","scope":1362,"src":"380:57:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1312,"name":"bytes4","nodeType":"ElementaryTypeName","src":"380:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783031666663396137","id":1313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"427:10:14","typeDescriptions":{"typeIdentifier":"t_rational_33540519_by_1","typeString":"int_const 33540519"},"value":"0x01ffc9a7"},"visibility":"private"},{"constant":false,"documentation":{"id":1315,"nodeType":"StructuredDocumentation","src":"444:82:14","text":" @dev Mapping of interface ids to whether or not it's supported."},"id":1319,"mutability":"mutable","name":"_supportedInterfaces","nodeType":"VariableDeclaration","scope":1362,"src":"531:52:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"typeName":{"id":1318,"keyType":{"id":1316,"name":"bytes4","nodeType":"ElementaryTypeName","src":"539:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"531:23:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"valueType":{"id":1317,"name":"bool","nodeType":"ElementaryTypeName","src":"549:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"body":{"id":1326,"nodeType":"Block","src":"605:193:14","statements":[{"expression":{"arguments":[{"id":1323,"name":"_INTERFACE_ID_ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"770:20:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":1322,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"751:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":1324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"751:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1325,"nodeType":"ExpressionStatement","src":"751:40:14"}]},"id":1327,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":1320,"nodeType":"ParameterList","parameters":[],"src":"602:2:14"},"returnParameters":{"id":1321,"nodeType":"ParameterList","parameters":[],"src":"605:0:14"},"scope":1362,"src":"590:208:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1373],"body":{"id":1340,"nodeType":"Block","src":"1039:57:14","statements":[{"expression":{"baseExpression":{"id":1336,"name":"_supportedInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"1056:20:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":1338,"indexExpression":{"id":1337,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"1077:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1056:33:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1335,"id":1339,"nodeType":"Return","src":"1049:40:14"}]},"documentation":{"id":1328,"nodeType":"StructuredDocumentation","src":"804:139:14","text":" @dev See {IERC165-supportsInterface}.\n Time complexity O(1), guaranteed to always use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":1341,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nodeType":"FunctionDefinition","overrides":{"id":1332,"nodeType":"OverrideSpecifier","overrides":[],"src":"1015:8:14"},"parameters":{"id":1331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1330,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":1341,"src":"975:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1329,"name":"bytes4","nodeType":"ElementaryTypeName","src":"975:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"974:20:14"},"returnParameters":{"id":1335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1334,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1341,"src":"1033:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1333,"name":"bool","nodeType":"ElementaryTypeName","src":"1033:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1032:6:14"},"scope":1362,"src":"948:148:14","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1360,"nodeType":"Block","src":"1555:133:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1348,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1344,"src":"1573:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30786666666666666666","id":1349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1588:10:14","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"1573:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433136353a20696e76616c696420696e74657266616365206964","id":1351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1600:30:14","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":1347,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1565:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1565:66:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1353,"nodeType":"ExpressionStatement","src":"1565:66:14"},{"expression":{"id":1358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1354,"name":"_supportedInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"1641:20:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":1356,"indexExpression":{"id":1355,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1344,"src":"1662:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1641:33:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1677:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1641:40:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1359,"nodeType":"ExpressionStatement","src":"1641:40:14"}]},"documentation":{"id":1342,"nodeType":"StructuredDocumentation","src":"1102:383:14","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":1361,"implemented":true,"kind":"function","modifiers":[],"name":"_registerInterface","nodeType":"FunctionDefinition","parameters":{"id":1345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1344,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":1361,"src":"1518:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1343,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1518:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1517:20:14"},"returnParameters":{"id":1346,"nodeType":"ParameterList","parameters":[],"src":"1555:0:14"},"scope":1362,"src":"1490:198:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1363,"src":"255:1435:14"}],"src":"33:1658:14"},"id":14},"@openzeppelin/contracts/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/introspection/IERC165.sol","exportedSymbols":{"IERC165":[1374]},"id":1375,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1364,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:15"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1365,"nodeType":"StructuredDocumentation","src":"58:279:15","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":1374,"linearizedBaseContracts":[1374],"name":"IERC165","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1366,"nodeType":"StructuredDocumentation","src":"362:340:15","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":1373,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nodeType":"FunctionDefinition","parameters":{"id":1369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1368,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":1373,"src":"734:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1367,"name":"bytes4","nodeType":"ElementaryTypeName","src":"734:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"733:20:15"},"returnParameters":{"id":1372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1371,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1373,"src":"777:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1370,"name":"bool","nodeType":"ElementaryTypeName","src":"777:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"776:6:15"},"scope":1374,"src":"707:76:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1375,"src":"338:447:15"}],"src":"33:753:15"},"id":15},"@openzeppelin/contracts/math/SafeMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/math/SafeMath.sol","exportedSymbols":{"SafeMath":[1729]},"id":1730,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1376,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:16"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":1377,"nodeType":"StructuredDocumentation","src":"58:563:16","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":1729,"linearizedBaseContracts":[1729],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":1407,"nodeType":"Block","src":"857:98:16","statements":[{"assignments":[1390],"declarations":[{"constant":false,"id":1390,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":1407,"src":"867:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1389,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1394,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1391,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1380,"src":"879:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"883:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"879:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"867:17:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1395,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"898:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1396,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1380,"src":"902:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"898:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1402,"nodeType":"IfStatement","src":"894:28:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"913:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"920:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1400,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"912:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1388,"id":1401,"nodeType":"Return","src":"905:17:16"}},{"expression":{"components":[{"hexValue":"74727565","id":1403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"940:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1404,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"946:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1405,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"939:9:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1388,"id":1406,"nodeType":"Return","src":"932:16:16"}]},"documentation":{"id":1378,"nodeType":"StructuredDocumentation","src":"645:131:16","text":" @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":1408,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nodeType":"FunctionDefinition","parameters":{"id":1383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1380,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1408,"src":"797:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1379,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1382,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1408,"src":"808:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1381,"name":"uint256","nodeType":"ElementaryTypeName","src":"808:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"796:22:16"},"returnParameters":{"id":1388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1408,"src":"842:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1384,"name":"bool","nodeType":"ElementaryTypeName","src":"842:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1387,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1408,"src":"848:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1386,"name":"uint256","nodeType":"ElementaryTypeName","src":"848:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"841:15:16"},"scope":1729,"src":"781:174:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1434,"nodeType":"Block","src":"1177:75:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1420,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"1191:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1411,"src":"1195:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1191:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1427,"nodeType":"IfStatement","src":"1187:28:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1206:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1213:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1425,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1205:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1419,"id":1426,"nodeType":"Return","src":"1198:17:16"}},{"expression":{"components":[{"hexValue":"74727565","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1233:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1429,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1411,"src":"1239:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1430,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"1243:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1239:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1432,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1232:13:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1419,"id":1433,"nodeType":"Return","src":"1225:20:16"}]},"documentation":{"id":1409,"nodeType":"StructuredDocumentation","src":"961:135:16","text":" @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":1435,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nodeType":"FunctionDefinition","parameters":{"id":1414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1411,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1435,"src":"1117:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1413,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1435,"src":"1128:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"1128:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1116:22:16"},"returnParameters":{"id":1419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1416,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1435,"src":"1162:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1415,"name":"bool","nodeType":"ElementaryTypeName","src":"1162:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1418,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1435,"src":"1168:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1417,"name":"uint256","nodeType":"ElementaryTypeName","src":"1168:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1161:15:16"},"scope":1729,"src":"1101:151:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1475,"nodeType":"Block","src":"1476:359:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"1708:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1713:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1708:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1454,"nodeType":"IfStatement","src":"1704:28:16","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":1450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1724:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":1451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1730:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1452,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1723:9:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1446,"id":1453,"nodeType":"Return","src":"1716:16:16"}},{"assignments":[1456],"declarations":[{"constant":false,"id":1456,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":1475,"src":"1742:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1455,"name":"uint256","nodeType":"ElementaryTypeName","src":"1742:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1460,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"1754:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1458,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"1758:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1754:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1742:17:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1461,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1456,"src":"1773:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1462,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"1777:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1773:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1464,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"1782:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1773:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1470,"nodeType":"IfStatement","src":"1769:33:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1793:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1800:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1468,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1792:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1446,"id":1469,"nodeType":"Return","src":"1785:17:16"}},{"expression":{"components":[{"hexValue":"74727565","id":1471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1820:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1472,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1456,"src":"1826:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1473,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1819:9:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1446,"id":1474,"nodeType":"Return","src":"1812:16:16"}]},"documentation":{"id":1436,"nodeType":"StructuredDocumentation","src":"1258:137:16","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":1476,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nodeType":"FunctionDefinition","parameters":{"id":1441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1438,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1476,"src":"1416:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1437,"name":"uint256","nodeType":"ElementaryTypeName","src":"1416:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1440,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1476,"src":"1427:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"1427:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1415:22:16"},"returnParameters":{"id":1446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1443,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1476,"src":"1461:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1442,"name":"bool","nodeType":"ElementaryTypeName","src":"1461:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1445,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1476,"src":"1467:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1444,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:15:16"},"scope":1729,"src":"1400:435:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1502,"nodeType":"Block","src":"2060:76:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1488,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"2074:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2079:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2074:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1495,"nodeType":"IfStatement","src":"2070:29:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2090:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2097:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2089:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1487,"id":1494,"nodeType":"Return","src":"2082:17:16"}},{"expression":{"components":[{"hexValue":"74727565","id":1496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2117:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1497,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"2123:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1498,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"2127:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2123:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2116:13:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1487,"id":1501,"nodeType":"Return","src":"2109:20:16"}]},"documentation":{"id":1477,"nodeType":"StructuredDocumentation","src":"1841:138:16","text":" @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":1503,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nodeType":"FunctionDefinition","parameters":{"id":1482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1479,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1503,"src":"2000:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1478,"name":"uint256","nodeType":"ElementaryTypeName","src":"2000:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1481,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1503,"src":"2011:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2011:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1999:22:16"},"returnParameters":{"id":1487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1484,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1503,"src":"2045:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1483,"name":"bool","nodeType":"ElementaryTypeName","src":"2045:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1486,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1503,"src":"2051:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1485,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2044:15:16"},"scope":1729,"src":"1984:152:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1529,"nodeType":"Block","src":"2371:76:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1515,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"2385:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2390:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2385:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1522,"nodeType":"IfStatement","src":"2381:29:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2401:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2408:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1520,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2400:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1514,"id":1521,"nodeType":"Return","src":"2393:17:16"}},{"expression":{"components":[{"hexValue":"74727565","id":1523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2428:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1524,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"2434:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1525,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"2438:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2434:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1527,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2427:13:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1514,"id":1528,"nodeType":"Return","src":"2420:20:16"}]},"documentation":{"id":1504,"nodeType":"StructuredDocumentation","src":"2142:148:16","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":1530,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nodeType":"FunctionDefinition","parameters":{"id":1509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1506,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1530,"src":"2311:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1505,"name":"uint256","nodeType":"ElementaryTypeName","src":"2311:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1508,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1530,"src":"2322:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1507,"name":"uint256","nodeType":"ElementaryTypeName","src":"2322:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2310:22:16"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1511,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1530,"src":"2356:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1510,"name":"bool","nodeType":"ElementaryTypeName","src":"2356:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1513,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1530,"src":"2362:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1512,"name":"uint256","nodeType":"ElementaryTypeName","src":"2362:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2355:15:16"},"scope":1729,"src":"2295:152:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1555,"nodeType":"Block","src":"2749:108:16","statements":[{"assignments":[1541],"declarations":[{"constant":false,"id":1541,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":1555,"src":"2759:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1540,"name":"uint256","nodeType":"ElementaryTypeName","src":"2759:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1545,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1542,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1533,"src":"2771:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1543,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1535,"src":"2775:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2771:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2759:17:16"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1547,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"2794:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1548,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1533,"src":"2799:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2794:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206164646974696f6e206f766572666c6f77","id":1550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2802:29:16","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":1546,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2786:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2786:46:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1552,"nodeType":"ExpressionStatement","src":"2786:46:16"},{"expression":{"id":1553,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"2849:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1539,"id":1554,"nodeType":"Return","src":"2842:8:16"}]},"documentation":{"id":1531,"nodeType":"StructuredDocumentation","src":"2453:224:16","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":1556,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":1536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1533,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1556,"src":"2695:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1532,"name":"uint256","nodeType":"ElementaryTypeName","src":"2695:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1535,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1556,"src":"2706:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1534,"name":"uint256","nodeType":"ElementaryTypeName","src":"2706:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:22:16"},"returnParameters":{"id":1539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1538,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1556,"src":"2740:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1537,"name":"uint256","nodeType":"ElementaryTypeName","src":"2740:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2739:9:16"},"scope":1729,"src":"2682:175:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1577,"nodeType":"Block","src":"3195:88:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1567,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"3213:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1568,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1559,"src":"3218:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3213:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":1570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3221:32:16","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":1566,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3205:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3205:49:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1572,"nodeType":"ExpressionStatement","src":"3205:49:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1573,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1559,"src":"3271:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1574,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"3275:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3271:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1565,"id":1576,"nodeType":"Return","src":"3264:12:16"}]},"documentation":{"id":1557,"nodeType":"StructuredDocumentation","src":"2863:260:16","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":1578,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":1562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1559,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1578,"src":"3141:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1558,"name":"uint256","nodeType":"ElementaryTypeName","src":"3141:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1561,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1578,"src":"3152:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1560,"name":"uint256","nodeType":"ElementaryTypeName","src":"3152:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3140:22:16"},"returnParameters":{"id":1565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1564,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1578,"src":"3186:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1563,"name":"uint256","nodeType":"ElementaryTypeName","src":"3186:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3185:9:16"},"scope":1729,"src":"3128:155:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1611,"nodeType":"Block","src":"3597:148:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1588,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"3611:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3616:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1593,"nodeType":"IfStatement","src":"3607:20:16","trueBody":{"expression":{"hexValue":"30","id":1591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3626:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1587,"id":1592,"nodeType":"Return","src":"3619:8:16"}},{"assignments":[1595],"declarations":[{"constant":false,"id":1595,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":1611,"src":"3637:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1594,"name":"uint256","nodeType":"ElementaryTypeName","src":"3637:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1599,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1596,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"3649:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1597,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1583,"src":"3653:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3649:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3637:17:16"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1601,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1595,"src":"3672:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1602,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"3676:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3672:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1604,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1583,"src":"3681:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3672:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":1606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3684:35:16","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":1600,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3664:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3664:56:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1608,"nodeType":"ExpressionStatement","src":"3664:56:16"},{"expression":{"id":1609,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1595,"src":"3737:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1587,"id":1610,"nodeType":"Return","src":"3730:8:16"}]},"documentation":{"id":1579,"nodeType":"StructuredDocumentation","src":"3289:236:16","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":1612,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1581,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1612,"src":"3543:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"3543:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1612,"src":"3554:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1582,"name":"uint256","nodeType":"ElementaryTypeName","src":"3554:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3542:22:16"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1612,"src":"3588:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1585,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3587:9:16"},"scope":1729,"src":"3530:215:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1633,"nodeType":"Block","src":"4276:83:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1623,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"4294:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4298:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4294:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206469766973696f6e206279207a65726f","id":1626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4301:28:16","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":1622,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4286:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4286:44:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1628,"nodeType":"ExpressionStatement","src":"4286:44:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1629,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"4347:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1630,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"4351:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4347:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1621,"id":1632,"nodeType":"Return","src":"4340:12:16"}]},"documentation":{"id":1613,"nodeType":"StructuredDocumentation","src":"3751:453:16","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":1634,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":1618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1615,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1634,"src":"4222:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1614,"name":"uint256","nodeType":"ElementaryTypeName","src":"4222:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1617,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1634,"src":"4233:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1616,"name":"uint256","nodeType":"ElementaryTypeName","src":"4233:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4221:22:16"},"returnParameters":{"id":1621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1620,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1634,"src":"4267:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1619,"name":"uint256","nodeType":"ElementaryTypeName","src":"4267:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4266:9:16"},"scope":1729,"src":"4209:150:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1655,"nodeType":"Block","src":"4879:81:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1645,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"4897:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4901:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4897:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d6f64756c6f206279207a65726f","id":1648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4904:26:16","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":1644,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4889:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4889:42:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1650,"nodeType":"ExpressionStatement","src":"4889:42:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1651,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"4948:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1652,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"4952:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4948:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1643,"id":1654,"nodeType":"Return","src":"4941:12:16"}]},"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"4365:442:16","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":1656,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":1640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1656,"src":"4825:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1636,"name":"uint256","nodeType":"ElementaryTypeName","src":"4825:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1639,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1656,"src":"4836:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1638,"name":"uint256","nodeType":"ElementaryTypeName","src":"4836:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4824:22:16"},"returnParameters":{"id":1643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1642,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1656,"src":"4870:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1641,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4869:9:16"},"scope":1729,"src":"4812:148:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1679,"nodeType":"Block","src":"5519:68:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1669,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1661,"src":"5537:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1670,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"5542:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5537:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1672,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"5545:12:16","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":1668,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5529:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5529:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1674,"nodeType":"ExpressionStatement","src":"5529:29:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1675,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"5575:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1676,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1661,"src":"5579:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5575:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1667,"id":1678,"nodeType":"Return","src":"5568:12:16"}]},"documentation":{"id":1657,"nodeType":"StructuredDocumentation","src":"4966:453:16","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":1680,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1659,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1680,"src":"5437:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1658,"name":"uint256","nodeType":"ElementaryTypeName","src":"5437:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1661,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1680,"src":"5448:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1660,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1663,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":1680,"src":"5459:26:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1662,"name":"string","nodeType":"ElementaryTypeName","src":"5459:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5436:50:16"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1680,"src":"5510:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"5510:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5509:9:16"},"scope":1729,"src":"5424:163:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1703,"nodeType":"Block","src":"6339:67:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1693,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1685,"src":"6357:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6361:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6357:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1696,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1687,"src":"6364:12:16","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":1692,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6349:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6349:28:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1698,"nodeType":"ExpressionStatement","src":"6349:28:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1699,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"6394:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1700,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1685,"src":"6398:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6394:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1691,"id":1702,"nodeType":"Return","src":"6387:12:16"}]},"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"5593:646:16","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":1704,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1704,"src":"6257:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1682,"name":"uint256","nodeType":"ElementaryTypeName","src":"6257:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1704,"src":"6268:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1684,"name":"uint256","nodeType":"ElementaryTypeName","src":"6268:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":1704,"src":"6279:26:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1686,"name":"string","nodeType":"ElementaryTypeName","src":"6279:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6256:50:16"},"returnParameters":{"id":1691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1690,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1704,"src":"6330:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1689,"name":"uint256","nodeType":"ElementaryTypeName","src":"6330:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6329:9:16"},"scope":1729,"src":"6244:162:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1727,"nodeType":"Block","src":"7147:67:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1717,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"7165:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7169:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7165:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1720,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1711,"src":"7172:12:16","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":1716,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7157:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7157:28:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1722,"nodeType":"ExpressionStatement","src":"7157:28:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1723,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1707,"src":"7202:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1724,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"7206:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7202:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1715,"id":1726,"nodeType":"Return","src":"7195:12:16"}]},"documentation":{"id":1705,"nodeType":"StructuredDocumentation","src":"6412:635:16","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":1728,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":1712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1707,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1728,"src":"7065:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1706,"name":"uint256","nodeType":"ElementaryTypeName","src":"7065:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1709,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1728,"src":"7076:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1708,"name":"uint256","nodeType":"ElementaryTypeName","src":"7076:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1711,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":1728,"src":"7087:26:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1710,"name":"string","nodeType":"ElementaryTypeName","src":"7087:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7064:50:16"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1714,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1728,"src":"7138:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1713,"name":"uint256","nodeType":"ElementaryTypeName","src":"7138:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7137:9:16"},"scope":1729,"src":"7052:162:16","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1730,"src":"622:6594:16"}],"src":"33:7184:16"},"id":16},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[1807]},"id":1808,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1731,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:17"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1732,"nodeType":"StructuredDocumentation","src":"58:70:17","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":1807,"linearizedBaseContracts":[1807],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1733,"nodeType":"StructuredDocumentation","src":"152:66:17","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":1738,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":1734,"nodeType":"ParameterList","parameters":[],"src":"243:2:17"},"returnParameters":{"id":1737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1736,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1738,"src":"269:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1735,"name":"uint256","nodeType":"ElementaryTypeName","src":"269:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"268:9:17"},"scope":1807,"src":"223:55:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1739,"nodeType":"StructuredDocumentation","src":"284:72:17","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":1746,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":1742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1741,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":1746,"src":"380:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1740,"name":"address","nodeType":"ElementaryTypeName","src":"380:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"379:17:17"},"returnParameters":{"id":1745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1744,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1746,"src":"420:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1743,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"419:9:17"},"scope":1807,"src":"361:68:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1747,"nodeType":"StructuredDocumentation","src":"435:209:17","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":1756,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":1752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1756,"src":"667:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1748,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1751,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1756,"src":"686:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1750,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"666:35:17"},"returnParameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1756,"src":"720:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1753,"name":"bool","nodeType":"ElementaryTypeName","src":"720:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"719:6:17"},"scope":1807,"src":"649:77:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1757,"nodeType":"StructuredDocumentation","src":"732:264:17","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":1766,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":1762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1759,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1766,"src":"1020:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1758,"name":"address","nodeType":"ElementaryTypeName","src":"1020:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1761,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1766,"src":"1035:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1760,"name":"address","nodeType":"ElementaryTypeName","src":"1035:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1019:32:17"},"returnParameters":{"id":1765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1764,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1766,"src":"1075:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1763,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1074:9:17"},"scope":1807,"src":"1001:83:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1767,"nodeType":"StructuredDocumentation","src":"1090:642:17","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":1776,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":1772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1769,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1776,"src":"1754:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1768,"name":"address","nodeType":"ElementaryTypeName","src":"1754:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1771,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1776,"src":"1771:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1770,"name":"uint256","nodeType":"ElementaryTypeName","src":"1771:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:33:17"},"returnParameters":{"id":1775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1774,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1776,"src":"1805:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1773,"name":"bool","nodeType":"ElementaryTypeName","src":"1805:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1804:6:17"},"scope":1807,"src":"1737:74:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1777,"nodeType":"StructuredDocumentation","src":"1817:296:17","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":1788,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":1784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1779,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":1788,"src":"2140:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1778,"name":"address","nodeType":"ElementaryTypeName","src":"2140:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1781,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1788,"src":"2156:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1780,"name":"address","nodeType":"ElementaryTypeName","src":"2156:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1783,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1788,"src":"2175:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1782,"name":"uint256","nodeType":"ElementaryTypeName","src":"2175:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2139:51:17"},"returnParameters":{"id":1787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1786,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1788,"src":"2209:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1785,"name":"bool","nodeType":"ElementaryTypeName","src":"2209:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2208:6:17"},"scope":1807,"src":"2118:97:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":1789,"nodeType":"StructuredDocumentation","src":"2221:158:17","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":1797,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":1796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1791,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":1797,"src":"2399:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1790,"name":"address","nodeType":"ElementaryTypeName","src":"2399:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1793,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":1797,"src":"2421:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"2421:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1795,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1797,"src":"2441:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1794,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2398:57:17"},"src":"2384:72:17"},{"anonymous":false,"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"2462:148:17","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":1806,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":1805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1806,"src":"2630:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1799,"name":"address","nodeType":"ElementaryTypeName","src":"2630:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1802,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1806,"src":"2653:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1801,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1804,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1806,"src":"2678:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1803,"name":"uint256","nodeType":"ElementaryTypeName","src":"2678:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2629:63:17"},"src":"2615:78:17"}],"scope":1808,"src":"129:2566:17"}],"src":"33:2663:17"},"id":17},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","exportedSymbols":{"Address":[3239],"Context":[3262],"ERC165":[1362],"ERC721":[2751],"EnumerableMap":[3822],"EnumerableSet":[4314],"IERC165":[1374],"IERC721":[2867],"IERC721Enumerable":[2898],"IERC721Metadata":[2925],"IERC721Receiver":[2943],"SafeMath":[1729],"Strings":[4401]},"id":2752,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1809,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:18"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":1810,"nodeType":"ImportDirective","scope":2752,"sourceUnit":3263,"src":"58:33:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":1811,"nodeType":"ImportDirective","scope":2752,"sourceUnit":2868,"src":"92:23:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol","file":"./IERC721Metadata.sol","id":1812,"nodeType":"ImportDirective","scope":2752,"sourceUnit":2926,"src":"116:31:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol","file":"./IERC721Enumerable.sol","id":1813,"nodeType":"ImportDirective","scope":2752,"sourceUnit":2899,"src":"148:33:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","id":1814,"nodeType":"ImportDirective","scope":2752,"sourceUnit":2944,"src":"182:31:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/introspection/ERC165.sol","file":"../../introspection/ERC165.sol","id":1815,"nodeType":"ImportDirective","scope":2752,"sourceUnit":1363,"src":"214:40:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/math/SafeMath.sol","file":"../../math/SafeMath.sol","id":1816,"nodeType":"ImportDirective","scope":2752,"sourceUnit":1730,"src":"255:33:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":1817,"nodeType":"ImportDirective","scope":2752,"sourceUnit":3240,"src":"289:33:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/EnumerableSet.sol","file":"../../utils/EnumerableSet.sol","id":1818,"nodeType":"ImportDirective","scope":2752,"sourceUnit":4315,"src":"323:39:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/EnumerableMap.sol","file":"../../utils/EnumerableMap.sol","id":1819,"nodeType":"ImportDirective","scope":2752,"sourceUnit":3823,"src":"363:39:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","id":1820,"nodeType":"ImportDirective","scope":2752,"sourceUnit":4402,"src":"403:33:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1822,"name":"Context","nodeType":"UserDefinedTypeName","referencedDeclaration":3262,"src":"582:7:18","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$3262","typeString":"contract Context"}},"id":1823,"nodeType":"InheritanceSpecifier","src":"582:7:18"},{"baseName":{"id":1824,"name":"ERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":1362,"src":"591:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_ERC165_$1362","typeString":"contract ERC165"}},"id":1825,"nodeType":"InheritanceSpecifier","src":"591:6:18"},{"baseName":{"id":1826,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":2867,"src":"599:7:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2867","typeString":"contract IERC721"}},"id":1827,"nodeType":"InheritanceSpecifier","src":"599:7:18"},{"baseName":{"id":1828,"name":"IERC721Metadata","nodeType":"UserDefinedTypeName","referencedDeclaration":2925,"src":"608:15:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$2925","typeString":"contract IERC721Metadata"}},"id":1829,"nodeType":"InheritanceSpecifier","src":"608:15:18"},{"baseName":{"id":1830,"name":"IERC721Enumerable","nodeType":"UserDefinedTypeName","referencedDeclaration":2898,"src":"625:17:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Enumerable_$2898","typeString":"contract IERC721Enumerable"}},"id":1831,"nodeType":"InheritanceSpecifier","src":"625:17:18"}],"contractDependencies":[1362,1374,2867,2898,2925,3262],"contractKind":"contract","documentation":{"id":1821,"nodeType":"StructuredDocumentation","src":"438:124:18","text":" @title ERC721 Non-Fungible Token Standard basic implementation\n @dev see https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":true,"id":2751,"linearizedBaseContracts":[2751,2898,2925,2867,1362,1374,3262],"name":"ERC721","nodeType":"ContractDefinition","nodes":[{"id":1834,"libraryName":{"id":1832,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":1729,"src":"655:8:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$1729","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"649:27:18","typeName":{"id":1833,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1837,"libraryName":{"id":1835,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":3239,"src":"687:7:18","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$3239","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"681:26:18","typeName":{"id":1836,"name":"address","nodeType":"ElementaryTypeName","src":"699:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":1840,"libraryName":{"id":1838,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4314,"src":"718:13:18","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$4314","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"712:46:18","typeName":{"id":1839,"name":"EnumerableSet.UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4219,"src":"736:21:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"}}},{"id":1843,"libraryName":{"id":1841,"name":"EnumerableMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3822,"src":"769:13:18","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableMap_$3822","typeString":"library EnumerableMap"}},"nodeType":"UsingForDirective","src":"763:55:18","typeName":{"id":1842,"name":"EnumerableMap.UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3596,"src":"787:30:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}}},{"id":1846,"libraryName":{"id":1844,"name":"Strings","nodeType":"UserDefinedTypeName","referencedDeclaration":4401,"src":"829:7:18","typeDescriptions":{"typeIdentifier":"t_contract$_Strings_$4401","typeString":"library Strings"}},"nodeType":"UsingForDirective","src":"823:26:18","typeName":{"id":1845,"name":"uint256","nodeType":"ElementaryTypeName","src":"841:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":1849,"mutability":"constant","name":"_ERC721_RECEIVED","nodeType":"VariableDeclaration","scope":2751,"src":"1027:53:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1847,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1027:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783135306237613032","id":1848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1070:10:18","typeDescriptions":{"typeIdentifier":"t_rational_353073666_by_1","typeString":"int_const 353073666"},"value":"0x150b7a02"},"visibility":"private"},{"constant":false,"id":1853,"mutability":"mutable","name":"_holderTokens","nodeType":"VariableDeclaration","scope":2751,"src":"1164:64:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$4219_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet)"},"typeName":{"id":1852,"keyType":{"id":1850,"name":"address","nodeType":"ElementaryTypeName","src":"1173:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1164:42:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$4219_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet)"},"valueType":{"id":1851,"name":"EnumerableSet.UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4219,"src":"1184:21:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"}}},"visibility":"private"},{"constant":false,"id":1855,"mutability":"mutable","name":"_tokenOwners","nodeType":"VariableDeclaration","scope":2751,"src":"1292:51:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":1854,"name":"EnumerableMap.UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3596,"src":"1292:30:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"private"},{"constant":false,"id":1859,"mutability":"mutable","name":"_tokenApprovals","nodeType":"VariableDeclaration","scope":2751,"src":"1399:52:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1858,"keyType":{"id":1856,"name":"uint256","nodeType":"ElementaryTypeName","src":"1408:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1399:28:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":1857,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":1865,"mutability":"mutable","name":"_operatorApprovals","nodeType":"VariableDeclaration","scope":2751,"src":"1506:73:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1864,"keyType":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"1515:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1506:46:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":1863,"keyType":{"id":1861,"name":"address","nodeType":"ElementaryTypeName","src":"1535:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1526:25:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":1862,"name":"bool","nodeType":"ElementaryTypeName","src":"1546:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"constant":false,"id":1867,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":2751,"src":"1604:20:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1866,"name":"string","nodeType":"ElementaryTypeName","src":"1604:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":1869,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":2751,"src":"1651:22:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1868,"name":"string","nodeType":"ElementaryTypeName","src":"1651:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":1873,"mutability":"mutable","name":"_tokenURIs","nodeType":"VariableDeclaration","scope":2751,"src":"1719:46:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"typeName":{"id":1872,"keyType":{"id":1870,"name":"uint256","nodeType":"ElementaryTypeName","src":"1728:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1719:27:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"valueType":{"id":1871,"name":"string","nodeType":"ElementaryTypeName","src":"1739:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"visibility":"private"},{"constant":false,"id":1875,"mutability":"mutable","name":"_baseURI","nodeType":"VariableDeclaration","scope":2751,"src":"1788:23:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1874,"name":"string","nodeType":"ElementaryTypeName","src":"1788:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":true,"id":1878,"mutability":"constant","name":"_INTERFACE_ID_ERC721","nodeType":"VariableDeclaration","scope":2751,"src":"2687:57:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1876,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2687:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783830616335386364","id":1877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2734:10:18","typeDescriptions":{"typeIdentifier":"t_rational_2158778573_by_1","typeString":"int_const 2158778573"},"value":"0x80ac58cd"},"visibility":"private"},{"constant":true,"id":1881,"mutability":"constant","name":"_INTERFACE_ID_ERC721_METADATA","nodeType":"VariableDeclaration","scope":2751,"src":"3010:66:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1879,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3010:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783562356531333966","id":1880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3066:10:18","typeDescriptions":{"typeIdentifier":"t_rational_1532892063_by_1","typeString":"int_const 1532892063"},"value":"0x5b5e139f"},"visibility":"private"},{"constant":true,"id":1884,"mutability":"constant","name":"_INTERFACE_ID_ERC721_ENUMERABLE","nodeType":"VariableDeclaration","scope":2751,"src":"3381:68:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1882,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3381:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783738306539643633","id":1883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3439:10:18","typeDescriptions":{"typeIdentifier":"t_rational_2014223715_by_1","typeString":"int_const 2014223715"},"value":"0x780e9d63"},"visibility":"private"},{"body":{"id":1912,"nodeType":"Block","src":"3626:305:18","statements":[{"expression":{"id":1894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"3636:5:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1893,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"3644:5:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3636:13:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1895,"nodeType":"ExpressionStatement","src":"3636:13:18"},{"expression":{"id":1898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1896,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3659:7:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1897,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1889,"src":"3669:7:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3659:17:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1899,"nodeType":"ExpressionStatement","src":"3659:17:18"},{"expression":{"arguments":[{"id":1901,"name":"_INTERFACE_ID_ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1878,"src":"3783:20:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":1900,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"3764:18:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3764:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1903,"nodeType":"ExpressionStatement","src":"3764:40:18"},{"expression":{"arguments":[{"id":1905,"name":"_INTERFACE_ID_ERC721_METADATA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1881,"src":"3833:29:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":1904,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"3814:18:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3814:49:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1907,"nodeType":"ExpressionStatement","src":"3814:49:18"},{"expression":{"arguments":[{"id":1909,"name":"_INTERFACE_ID_ERC721_ENUMERABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1884,"src":"3892:31:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":1908,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"3873:18:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3873:51:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1911,"nodeType":"ExpressionStatement","src":"3873:51:18"}]},"documentation":{"id":1885,"nodeType":"StructuredDocumentation","src":"3456:108:18","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":1913,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":1890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1887,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":1913,"src":"3582:19:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1886,"name":"string","nodeType":"ElementaryTypeName","src":"3582:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1889,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":1913,"src":"3603:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1888,"name":"string","nodeType":"ElementaryTypeName","src":"3603:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3581:44:18"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[],"src":"3626:0:18"},"scope":2751,"src":"3569:362:18","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2792],"body":{"id":1938,"nodeType":"Block","src":"4071:137:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1923,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1916,"src":"4089:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4106:1:18","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":1925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4098:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1924,"name":"address","nodeType":"ElementaryTypeName","src":"4098:7:18","typeDescriptions":{}}},"id":1927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4098:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4089:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373","id":1929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4110:44:18","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":1922,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4081:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4081:74:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1931,"nodeType":"ExpressionStatement","src":"4081:74:18"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":1932,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1853,"src":"4172:13:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$4219_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":1934,"indexExpression":{"id":1933,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1916,"src":"4186:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4172:20:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":1935,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":4293,"src":"4172:27:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintSet_$4219_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$4219_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer) view returns (uint256)"}},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4172:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1921,"id":1937,"nodeType":"Return","src":"4165:36:18"}]},"documentation":{"id":1914,"nodeType":"StructuredDocumentation","src":"3937:48:18","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":1939,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":1918,"nodeType":"OverrideSpecifier","overrides":[],"src":"4044:8:18"},"parameters":{"id":1917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1916,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1939,"src":"4009:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1915,"name":"address","nodeType":"ElementaryTypeName","src":"4009:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4008:15:18"},"returnParameters":{"id":1921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1920,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1939,"src":"4062:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1919,"name":"uint256","nodeType":"ElementaryTypeName","src":"4062:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4061:9:18"},"scope":2751,"src":"3990:218:18","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2800],"body":{"id":1954,"nodeType":"Block","src":"4346:94:18","statements":[{"expression":{"arguments":[{"id":1950,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"4380:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":1951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4389:43:18","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":1948,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"4363:12:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":1949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"get","nodeType":"MemberAccess","referencedDeclaration":3821,"src":"4363:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$3596_storage_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_address_$bound_to$_t_struct$_UintToAddressMap_$3596_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,string memory) view returns (address)"}},"id":1952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4363:70:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1947,"id":1953,"nodeType":"Return","src":"4356:77:18"}]},"documentation":{"id":1940,"nodeType":"StructuredDocumentation","src":"4214:46:18","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":1955,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nodeType":"FunctionDefinition","overrides":{"id":1944,"nodeType":"OverrideSpecifier","overrides":[],"src":"4319:8:18"},"parameters":{"id":1943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1942,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":1955,"src":"4282:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1941,"name":"uint256","nodeType":"ElementaryTypeName","src":"4282:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4281:17:18"},"returnParameters":{"id":1947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1946,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1955,"src":"4337:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1945,"name":"address","nodeType":"ElementaryTypeName","src":"4337:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4336:9:18"},"scope":2751,"src":"4265:175:18","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2910],"body":{"id":1964,"nodeType":"Block","src":"4571:29:18","statements":[{"expression":{"id":1962,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"4588:5:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1961,"id":1963,"nodeType":"Return","src":"4581:12:18"}]},"documentation":{"id":1956,"nodeType":"StructuredDocumentation","src":"4446:51:18","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":1965,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","overrides":{"id":1958,"nodeType":"OverrideSpecifier","overrides":[],"src":"4538:8:18"},"parameters":{"id":1957,"nodeType":"ParameterList","parameters":[],"src":"4515:2:18"},"returnParameters":{"id":1961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1960,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1965,"src":"4556:13:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1959,"name":"string","nodeType":"ElementaryTypeName","src":"4556:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4555:15:18"},"scope":2751,"src":"4502:98:18","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2916],"body":{"id":1974,"nodeType":"Block","src":"4735:31:18","statements":[{"expression":{"id":1972,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4752:7:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1971,"id":1973,"nodeType":"Return","src":"4745:14:18"}]},"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"4606:53:18","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":1975,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","overrides":{"id":1968,"nodeType":"OverrideSpecifier","overrides":[],"src":"4702:8:18"},"parameters":{"id":1967,"nodeType":"ParameterList","parameters":[],"src":"4679:2:18"},"returnParameters":{"id":1971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1970,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1975,"src":"4720:13:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1969,"name":"string","nodeType":"ElementaryTypeName","src":"4720:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4719:15:18"},"scope":2751,"src":"4664:102:18","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2924],"body":{"id":2042,"nodeType":"Block","src":"4920:688:18","statements":[{"expression":{"arguments":[{"arguments":[{"id":1986,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"4946:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1985,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"4938:7:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4938:16:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":1988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4956:49:18","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":1984,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4930:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4930:76:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1990,"nodeType":"ExpressionStatement","src":"4930:76:18"},{"assignments":[1992],"declarations":[{"constant":false,"id":1992,"mutability":"mutable","name":"_tokenURI","nodeType":"VariableDeclaration","scope":2042,"src":"5017:23:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1991,"name":"string","nodeType":"ElementaryTypeName","src":"5017:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1996,"initialValue":{"baseExpression":{"id":1993,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"5043:10:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":1995,"indexExpression":{"id":1994,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"5054:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5043:19:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5017:45:18"},{"assignments":[1998],"declarations":[{"constant":false,"id":1998,"mutability":"mutable","name":"base","nodeType":"VariableDeclaration","scope":2042,"src":"5072:18:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1997,"name":"string","nodeType":"ElementaryTypeName","src":"5072:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2001,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1999,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"5093:7:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":2000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5093:9:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"5072:30:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2004,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1998,"src":"5181:4:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5175:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2002,"name":"bytes","nodeType":"ElementaryTypeName","src":"5175:5:18","typeDescriptions":{}}},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5175:11:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5175:18:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5197:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5175:23:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2012,"nodeType":"IfStatement","src":"5171:70:18","trueBody":{"id":2011,"nodeType":"Block","src":"5200:41:18","statements":[{"expression":{"id":2009,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1992,"src":"5221:9:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1983,"id":2010,"nodeType":"Return","src":"5214:16:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2015,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1992,"src":"5349:9:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5343:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2013,"name":"bytes","nodeType":"ElementaryTypeName","src":"5343:5:18","typeDescriptions":{}}},"id":2016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5343:16:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5343:23:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5369:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5343:27:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2030,"nodeType":"IfStatement","src":"5339:106:18","trueBody":{"id":2029,"nodeType":"Block","src":"5372:73:18","statements":[{"expression":{"arguments":[{"arguments":[{"id":2024,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1998,"src":"5417:4:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2025,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1992,"src":"5423:9:18","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":2022,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5400:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5400:16:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5400:33:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5393:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2020,"name":"string","nodeType":"ElementaryTypeName","src":"5393:6:18","typeDescriptions":{}}},"id":2027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5393:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1983,"id":2028,"nodeType":"Return","src":"5386:48:18"}]}},{"expression":{"arguments":[{"arguments":[{"id":2035,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1998,"src":"5575:4:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2036,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"5581:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":4400,"src":"5581:16:18","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":2038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5581:18:18","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":2033,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5558:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5558:16:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5558:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5551:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2031,"name":"string","nodeType":"ElementaryTypeName","src":"5551:6:18","typeDescriptions":{}}},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5551:50:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1983,"id":2041,"nodeType":"Return","src":"5544:57:18"}]},"documentation":{"id":1976,"nodeType":"StructuredDocumentation","src":"4772:55:18","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":2043,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","overrides":{"id":1980,"nodeType":"OverrideSpecifier","overrides":[],"src":"4887:8:18"},"parameters":{"id":1979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1978,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2043,"src":"4850:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1977,"name":"uint256","nodeType":"ElementaryTypeName","src":"4850:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4849:17:18"},"returnParameters":{"id":1983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1982,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2043,"src":"4905:13:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1981,"name":"string","nodeType":"ElementaryTypeName","src":"4905:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4904:15:18"},"scope":2751,"src":"4832:776:18","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2051,"nodeType":"Block","src":"5903:32:18","statements":[{"expression":{"id":2049,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1875,"src":"5920:8:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2048,"id":2050,"nodeType":"Return","src":"5913:15:18"}]},"documentation":{"id":2044,"nodeType":"StructuredDocumentation","src":"5614:221:18","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":2052,"implemented":true,"kind":"function","modifiers":[],"name":"baseURI","nodeType":"FunctionDefinition","parameters":{"id":2045,"nodeType":"ParameterList","parameters":[],"src":"5856:2:18"},"returnParameters":{"id":2048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2047,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2052,"src":"5888:13:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2046,"name":"string","nodeType":"ElementaryTypeName","src":"5888:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5887:15:18"},"scope":2751,"src":"5840:95:18","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2889],"body":{"id":2070,"nodeType":"Block","src":"6120:54:18","statements":[{"expression":{"arguments":[{"id":2067,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"6161:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":2063,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1853,"src":"6137:13:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$4219_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":2065,"indexExpression":{"id":2064,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2055,"src":"6151:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6137:20:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":2066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":4313,"src":"6137:23:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintSet_$4219_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$4219_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) view returns (uint256)"}},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6137:30:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2062,"id":2069,"nodeType":"Return","src":"6130:37:18"}]},"documentation":{"id":2053,"nodeType":"StructuredDocumentation","src":"5941:68:18","text":" @dev See {IERC721Enumerable-tokenOfOwnerByIndex}."},"functionSelector":"2f745c59","id":2071,"implemented":true,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nodeType":"FunctionDefinition","overrides":{"id":2059,"nodeType":"OverrideSpecifier","overrides":[],"src":"6093:8:18"},"parameters":{"id":2058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2055,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2071,"src":"6043:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2054,"name":"address","nodeType":"ElementaryTypeName","src":"6043:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2057,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":2071,"src":"6058:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2056,"name":"uint256","nodeType":"ElementaryTypeName","src":"6058:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6042:30:18"},"returnParameters":{"id":2062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2061,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2071,"src":"6111:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2060,"name":"uint256","nodeType":"ElementaryTypeName","src":"6111:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6110:9:18"},"scope":2751,"src":"6014:160:18","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2879],"body":{"id":2082,"nodeType":"Block","src":"6315:138:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2078,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"6425:12:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":2079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":3682,"src":"6425:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$3596_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintToAddressMap_$3596_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer) view returns (uint256)"}},"id":2080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6425:21:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2077,"id":2081,"nodeType":"Return","src":"6418:28:18"}]},"documentation":{"id":2072,"nodeType":"StructuredDocumentation","src":"6180:60:18","text":" @dev See {IERC721Enumerable-totalSupply}."},"functionSelector":"18160ddd","id":2083,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":2074,"nodeType":"OverrideSpecifier","overrides":[],"src":"6288:8:18"},"parameters":{"id":2073,"nodeType":"ParameterList","parameters":[],"src":"6265:2:18"},"returnParameters":{"id":2077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2076,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2083,"src":"6306:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2075,"name":"uint256","nodeType":"ElementaryTypeName","src":"6306:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6305:9:18"},"scope":2751,"src":"6245:208:18","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2897],"body":{"id":2101,"nodeType":"Block","src":"6609:85:18","statements":[{"assignments":[2093,null],"declarations":[{"constant":false,"id":2093,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2101,"src":"6620:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2092,"name":"uint256","nodeType":"ElementaryTypeName","src":"6620:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":2098,"initialValue":{"arguments":[{"id":2096,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"6657:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2094,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"6641:12:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":2095,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":3721,"src":"6641:15:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$3596_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_address_$bound_to$_t_struct$_UintToAddressMap_$3596_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (uint256,address)"}},"id":2097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6641:22:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"nodeType":"VariableDeclarationStatement","src":"6619:44:18"},{"expression":{"id":2099,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2093,"src":"6680:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2091,"id":2100,"nodeType":"Return","src":"6673:14:18"}]},"documentation":{"id":2084,"nodeType":"StructuredDocumentation","src":"6459:61:18","text":" @dev See {IERC721Enumerable-tokenByIndex}."},"functionSelector":"4f6ccce7","id":2102,"implemented":true,"kind":"function","modifiers":[],"name":"tokenByIndex","nodeType":"FunctionDefinition","overrides":{"id":2088,"nodeType":"OverrideSpecifier","overrides":[],"src":"6582:8:18"},"parameters":{"id":2087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2086,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":2102,"src":"6547:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"6547:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6546:15:18"},"returnParameters":{"id":2091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2090,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2102,"src":"6600:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2089,"name":"uint256","nodeType":"ElementaryTypeName","src":"6600:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6599:9:18"},"scope":2751,"src":"6525:169:18","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2828],"body":{"id":2145,"nodeType":"Block","src":"6821:325:18","statements":[{"assignments":[2112],"declarations":[{"constant":false,"id":2112,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2145,"src":"6831:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2111,"name":"address","nodeType":"ElementaryTypeName","src":"6831:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2117,"initialValue":{"arguments":[{"id":2115,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"6862:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2113,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2751,"src":"6847:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2751_$","typeString":"type(contract ERC721)"}},"id":2114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1955,"src":"6847:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6847:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6831:39:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2119,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2105,"src":"6888:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2120,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"6894:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6888:11:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":2122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6901:35:18","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":2118,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6880:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6880:57:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2124,"nodeType":"ExpressionStatement","src":"6880:57:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2126,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"6956:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":2127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6956:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2128,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"6972:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6956:21:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2132,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"7005:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2133,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"7012:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":2134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7012:12:18","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":2130,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2751,"src":"6981:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2751_$","typeString":"type(contract ERC721)"}},"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isApprovedForAll","nodeType":"MemberAccess","referencedDeclaration":2219,"src":"6981:23:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6981:44:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6956:69:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c","id":2137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7039:58:18","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":2125,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6948:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6948:159:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2139,"nodeType":"ExpressionStatement","src":"6948:159:18"},{"expression":{"arguments":[{"id":2141,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2105,"src":"7127:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2142,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"7131:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2140,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2739,"src":"7118:8:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7118:21:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2144,"nodeType":"ExpressionStatement","src":"7118:21:18"}]},"documentation":{"id":2103,"nodeType":"StructuredDocumentation","src":"6700:46:18","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":2146,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":2109,"nodeType":"OverrideSpecifier","overrides":[],"src":"6812:8:18"},"parameters":{"id":2108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2105,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2146,"src":"6768:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2104,"name":"address","nodeType":"ElementaryTypeName","src":"6768:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2107,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2146,"src":"6780:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2106,"name":"uint256","nodeType":"ElementaryTypeName","src":"6780:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6767:29:18"},"returnParameters":{"id":2110,"nodeType":"ParameterList","parameters":[],"src":"6821:0:18"},"scope":2751,"src":"6751:395:18","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2836],"body":{"id":2166,"nodeType":"Block","src":"7292:132:18","statements":[{"expression":{"arguments":[{"arguments":[{"id":2157,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"7318:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2156,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"7310:7:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7310:16:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":2159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7328:46:18","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":2155,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7302:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7302:73:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2161,"nodeType":"ExpressionStatement","src":"7302:73:18"},{"expression":{"baseExpression":{"id":2162,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1859,"src":"7393:15:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2164,"indexExpression":{"id":2163,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"7409:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7393:24:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2154,"id":2165,"nodeType":"Return","src":"7386:31:18"}]},"documentation":{"id":2147,"nodeType":"StructuredDocumentation","src":"7152:50:18","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":2167,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nodeType":"FunctionDefinition","overrides":{"id":2151,"nodeType":"OverrideSpecifier","overrides":[],"src":"7265:8:18"},"parameters":{"id":2150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2149,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2167,"src":"7228:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2148,"name":"uint256","nodeType":"ElementaryTypeName","src":"7228:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7227:17:18"},"returnParameters":{"id":2154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2153,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2167,"src":"7283:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2152,"name":"address","nodeType":"ElementaryTypeName","src":"7283:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7282:9:18"},"scope":2751,"src":"7207:217:18","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2844],"body":{"id":2200,"nodeType":"Block","src":"7575:206:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2177,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"7593:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2178,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"7605:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7605:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7593:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":2181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7619:27:18","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":2176,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7585:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7585:62:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2183,"nodeType":"ExpressionStatement","src":"7585:62:18"},{"expression":{"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2184,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1865,"src":"7658:18:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2188,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2185,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"7677:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7677:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7658:32:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2189,"indexExpression":{"id":2187,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"7691:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7658:42:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2190,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"7703:8:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7658:53:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2192,"nodeType":"ExpressionStatement","src":"7658:53:18"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2194,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"7741:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7741:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2196,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"7755:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2197,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"7765:8:18","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":2193,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"7726:14:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7726:48:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2199,"nodeType":"EmitStatement","src":"7721:53:18"}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"7430:56:18","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":2201,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nodeType":"FunctionDefinition","overrides":{"id":2174,"nodeType":"OverrideSpecifier","overrides":[],"src":"7566:8:18"},"parameters":{"id":2173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":2201,"src":"7518:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"7518:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":2201,"src":"7536:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2171,"name":"bool","nodeType":"ElementaryTypeName","src":"7536:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7517:33:18"},"returnParameters":{"id":2175,"nodeType":"ParameterList","parameters":[],"src":"7575:0:18"},"scope":2751,"src":"7491:290:18","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2854],"body":{"id":2218,"nodeType":"Block","src":"7950:59:18","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2212,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1865,"src":"7967:18:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2214,"indexExpression":{"id":2213,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"7986:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7967:25:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2216,"indexExpression":{"id":2215,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"7993:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7967:35:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2211,"id":2217,"nodeType":"Return","src":"7960:42:18"}]},"documentation":{"id":2202,"nodeType":"StructuredDocumentation","src":"7787:55:18","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":2219,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nodeType":"FunctionDefinition","overrides":{"id":2208,"nodeType":"OverrideSpecifier","overrides":[],"src":"7926:8:18"},"parameters":{"id":2207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2204,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2219,"src":"7873:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2203,"name":"address","nodeType":"ElementaryTypeName","src":"7873:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2206,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":2219,"src":"7888:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2205,"name":"address","nodeType":"ElementaryTypeName","src":"7888:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7872:33:18"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2210,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2219,"src":"7944:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2209,"name":"bool","nodeType":"ElementaryTypeName","src":"7944:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7943:6:18"},"scope":2751,"src":"7847:162:18","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2820],"body":{"id":2245,"nodeType":"Block","src":"8160:211:18","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2232,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"8249:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":2233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8249:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2234,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2226,"src":"8263:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2231,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"8230:18:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":2235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8230:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564","id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8273:51:18","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":2230,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8222:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8222:103:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2238,"nodeType":"ExpressionStatement","src":"8222:103:18"},{"expression":{"arguments":[{"id":2240,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2222,"src":"8346:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2241,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2224,"src":"8352:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2242,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2226,"src":"8356:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2239,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"8336:9:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8336:28:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2244,"nodeType":"ExpressionStatement","src":"8336:28:18"}]},"documentation":{"id":2220,"nodeType":"StructuredDocumentation","src":"8015:51:18","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":2246,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":2228,"nodeType":"OverrideSpecifier","overrides":[],"src":"8151:8:18"},"parameters":{"id":2227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2222,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2246,"src":"8093:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2221,"name":"address","nodeType":"ElementaryTypeName","src":"8093:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2224,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2246,"src":"8107:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2223,"name":"address","nodeType":"ElementaryTypeName","src":"8107:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2226,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2246,"src":"8119:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2225,"name":"uint256","nodeType":"ElementaryTypeName","src":"8119:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8092:43:18"},"returnParameters":{"id":2229,"nodeType":"ParameterList","parameters":[],"src":"8160:0:18"},"scope":2751,"src":"8071:300:18","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2810],"body":{"id":2264,"nodeType":"Block","src":"8530:56:18","statements":[{"expression":{"arguments":[{"id":2258,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2249,"src":"8557:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2259,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2251,"src":"8563:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2260,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2253,"src":"8567:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8576:2:18","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":2257,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2265,2295],"referencedDeclaration":2295,"src":"8540:16:18","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":2262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8540:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2263,"nodeType":"ExpressionStatement","src":"8540:39:18"}]},"documentation":{"id":2247,"nodeType":"StructuredDocumentation","src":"8377:55:18","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":2265,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","overrides":{"id":2255,"nodeType":"OverrideSpecifier","overrides":[],"src":"8521:8:18"},"parameters":{"id":2254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2249,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2265,"src":"8463:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2248,"name":"address","nodeType":"ElementaryTypeName","src":"8463:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2251,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2265,"src":"8477:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2250,"name":"address","nodeType":"ElementaryTypeName","src":"8477:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2253,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2265,"src":"8489:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8489:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8462:43:18"},"returnParameters":{"id":2256,"nodeType":"ParameterList","parameters":[],"src":"8530:0:18"},"scope":2751,"src":"8437:149:18","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2866],"body":{"id":2294,"nodeType":"Block","src":"8765:169:18","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2280,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"8802:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":2281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8802:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2282,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2272,"src":"8816:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2279,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"8783:18:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8783:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564","id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8826:51:18","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":2278,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8775:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8775:103:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2286,"nodeType":"ExpressionStatement","src":"8775:103:18"},{"expression":{"arguments":[{"id":2288,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"8902:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2289,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2270,"src":"8908:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2290,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2272,"src":"8912:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2291,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2274,"src":"8921:5:18","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":2287,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2324,"src":"8888:13:18","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":2292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8888:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2293,"nodeType":"ExpressionStatement","src":"8888:39:18"}]},"documentation":{"id":2266,"nodeType":"StructuredDocumentation","src":"8592:55:18","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":2295,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","overrides":{"id":2276,"nodeType":"OverrideSpecifier","overrides":[],"src":"8756:8:18"},"parameters":{"id":2275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2268,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2295,"src":"8678:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2267,"name":"address","nodeType":"ElementaryTypeName","src":"8678:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2270,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2295,"src":"8692:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2269,"name":"address","nodeType":"ElementaryTypeName","src":"8692:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2272,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2295,"src":"8704:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2271,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2274,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":2295,"src":"8721:18:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2273,"name":"bytes","nodeType":"ElementaryTypeName","src":"8721:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8677:63:18"},"returnParameters":{"id":2277,"nodeType":"ParameterList","parameters":[],"src":"8765:0:18"},"scope":2751,"src":"8652:282:18","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2323,"nodeType":"Block","src":"9899:166:18","statements":[{"expression":{"arguments":[{"id":2308,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9919:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2309,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"9925:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2310,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"9929:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2307,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"9909:9:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9909:28:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2312,"nodeType":"ExpressionStatement","src":"9909:28:18"},{"expression":{"arguments":[{"arguments":[{"id":2315,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9978:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2316,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"9984:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2317,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"9988:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2318,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2304,"src":"9997:5:18","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":2314,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2715,"src":"9955:22:18","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":2319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9955:48:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":2320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10005:52:18","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":2313,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9947:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9947:111:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2322,"nodeType":"ExpressionStatement","src":"9947:111:18"}]},"documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"8940:851:18","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":2324,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":2305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2298,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2324,"src":"9819:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2297,"name":"address","nodeType":"ElementaryTypeName","src":"9819:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2300,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2324,"src":"9833:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2299,"name":"address","nodeType":"ElementaryTypeName","src":"9833:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2302,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2324,"src":"9845:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2301,"name":"uint256","nodeType":"ElementaryTypeName","src":"9845:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2304,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":2324,"src":"9862:18:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2303,"name":"bytes","nodeType":"ElementaryTypeName","src":"9862:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9818:63:18"},"returnParameters":{"id":2306,"nodeType":"ParameterList","parameters":[],"src":"9899:0:18"},"scope":2751,"src":"9796:269:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2337,"nodeType":"Block","src":"10439:54:18","statements":[{"expression":{"arguments":[{"id":2334,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2327,"src":"10478:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2332,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10456:12:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":2333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":3668,"src":"10456:21:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$3596_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$3596_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (bool)"}},"id":2335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10456:30:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2331,"id":2336,"nodeType":"Return","src":"10449:37:18"}]},"documentation":{"id":2325,"nodeType":"StructuredDocumentation","src":"10071:292:18","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":2338,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nodeType":"FunctionDefinition","parameters":{"id":2328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2327,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2338,"src":"10385:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2326,"name":"uint256","nodeType":"ElementaryTypeName","src":"10385:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10384:17:18"},"returnParameters":{"id":2331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2330,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2338,"src":"10433:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2329,"name":"bool","nodeType":"ElementaryTypeName","src":"10433:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10432:6:18"},"scope":2751,"src":"10368:125:18","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2379,"nodeType":"Block","src":"10750:252:18","statements":[{"expression":{"arguments":[{"arguments":[{"id":2350,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"10776:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2349,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"10768:7:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10768:16:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":2352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10786:46:18","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":2348,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10760:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10760:73:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2354,"nodeType":"ExpressionStatement","src":"10760:73:18"},{"assignments":[2356],"declarations":[{"constant":false,"id":2356,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2379,"src":"10843:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2355,"name":"address","nodeType":"ElementaryTypeName","src":"10843:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2361,"initialValue":{"arguments":[{"id":2359,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"10874:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2357,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2751,"src":"10859:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2751_$","typeString":"type(contract ERC721)"}},"id":2358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1955,"src":"10859:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10859:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10843:39:18"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2362,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"10900:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2363,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"10911:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10900:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2366,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"10932:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2365,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"10920:11:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10920:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2368,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"10944:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10920:31:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10900:51:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2373,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"10979:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2374,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"10986:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2371,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2751,"src":"10955:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2751_$","typeString":"type(contract ERC721)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isApprovedForAll","nodeType":"MemberAccess","referencedDeclaration":2219,"src":"10955:23:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10955:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10900:94:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2377,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10899:96:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2347,"id":2378,"nodeType":"Return","src":"10892:103:18"}]},"documentation":{"id":2339,"nodeType":"StructuredDocumentation","src":"10499:147:18","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":2380,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nodeType":"FunctionDefinition","parameters":{"id":2344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2341,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2380,"src":"10679:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2340,"name":"address","nodeType":"ElementaryTypeName","src":"10679:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2343,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2380,"src":"10696:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2342,"name":"uint256","nodeType":"ElementaryTypeName","src":"10696:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10678:34:18"},"returnParameters":{"id":2347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2346,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2380,"src":"10744:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2345,"name":"bool","nodeType":"ElementaryTypeName","src":"10744:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10743:6:18"},"scope":2751,"src":"10651:351:18","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2394,"nodeType":"Block","src":"11398:43:18","statements":[{"expression":{"arguments":[{"id":2389,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"11418:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2390,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2385,"src":"11422:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11431:2:18","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":2388,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2395,2424],"referencedDeclaration":2424,"src":"11408:9:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11408:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2393,"nodeType":"ExpressionStatement","src":"11408:26:18"}]},"documentation":{"id":2381,"nodeType":"StructuredDocumentation","src":"11008:320:18","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":2395,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nodeType":"FunctionDefinition","parameters":{"id":2386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2383,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2395,"src":"11352:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2382,"name":"address","nodeType":"ElementaryTypeName","src":"11352:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2385,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2395,"src":"11364:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2384,"name":"uint256","nodeType":"ElementaryTypeName","src":"11364:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11351:29:18"},"returnParameters":{"id":2387,"nodeType":"ParameterList","parameters":[],"src":"11398:0:18"},"scope":2751,"src":"11333:108:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2423,"nodeType":"Block","src":"11747:162:18","statements":[{"expression":{"arguments":[{"id":2406,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"11763:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2407,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2400,"src":"11767:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2405,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"11757:5:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11757:18:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2409,"nodeType":"ExpressionStatement","src":"11757:18:18"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":2414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11824:1:18","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":2413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11816:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2412,"name":"address","nodeType":"ElementaryTypeName","src":"11816:7:18","typeDescriptions":{}}},"id":2415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11816:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2416,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"11828:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2417,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2400,"src":"11832:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2418,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2402,"src":"11841:5:18","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":2411,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2715,"src":"11793:22:18","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":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11793:54:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":2420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11849:52:18","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":2410,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11785:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11785:117:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2422,"nodeType":"ExpressionStatement","src":"11785:117:18"}]},"documentation":{"id":2396,"nodeType":"StructuredDocumentation","src":"11447:210:18","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":2424,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nodeType":"FunctionDefinition","parameters":{"id":2403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2398,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2424,"src":"11681:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2397,"name":"address","nodeType":"ElementaryTypeName","src":"11681:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2400,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2424,"src":"11693:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2399,"name":"uint256","nodeType":"ElementaryTypeName","src":"11693:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2402,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":2424,"src":"11710:18:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2401,"name":"bytes","nodeType":"ElementaryTypeName","src":"11710:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11680:49:18"},"returnParameters":{"id":2404,"nodeType":"ParameterList","parameters":[],"src":"11747:0:18"},"scope":2751,"src":"11662:247:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2482,"nodeType":"Block","src":"12292:332:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2433,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"12310:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12324:1:18","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":2435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12316:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2434,"name":"address","nodeType":"ElementaryTypeName","src":"12316:7:18","typeDescriptions":{}}},"id":2437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12316:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"12310:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12328:34:18","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":2432,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12302:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12302:61:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2441,"nodeType":"ExpressionStatement","src":"12302:61:18"},{"expression":{"arguments":[{"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12381:17:18","subExpression":{"arguments":[{"id":2444,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"12390:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2443,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"12382:7:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12382:16:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12400:30:18","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":2442,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12373:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12373:58:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2449,"nodeType":"ExpressionStatement","src":"12373:58:18"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12471:1:18","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":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12463:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"12463:7:18","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12463:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2455,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"12475:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2456,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"12479:7:18","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":2450,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2750,"src":"12442:20:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12442:45:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2458,"nodeType":"ExpressionStatement","src":"12442:45:18"},{"expression":{"arguments":[{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"12520:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":2459,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1853,"src":"12498:13:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$4219_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":2461,"indexExpression":{"id":2460,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"12512:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12498:17:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":2462,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4239,"src":"12498:21:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$4219_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$4219_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12498:30:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2465,"nodeType":"ExpressionStatement","src":"12498:30:18"},{"expression":{"arguments":[{"id":2469,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"12556:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2470,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"12565:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2466,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"12539:12:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":2468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"set","nodeType":"MemberAccess","referencedDeclaration":3628,"src":"12539:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$3596_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$3596_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)"}},"id":2471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12539:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2472,"nodeType":"ExpressionStatement","src":"12539:29:18"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12601:1:18","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":2475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12593:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2474,"name":"address","nodeType":"ElementaryTypeName","src":"12593:7:18","typeDescriptions":{}}},"id":2477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12593:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2478,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"12605:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2479,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"12609:7:18","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":2473,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2766,"src":"12584:8:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12584:33:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2481,"nodeType":"EmitStatement","src":"12579:38:18"}]},"documentation":{"id":2425,"nodeType":"StructuredDocumentation","src":"11915:311:18","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":2483,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":2430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2427,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2483,"src":"12246:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2426,"name":"address","nodeType":"ElementaryTypeName","src":"12246:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2429,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2483,"src":"12258:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2428,"name":"uint256","nodeType":"ElementaryTypeName","src":"12258:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12245:29:18"},"returnParameters":{"id":2431,"nodeType":"ParameterList","parameters":[],"src":"12292:0:18"},"scope":2751,"src":"12231:393:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2551,"nodeType":"Block","src":"12890:478:18","statements":[{"assignments":[2490],"declarations":[{"constant":false,"id":2490,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2551,"src":"12900:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2489,"name":"address","nodeType":"ElementaryTypeName","src":"12900:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2495,"initialValue":{"arguments":[{"id":2493,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"12931:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2491,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2751,"src":"12916:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2751_$","typeString":"type(contract ERC721)"}},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1955,"src":"12916:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12916:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12900:39:18"},{"expression":{"arguments":[{"id":2497,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"12989:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13004:1:18","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":2499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12996:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"12996:7:18","typeDescriptions":{}}},"id":2501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12996:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2502,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"13008:7:18","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":2496,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2750,"src":"12968:20:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12968:48:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2504,"nodeType":"ExpressionStatement","src":"12968:48:18"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13071:1:18","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":2507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13063:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2506,"name":"address","nodeType":"ElementaryTypeName","src":"13063:7:18","typeDescriptions":{}}},"id":2509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13063:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2510,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"13075:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2505,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2739,"src":"13054:8:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13054:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2512,"nodeType":"ExpressionStatement","src":"13054:29:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"baseExpression":{"id":2515,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"13139:10:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":2517,"indexExpression":{"id":2516,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"13150:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13139:19:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"id":2514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13133:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2513,"name":"bytes","nodeType":"ElementaryTypeName","src":"13133:5:18","typeDescriptions":{}}},"id":2518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13133:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}},"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13133:33:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13170:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13133:38:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2528,"nodeType":"IfStatement","src":"13129:95:18","trueBody":{"id":2527,"nodeType":"Block","src":"13173:51:18","statements":[{"expression":{"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13187:26:18","subExpression":{"baseExpression":{"id":2522,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"13194:10:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":2524,"indexExpression":{"id":2523,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"13205:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13194:19:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2526,"nodeType":"ExpressionStatement","src":"13187:26:18"}]}},{"expression":{"arguments":[{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"13262:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":2529,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1853,"src":"13234:13:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$4219_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":2531,"indexExpression":{"id":2530,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"13248:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13234:20:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":2532,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":4259,"src":"13234:27:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$4219_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$4219_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13234:36:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2535,"nodeType":"ExpressionStatement","src":"13234:36:18"},{"expression":{"arguments":[{"id":2539,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"13301:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2536,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"13281:12:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":2538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":3648,"src":"13281:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$3596_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$3596_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) returns (bool)"}},"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13281:28:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2541,"nodeType":"ExpressionStatement","src":"13281:28:18"},{"eventCall":{"arguments":[{"id":2543,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"13334:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13349:1:18","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":2545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13341:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"13341:7:18","typeDescriptions":{}}},"id":2547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13341:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2548,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"13353:7:18","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":2542,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2766,"src":"13325:8:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13325:36:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2550,"nodeType":"EmitStatement","src":"13320:41:18"}]},"documentation":{"id":2484,"nodeType":"StructuredDocumentation","src":"12630:206:18","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":2552,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":2487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2486,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2552,"src":"12856:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2485,"name":"uint256","nodeType":"ElementaryTypeName","src":"12856:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12855:17:18"},"returnParameters":{"id":2488,"nodeType":"ParameterList","parameters":[],"src":"12890:0:18"},"scope":2751,"src":"12841:527:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2623,"nodeType":"Block","src":"13771:505:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2565,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"13804:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2563,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2751,"src":"13789:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2751_$","typeString":"type(contract ERC721)"}},"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1955,"src":"13789:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13789:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2567,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"13816:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13789:31:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e","id":2569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13822:43:18","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":2562,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13781:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13781:85:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2571,"nodeType":"ExpressionStatement","src":"13781:85:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2573,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"13902:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13916:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13908:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2574,"name":"address","nodeType":"ElementaryTypeName","src":"13908:7:18","typeDescriptions":{}}},"id":2577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13908:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"13902:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":2579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13920:38:18","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":2572,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13894:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13894:65:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2581,"nodeType":"ExpressionStatement","src":"13894:65:18"},{"expression":{"arguments":[{"id":2583,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"13991:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2584,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"13997:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2585,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"14001:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2582,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2750,"src":"13970:20:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13970:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2587,"nodeType":"ExpressionStatement","src":"13970:39:18"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14088:1:18","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":2590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14080:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2589,"name":"address","nodeType":"ElementaryTypeName","src":"14080:7:18","typeDescriptions":{}}},"id":2592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14080:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2593,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"14092:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2588,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2739,"src":"14071:8:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14071:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2595,"nodeType":"ExpressionStatement","src":"14071:29:18"},{"expression":{"arguments":[{"id":2600,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"14138:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":2596,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1853,"src":"14111:13:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$4219_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":2598,"indexExpression":{"id":2597,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"14125:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14111:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":2599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":4259,"src":"14111:26:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$4219_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$4219_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":2601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14111:35:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2602,"nodeType":"ExpressionStatement","src":"14111:35:18"},{"expression":{"arguments":[{"id":2607,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"14178:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":2603,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1853,"src":"14156:13:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$4219_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":2605,"indexExpression":{"id":2604,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"14170:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14156:17:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":2606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4239,"src":"14156:21:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$4219_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$4219_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14156:30:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2609,"nodeType":"ExpressionStatement","src":"14156:30:18"},{"expression":{"arguments":[{"id":2613,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"14214:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2614,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"14223:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2610,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"14197:12:18","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":2612,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"set","nodeType":"MemberAccess","referencedDeclaration":3628,"src":"14197:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$3596_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$3596_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)"}},"id":2615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14197:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2616,"nodeType":"ExpressionStatement","src":"14197:29:18"},{"eventCall":{"arguments":[{"id":2618,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"14251:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2619,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"14257:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2620,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"14261:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2617,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2766,"src":"14242:8:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14242:27:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2622,"nodeType":"EmitStatement","src":"14237:32:18"}]},"documentation":{"id":2553,"nodeType":"StructuredDocumentation","src":"13374:313:18","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":2624,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":2560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2555,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2624,"src":"13711:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2554,"name":"address","nodeType":"ElementaryTypeName","src":"13711:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2557,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2624,"src":"13725:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2556,"name":"address","nodeType":"ElementaryTypeName","src":"13725:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2559,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2624,"src":"13737:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2558,"name":"uint256","nodeType":"ElementaryTypeName","src":"13737:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13710:43:18"},"returnParameters":{"id":2561,"nodeType":"ParameterList","parameters":[],"src":"13771:0:18"},"scope":2751,"src":"13692:584:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2645,"nodeType":"Block","src":"14504:131:18","statements":[{"expression":{"arguments":[{"arguments":[{"id":2634,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"14530:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2633,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"14522:7:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14522:16:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e","id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14540:46:18","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":2632,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14514:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14514:73:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2638,"nodeType":"ExpressionStatement","src":"14514:73:18"},{"expression":{"id":2643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2639,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"14597:10:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":2641,"indexExpression":{"id":2640,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"14608:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14597:19:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2642,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"14619:9:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"14597:31:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2644,"nodeType":"ExpressionStatement","src":"14597:31:18"}]},"documentation":{"id":2625,"nodeType":"StructuredDocumentation","src":"14282:136:18","text":" @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":2646,"implemented":true,"kind":"function","modifiers":[],"name":"_setTokenURI","nodeType":"FunctionDefinition","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2627,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2646,"src":"14445:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2626,"name":"uint256","nodeType":"ElementaryTypeName","src":"14445:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"_tokenURI","nodeType":"VariableDeclaration","scope":2646,"src":"14462:23:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2628,"name":"string","nodeType":"ElementaryTypeName","src":"14462:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14444:42:18"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"14504:0:18"},"scope":2751,"src":"14423:212:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2656,"nodeType":"Block","src":"14920:36:18","statements":[{"expression":{"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2652,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1875,"src":"14930:8:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2653,"name":"baseURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"14941:8:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"14930:19:18","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2655,"nodeType":"ExpressionStatement","src":"14930:19:18"}]},"documentation":{"id":2647,"nodeType":"StructuredDocumentation","src":"14641:212:18","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":2657,"implemented":true,"kind":"function","modifiers":[],"name":"_setBaseURI","nodeType":"FunctionDefinition","parameters":{"id":2650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2649,"mutability":"mutable","name":"baseURI_","nodeType":"VariableDeclaration","scope":2657,"src":"14879:22:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2648,"name":"string","nodeType":"ElementaryTypeName","src":"14879:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14878:24:18"},"returnParameters":{"id":2651,"nodeType":"ParameterList","parameters":[],"src":"14920:0:18"},"scope":2751,"src":"14858:98:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2714,"nodeType":"Block","src":"15639:459:18","statements":[{"condition":{"id":2674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15653:16:18","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2671,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"15654:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":2963,"src":"15654:13:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":2673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15654:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2678,"nodeType":"IfStatement","src":"15649:58:18","trueBody":{"id":2677,"nodeType":"Block","src":"15671:36:18","statements":[{"expression":{"hexValue":"74727565","id":2675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15692:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2670,"id":2676,"nodeType":"Return","src":"15685:11:18"}]}},{"assignments":[2680],"declarations":[{"constant":false,"id":2680,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":2714,"src":"15716:23:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2679,"name":"bytes","nodeType":"ElementaryTypeName","src":"15716:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2698,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"arguments":[{"id":2686,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"15810:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2685,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"15794:15:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$2943_$","typeString":"type(contract IERC721Receiver)"}},"id":2687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15794:19:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$2943","typeString":"contract IERC721Receiver"}},"id":2688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2942,"src":"15794:36:18","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":2689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"15794:45:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2690,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"15853:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":2691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15853:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2692,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"15879:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2693,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2664,"src":"15897:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2694,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2666,"src":"15918:5:18","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":2683,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15758:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"15758:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":2695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15758:175:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":2696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15935:52:18","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":2681,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"15742:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":3034,"src":"15742:15:18","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":2697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15742:246:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"15716:272:18"},{"assignments":[2700],"declarations":[{"constant":false,"id":2700,"mutability":"mutable","name":"retval","nodeType":"VariableDeclaration","scope":2714,"src":"15998:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2699,"name":"bytes4","nodeType":"ElementaryTypeName","src":"15998:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":2708,"initialValue":{"arguments":[{"id":2703,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2680,"src":"16025:10:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16038:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2704,"name":"bytes4","nodeType":"ElementaryTypeName","src":"16038:6:18","typeDescriptions":{}}}],"id":2706,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16037:8:18","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":2701,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16014:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"16014:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16014:32:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"15998:48:18"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2709,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"16064:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2710,"name":"_ERC721_RECEIVED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1849,"src":"16074:16:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"16064:26:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2712,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16063:28:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2670,"id":2713,"nodeType":"Return","src":"16056:35:18"}]},"documentation":{"id":2658,"nodeType":"StructuredDocumentation","src":"14962:542:18","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":2715,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nodeType":"FunctionDefinition","parameters":{"id":2667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2660,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2715,"src":"15541:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2659,"name":"address","nodeType":"ElementaryTypeName","src":"15541:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2662,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2715,"src":"15555:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2661,"name":"address","nodeType":"ElementaryTypeName","src":"15555:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2664,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2715,"src":"15567:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2663,"name":"uint256","nodeType":"ElementaryTypeName","src":"15567:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2666,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":2715,"src":"15584:18:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2665,"name":"bytes","nodeType":"ElementaryTypeName","src":"15584:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15540:63:18"},"returnParameters":{"id":2670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2669,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2715,"src":"15629:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2668,"name":"bool","nodeType":"ElementaryTypeName","src":"15629:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15628:6:18"},"scope":2751,"src":"15509:589:18","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2738,"nodeType":"Block","src":"16274:125:18","statements":[{"expression":{"id":2727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2723,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1859,"src":"16284:15:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2725,"indexExpression":{"id":2724,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2720,"src":"16300:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16284:24:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2726,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2718,"src":"16311:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16284:29:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2728,"nodeType":"ExpressionStatement","src":"16284:29:18"},{"eventCall":{"arguments":[{"arguments":[{"id":2732,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2720,"src":"16352:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2730,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2751,"src":"16337:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2751_$","typeString":"type(contract ERC721)"}},"id":2731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1955,"src":"16337:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16337:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2734,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2718,"src":"16362:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2735,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2720,"src":"16366:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2729,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2775,"src":"16328:8:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16328:46:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2737,"nodeType":"EmitStatement","src":"16323:51:18"}]},"documentation":{"id":2716,"nodeType":"StructuredDocumentation","src":"16104:101:18","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":2739,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":2721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2718,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2739,"src":"16228:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2717,"name":"address","nodeType":"ElementaryTypeName","src":"16228:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2720,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2739,"src":"16240:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2719,"name":"uint256","nodeType":"ElementaryTypeName","src":"16240:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16227:29:18"},"returnParameters":{"id":2722,"nodeType":"ParameterList","parameters":[],"src":"16274:0:18"},"scope":2751,"src":"16210:189:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2749,"nodeType":"Block","src":"17085:3:18","statements":[]},"documentation":{"id":2740,"nodeType":"StructuredDocumentation","src":"16405:585:18","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":2750,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":2747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2742,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2750,"src":"17025:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2741,"name":"address","nodeType":"ElementaryTypeName","src":"17025:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2744,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2750,"src":"17039:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2743,"name":"address","nodeType":"ElementaryTypeName","src":"17039:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2746,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2750,"src":"17051:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2745,"name":"uint256","nodeType":"ElementaryTypeName","src":"17051:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17024:43:18"},"returnParameters":{"id":2748,"nodeType":"ParameterList","parameters":[],"src":"17085:0:18"},"scope":2751,"src":"16995:93:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":2752,"src":"563:16527:18"}],"src":"33:17058:18"},"id":18},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[1374],"IERC721":[2867]},"id":2868,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2753,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:19"},{"absolutePath":"@openzeppelin/contracts/introspection/IERC165.sol","file":"../../introspection/IERC165.sol","id":2754,"nodeType":"ImportDirective","scope":2868,"sourceUnit":1375,"src":"58:41:19","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2756,"name":"IERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":1374,"src":"190:7:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC165_$1374","typeString":"contract IERC165"}},"id":2757,"nodeType":"InheritanceSpecifier","src":"190:7:19"}],"contractDependencies":[1374],"contractKind":"interface","documentation":{"id":2755,"nodeType":"StructuredDocumentation","src":"101:67:19","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":2867,"linearizedBaseContracts":[2867,1374],"name":"IERC721","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2758,"nodeType":"StructuredDocumentation","src":"204:88:19","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"id":2766,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":2765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2760,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2766,"src":"312:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2759,"name":"address","nodeType":"ElementaryTypeName","src":"312:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2762,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2766,"src":"334:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2761,"name":"address","nodeType":"ElementaryTypeName","src":"334:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2764,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2766,"src":"354:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2763,"name":"uint256","nodeType":"ElementaryTypeName","src":"354:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"311:67:19"},"src":"297:82:19"},{"anonymous":false,"documentation":{"id":2767,"nodeType":"StructuredDocumentation","src":"385:94:19","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"id":2775,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":2774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2769,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2775,"src":"499:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2768,"name":"address","nodeType":"ElementaryTypeName","src":"499:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2771,"indexed":true,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":2775,"src":"522:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2770,"name":"address","nodeType":"ElementaryTypeName","src":"522:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2773,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2775,"src":"548:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2772,"name":"uint256","nodeType":"ElementaryTypeName","src":"548:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"498:74:19"},"src":"484:89:19"},{"anonymous":false,"documentation":{"id":2776,"nodeType":"StructuredDocumentation","src":"579:117:19","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"id":2784,"name":"ApprovalForAll","nodeType":"EventDefinition","parameters":{"id":2783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2778,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2784,"src":"722:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2777,"name":"address","nodeType":"ElementaryTypeName","src":"722:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2780,"indexed":true,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":2784,"src":"745:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2779,"name":"address","nodeType":"ElementaryTypeName","src":"745:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2782,"indexed":false,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":2784,"src":"771:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2781,"name":"bool","nodeType":"ElementaryTypeName","src":"771:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"721:64:19"},"src":"701:85:19"},{"documentation":{"id":2785,"nodeType":"StructuredDocumentation","src":"792:76:19","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":2792,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":2788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2787,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2792,"src":"892:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2786,"name":"address","nodeType":"ElementaryTypeName","src":"892:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"891:15:19"},"returnParameters":{"id":2791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2790,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":2792,"src":"930:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2789,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"929:17:19"},"scope":2867,"src":"873:74:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2793,"nodeType":"StructuredDocumentation","src":"953:131:19","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":2800,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nodeType":"FunctionDefinition","parameters":{"id":2796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2795,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2800,"src":"1106:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2794,"name":"uint256","nodeType":"ElementaryTypeName","src":"1106:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1105:17:19"},"returnParameters":{"id":2799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2798,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2800,"src":"1146:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2797,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1145:15:19"},"scope":2867,"src":"1089:72:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2801,"nodeType":"StructuredDocumentation","src":"1167:690:19","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":2810,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":2808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2803,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2810,"src":"1888:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2802,"name":"address","nodeType":"ElementaryTypeName","src":"1888:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2805,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2810,"src":"1902:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2804,"name":"address","nodeType":"ElementaryTypeName","src":"1902:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2807,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2810,"src":"1914:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2806,"name":"uint256","nodeType":"ElementaryTypeName","src":"1914:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1887:43:19"},"returnParameters":{"id":2809,"nodeType":"ParameterList","parameters":[],"src":"1939:0:19"},"scope":2867,"src":"1862:78:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2811,"nodeType":"StructuredDocumentation","src":"1946:504:19","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":2820,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":2818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2813,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2820,"src":"2477:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2812,"name":"address","nodeType":"ElementaryTypeName","src":"2477:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2815,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2820,"src":"2491:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2814,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2817,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2820,"src":"2503:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2816,"name":"uint256","nodeType":"ElementaryTypeName","src":"2503:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2476:43:19"},"returnParameters":{"id":2819,"nodeType":"ParameterList","parameters":[],"src":"2528:0:19"},"scope":2867,"src":"2455:74:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2821,"nodeType":"StructuredDocumentation","src":"2535:452:19","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":2828,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":2826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2823,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2828,"src":"3009:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2822,"name":"address","nodeType":"ElementaryTypeName","src":"3009:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2825,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2828,"src":"3021:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2824,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3008:29:19"},"returnParameters":{"id":2827,"nodeType":"ParameterList","parameters":[],"src":"3046:0:19"},"scope":2867,"src":"2992:55:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2829,"nodeType":"StructuredDocumentation","src":"3053:139:19","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":2836,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nodeType":"FunctionDefinition","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2831,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2836,"src":"3218:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2830,"name":"uint256","nodeType":"ElementaryTypeName","src":"3218:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3217:17:19"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":2836,"src":"3258:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2833,"name":"address","nodeType":"ElementaryTypeName","src":"3258:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3257:18:19"},"scope":2867,"src":"3197:79:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2837,"nodeType":"StructuredDocumentation","src":"3282:309:19","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":2844,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nodeType":"FunctionDefinition","parameters":{"id":2842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2839,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":2844,"src":"3623:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2838,"name":"address","nodeType":"ElementaryTypeName","src":"3623:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2841,"mutability":"mutable","name":"_approved","nodeType":"VariableDeclaration","scope":2844,"src":"3641:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2840,"name":"bool","nodeType":"ElementaryTypeName","src":"3641:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3622:34:19"},"returnParameters":{"id":2843,"nodeType":"ParameterList","parameters":[],"src":"3665:0:19"},"scope":2867,"src":"3596:70:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2845,"nodeType":"StructuredDocumentation","src":"3672:138:19","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":2854,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nodeType":"FunctionDefinition","parameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2847,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2854,"src":"3841:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2846,"name":"address","nodeType":"ElementaryTypeName","src":"3841:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2849,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":2854,"src":"3856:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2848,"name":"address","nodeType":"ElementaryTypeName","src":"3856:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3840:33:19"},"returnParameters":{"id":2853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2852,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2854,"src":"3897:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2851,"name":"bool","nodeType":"ElementaryTypeName","src":"3897:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3896:6:19"},"scope":2867,"src":"3815:88:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2855,"nodeType":"StructuredDocumentation","src":"3909:568:19","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":2866,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":2864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2857,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2866,"src":"4508:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2856,"name":"address","nodeType":"ElementaryTypeName","src":"4508:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2859,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2866,"src":"4522:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2858,"name":"address","nodeType":"ElementaryTypeName","src":"4522:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2861,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2866,"src":"4534:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2860,"name":"uint256","nodeType":"ElementaryTypeName","src":"4534:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2863,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":2866,"src":"4551:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2862,"name":"bytes","nodeType":"ElementaryTypeName","src":"4551:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4507:64:19"},"returnParameters":{"id":2865,"nodeType":"ParameterList","parameters":[],"src":"4580:0:19"},"scope":2867,"src":"4482:99:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2868,"src":"169:4414:19"}],"src":"33:4551:19"},"id":19},"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol","exportedSymbols":{"IERC165":[1374],"IERC721":[2867],"IERC721Enumerable":[2898]},"id":2899,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2869,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:20"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":2870,"nodeType":"ImportDirective","scope":2899,"sourceUnit":2868,"src":"58:23:20","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2872,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":2867,"src":"251:7:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2867","typeString":"contract IERC721"}},"id":2873,"nodeType":"InheritanceSpecifier","src":"251:7:20"}],"contractDependencies":[1374,2867],"contractKind":"interface","documentation":{"id":2871,"nodeType":"StructuredDocumentation","src":"83:136:20","text":" @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":2898,"linearizedBaseContracts":[2898,2867,1374],"name":"IERC721Enumerable","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2874,"nodeType":"StructuredDocumentation","src":"266:82:20","text":" @dev Returns the total amount of tokens stored by the contract."},"functionSelector":"18160ddd","id":2879,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":2875,"nodeType":"ParameterList","parameters":[],"src":"373:2:20"},"returnParameters":{"id":2878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2877,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2879,"src":"399:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2876,"name":"uint256","nodeType":"ElementaryTypeName","src":"399:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"398:9:20"},"scope":2898,"src":"353:55:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2880,"nodeType":"StructuredDocumentation","src":"414:171:20","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":2889,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nodeType":"FunctionDefinition","parameters":{"id":2885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2882,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2889,"src":"619:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2881,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2884,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":2889,"src":"634:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2883,"name":"uint256","nodeType":"ElementaryTypeName","src":"634:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"618:30:20"},"returnParameters":{"id":2888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2887,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2889,"src":"672:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2886,"name":"uint256","nodeType":"ElementaryTypeName","src":"672:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"671:17:20"},"scope":2898,"src":"590:99:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2890,"nodeType":"StructuredDocumentation","src":"695:164:20","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":2897,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nodeType":"FunctionDefinition","parameters":{"id":2893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2892,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":2897,"src":"886:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2891,"name":"uint256","nodeType":"ElementaryTypeName","src":"886:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"885:15:20"},"returnParameters":{"id":2896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2895,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2897,"src":"924:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2894,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:9:20"},"scope":2898,"src":"864:69:20","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2899,"src":"220:715:20"}],"src":"33:903:20"},"id":20},"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol","exportedSymbols":{"IERC165":[1374],"IERC721":[2867],"IERC721Metadata":[2925]},"id":2926,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2900,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:21"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":2901,"nodeType":"ImportDirective","scope":2926,"sourceUnit":2868,"src":"58:23:21","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2903,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":2867,"src":"246:7:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2867","typeString":"contract IERC721"}},"id":2904,"nodeType":"InheritanceSpecifier","src":"246:7:21"}],"contractDependencies":[1374,2867],"contractKind":"interface","documentation":{"id":2902,"nodeType":"StructuredDocumentation","src":"83:133:21","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":2925,"linearizedBaseContracts":[2925,2867,1374],"name":"IERC721Metadata","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2905,"nodeType":"StructuredDocumentation","src":"261:58:21","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":2910,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":2906,"nodeType":"ParameterList","parameters":[],"src":"337:2:21"},"returnParameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2908,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2910,"src":"363:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2907,"name":"string","nodeType":"ElementaryTypeName","src":"363:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"362:15:21"},"scope":2925,"src":"324:54:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2911,"nodeType":"StructuredDocumentation","src":"384:60:21","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":2916,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":2912,"nodeType":"ParameterList","parameters":[],"src":"464:2:21"},"returnParameters":{"id":2915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2914,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2916,"src":"490:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2913,"name":"string","nodeType":"ElementaryTypeName","src":"490:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"489:15:21"},"scope":2925,"src":"449:56:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2917,"nodeType":"StructuredDocumentation","src":"511:90:21","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":2924,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","parameters":{"id":2920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2919,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2924,"src":"624:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2918,"name":"uint256","nodeType":"ElementaryTypeName","src":"624:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"623:17:21"},"returnParameters":{"id":2923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2922,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2924,"src":"664:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2921,"name":"string","nodeType":"ElementaryTypeName","src":"664:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"663:15:21"},"scope":2925,"src":"606:73:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2926,"src":"217:464:21"}],"src":"33:649:21"},"id":21},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[2943]},"id":2944,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2927,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:22"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2928,"nodeType":"StructuredDocumentation","src":"58:152:22","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":2943,"linearizedBaseContracts":[2943],"name":"IERC721Receiver","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2929,"nodeType":"StructuredDocumentation","src":"243:485:22","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":2942,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nodeType":"FunctionDefinition","parameters":{"id":2938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2931,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":2942,"src":"759:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2930,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2933,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2942,"src":"777:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2932,"name":"address","nodeType":"ElementaryTypeName","src":"777:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2935,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":2942,"src":"791:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2934,"name":"uint256","nodeType":"ElementaryTypeName","src":"791:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2937,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":2942,"src":"808:19:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2936,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"758:70:22"},"returnParameters":{"id":2941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2940,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2942,"src":"847:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2939,"name":"bytes4","nodeType":"ElementaryTypeName","src":"847:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"846:8:22"},"scope":2943,"src":"733:122:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2944,"src":"211:646:22"}],"src":"33:825:22"},"id":22},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[3239]},"id":3240,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2945,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:23"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":2946,"nodeType":"StructuredDocumentation","src":"58:67:23","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":3239,"linearizedBaseContracts":[3239],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":2962,"nodeType":"Block","src":"784:347:23","statements":[{"assignments":[2955],"declarations":[{"constant":false,"id":2955,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":2962,"src":"981:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2954,"name":"uint256","nodeType":"ElementaryTypeName","src":"981:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2956,"nodeType":"VariableDeclarationStatement","src":"981:12:23"},{"AST":{"nodeType":"YulBlock","src":"1068:32:23","statements":[{"nodeType":"YulAssignment","src":"1070:28:23","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1090:7:23"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"1078:11:23"},"nodeType":"YulFunctionCall","src":"1078:20:23"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1070:4:23"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2949,"isOffset":false,"isSlot":false,"src":"1090:7:23","valueSize":1},{"declaration":2955,"isOffset":false,"isSlot":false,"src":"1070:4:23","valueSize":1}],"id":2957,"nodeType":"InlineAssembly","src":"1059:41:23"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2958,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2955,"src":"1116:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1123:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1116:8:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2953,"id":2961,"nodeType":"Return","src":"1109:15:23"}]},"documentation":{"id":2947,"nodeType":"StructuredDocumentation","src":"148:565:23","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":2963,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":2950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2949,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2963,"src":"738:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2948,"name":"address","nodeType":"ElementaryTypeName","src":"738:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"737:17:23"},"returnParameters":{"id":2953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2952,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2963,"src":"778:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2951,"name":"bool","nodeType":"ElementaryTypeName","src":"778:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"777:6:23"},"scope":3239,"src":"718:413:23","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2996,"nodeType":"Block","src":"2119:320:23","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2974,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2145:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$3239","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$3239","typeString":"library Address"}],"id":2973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2137:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2972,"name":"address","nodeType":"ElementaryTypeName","src":"2137:7:23","typeDescriptions":{}}},"id":2975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2137:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2137:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2977,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2968,"src":"2162:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2137:31:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":2979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2170:31:23","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":2971,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2129:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2129:73:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2981,"nodeType":"ExpressionStatement","src":"2129:73:23"},{"assignments":[2983,null],"declarations":[{"constant":false,"id":2983,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":2996,"src":"2291:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2982,"name":"bool","nodeType":"ElementaryTypeName","src":"2291:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2990,"initialValue":{"arguments":[{"hexValue":"","id":2988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2341:2:23","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":2984,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2966,"src":"2309:9:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2309:14:23","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":2987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2986,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2968,"src":"2332:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2309:31:23","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":2989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2309:35:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2290:54:23"},{"expression":{"arguments":[{"id":2992,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2983,"src":"2362:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":2993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2371:60:23","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":2991,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2354:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2354:78:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2995,"nodeType":"ExpressionStatement","src":"2354:78:23"}]},"documentation":{"id":2964,"nodeType":"StructuredDocumentation","src":"1137:906:23","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":2997,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":2969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2966,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2997,"src":"2067:25:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2965,"name":"address","nodeType":"ElementaryTypeName","src":"2067:15:23","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":2968,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2997,"src":"2094:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2967,"name":"uint256","nodeType":"ElementaryTypeName","src":"2094:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2066:43:23"},"returnParameters":{"id":2970,"nodeType":"ParameterList","parameters":[],"src":"2119:0:23"},"scope":3239,"src":"2048:391:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3013,"nodeType":"Block","src":"3269:82:23","statements":[{"expression":{"arguments":[{"id":3008,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3000,"src":"3297:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3009,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"3305:4:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":3010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3311:32:23","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":3007,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[3014,3034],"referencedDeclaration":3034,"src":"3284:12:23","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":3011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3284:60:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3006,"id":3012,"nodeType":"Return","src":"3277:67:23"}]},"documentation":{"id":2998,"nodeType":"StructuredDocumentation","src":"2445:730:23","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":3014,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":3003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3000,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":3014,"src":"3202:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2999,"name":"address","nodeType":"ElementaryTypeName","src":"3202:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3002,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3014,"src":"3218:17:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3001,"name":"bytes","nodeType":"ElementaryTypeName","src":"3218:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3201:35:23"},"returnParameters":{"id":3006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3005,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3014,"src":"3255:12:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3004,"name":"bytes","nodeType":"ElementaryTypeName","src":"3255:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3254:14:23"},"scope":3239,"src":"3180:171:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3033,"nodeType":"Block","src":"3690:76:23","statements":[{"expression":{"arguments":[{"id":3027,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3017,"src":"3729:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3028,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"3737:4:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":3029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3743:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3030,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3021,"src":"3746:12:23","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":3026,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[3054,3104],"referencedDeclaration":3104,"src":"3707:21:23","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":3031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3707:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3025,"id":3032,"nodeType":"Return","src":"3700:59:23"}]},"documentation":{"id":3015,"nodeType":"StructuredDocumentation","src":"3357:211:23","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":3034,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":3022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3017,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":3034,"src":"3595:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3016,"name":"address","nodeType":"ElementaryTypeName","src":"3595:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3019,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3034,"src":"3611:17:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3018,"name":"bytes","nodeType":"ElementaryTypeName","src":"3611:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3021,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":3034,"src":"3630:26:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3020,"name":"string","nodeType":"ElementaryTypeName","src":"3630:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3594:63:23"},"returnParameters":{"id":3025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3024,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3034,"src":"3676:12:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3023,"name":"bytes","nodeType":"ElementaryTypeName","src":"3676:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3675:14:23"},"scope":3239,"src":"3573:193:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3053,"nodeType":"Block","src":"4241:111:23","statements":[{"expression":{"arguments":[{"id":3047,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"4280:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3048,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3039,"src":"4288:4:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3049,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"4294:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":3050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4301:43:23","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":3046,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[3054,3104],"referencedDeclaration":3104,"src":"4258:21:23","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":3051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4258:87:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3045,"id":3052,"nodeType":"Return","src":"4251:94:23"}]},"documentation":{"id":3035,"nodeType":"StructuredDocumentation","src":"3772:351:23","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":3054,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":3042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3037,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":3054,"src":"4159:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3036,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3039,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3054,"src":"4175:17:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3038,"name":"bytes","nodeType":"ElementaryTypeName","src":"4175:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3041,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3054,"src":"4194:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3040,"name":"uint256","nodeType":"ElementaryTypeName","src":"4194:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4158:50:23"},"returnParameters":{"id":3045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3044,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3054,"src":"4227:12:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3043,"name":"bytes","nodeType":"ElementaryTypeName","src":"4227:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4226:14:23"},"scope":3239,"src":"4128:224:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3103,"nodeType":"Block","src":"4741:382:23","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":3071,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4767:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$3239","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$3239","typeString":"library Address"}],"id":3070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4759:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3069,"name":"address","nodeType":"ElementaryTypeName","src":"4759:7:23","typeDescriptions":{}}},"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4759:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"4759:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3074,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3061,"src":"4784:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4759:30:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":3076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4791:40:23","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":3068,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4751:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4751:81:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3078,"nodeType":"ExpressionStatement","src":"4751:81:23"},{"expression":{"arguments":[{"arguments":[{"id":3081,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"4861:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3080,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2963,"src":"4850:10:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":3082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4850:18:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":3083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4870:31:23","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":3079,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4842:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4842:60:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3085,"nodeType":"ExpressionStatement","src":"4842:60:23"},{"assignments":[3087,3089],"declarations":[{"constant":false,"id":3087,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":3103,"src":"4973:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3086,"name":"bool","nodeType":"ElementaryTypeName","src":"4973:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3089,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":3103,"src":"4987:23:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3088,"name":"bytes","nodeType":"ElementaryTypeName","src":"4987:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3096,"initialValue":{"arguments":[{"id":3094,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3059,"src":"5042:4:23","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":3090,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"5014:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5014:11:23","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":3093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":3092,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3061,"src":"5034:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5014:27:23","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":3095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5014:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4972:75:23"},{"expression":{"arguments":[{"id":3098,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"5082:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3099,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3089,"src":"5091:10:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3100,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"5103:12:23","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":3097,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3238,"src":"5064:17:23","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":3101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5064:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3067,"id":3102,"nodeType":"Return","src":"5057:59:23"}]},"documentation":{"id":3055,"nodeType":"StructuredDocumentation","src":"4358:237:23","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":3104,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":3064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3057,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":3104,"src":"4631:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3056,"name":"address","nodeType":"ElementaryTypeName","src":"4631:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3059,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3104,"src":"4647:17:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3058,"name":"bytes","nodeType":"ElementaryTypeName","src":"4647:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3061,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3104,"src":"4666:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3060,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3063,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":3104,"src":"4681:26:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3062,"name":"string","nodeType":"ElementaryTypeName","src":"4681:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4630:78:23"},"returnParameters":{"id":3067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3066,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3104,"src":"4727:12:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3065,"name":"bytes","nodeType":"ElementaryTypeName","src":"4727:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4726:14:23"},"scope":3239,"src":"4600:523:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3120,"nodeType":"Block","src":"5400:97:23","statements":[{"expression":{"arguments":[{"id":3115,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3107,"src":"5436:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3116,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"5444:4:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":3117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5450:39:23","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":3114,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[3121,3156],"referencedDeclaration":3156,"src":"5417:18:23","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":3118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5417:73:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3113,"id":3119,"nodeType":"Return","src":"5410:80:23"}]},"documentation":{"id":3105,"nodeType":"StructuredDocumentation","src":"5129:166:23","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":3121,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nodeType":"FunctionDefinition","parameters":{"id":3110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3107,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":3121,"src":"5328:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3106,"name":"address","nodeType":"ElementaryTypeName","src":"5328:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3109,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3121,"src":"5344:17:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3108,"name":"bytes","nodeType":"ElementaryTypeName","src":"5344:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5327:35:23"},"returnParameters":{"id":3113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3112,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3121,"src":"5386:12:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3111,"name":"bytes","nodeType":"ElementaryTypeName","src":"5386:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5385:14:23"},"scope":3239,"src":"5300:197:23","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3155,"nodeType":"Block","src":"5809:288:23","statements":[{"expression":{"arguments":[{"arguments":[{"id":3135,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"5838:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3134,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2963,"src":"5827:10:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":3136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5827:18:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":3137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5847:38:23","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":3133,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5819:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5819:67:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3139,"nodeType":"ExpressionStatement","src":"5819:67:23"},{"assignments":[3141,3143],"declarations":[{"constant":false,"id":3141,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":3155,"src":"5957:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3140,"name":"bool","nodeType":"ElementaryTypeName","src":"5957:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3143,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":3155,"src":"5971:23:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3142,"name":"bytes","nodeType":"ElementaryTypeName","src":"5971:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3148,"initialValue":{"arguments":[{"id":3146,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3126,"src":"6016:4:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3144,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"5998:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"5998:17:23","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":3147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5998:23:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5956:65:23"},{"expression":{"arguments":[{"id":3150,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3141,"src":"6056:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3151,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"6065:10:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3152,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3128,"src":"6077:12:23","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":3149,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3238,"src":"6038:17:23","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":3153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6038:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3132,"id":3154,"nodeType":"Return","src":"6031:59:23"}]},"documentation":{"id":3122,"nodeType":"StructuredDocumentation","src":"5503:173:23","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":3156,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nodeType":"FunctionDefinition","parameters":{"id":3129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3124,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":3156,"src":"5709:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3123,"name":"address","nodeType":"ElementaryTypeName","src":"5709:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3126,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3156,"src":"5725:17:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3125,"name":"bytes","nodeType":"ElementaryTypeName","src":"5725:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3128,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":3156,"src":"5744:26:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3127,"name":"string","nodeType":"ElementaryTypeName","src":"5744:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5708:63:23"},"returnParameters":{"id":3132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3131,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3156,"src":"5795:12:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3130,"name":"bytes","nodeType":"ElementaryTypeName","src":"5795:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5794:14:23"},"scope":3239,"src":"5681:416:23","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3172,"nodeType":"Block","src":"6373:101:23","statements":[{"expression":{"arguments":[{"id":3167,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3159,"src":"6411:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3168,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3161,"src":"6419:4:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":3169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6425:41:23","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":3166,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[3173,3208],"referencedDeclaration":3208,"src":"6390:20:23","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":3170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6390:77:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3165,"id":3171,"nodeType":"Return","src":"6383:84:23"}]},"documentation":{"id":3157,"nodeType":"StructuredDocumentation","src":"6103:168:23","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":3173,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":3162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3159,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":3173,"src":"6306:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3158,"name":"address","nodeType":"ElementaryTypeName","src":"6306:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3161,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3173,"src":"6322:17:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3160,"name":"bytes","nodeType":"ElementaryTypeName","src":"6322:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6305:35:23"},"returnParameters":{"id":3165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3164,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3173,"src":"6359:12:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3163,"name":"bytes","nodeType":"ElementaryTypeName","src":"6359:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6358:14:23"},"scope":3239,"src":"6276:198:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3207,"nodeType":"Block","src":"6785:292:23","statements":[{"expression":{"arguments":[{"arguments":[{"id":3187,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3176,"src":"6814:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3186,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2963,"src":"6803:10:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":3188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6803:18:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","id":3189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:40:23","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":3185,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6795:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6795:69:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3191,"nodeType":"ExpressionStatement","src":"6795:69:23"},{"assignments":[3193,3195],"declarations":[{"constant":false,"id":3193,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":3207,"src":"6935:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3192,"name":"bool","nodeType":"ElementaryTypeName","src":"6935:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3195,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":3207,"src":"6949:23:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3194,"name":"bytes","nodeType":"ElementaryTypeName","src":"6949:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3200,"initialValue":{"arguments":[{"id":3198,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"6996:4:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3196,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3176,"src":"6976:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"6976:19:23","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":3199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6976:25:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6934:67:23"},{"expression":{"arguments":[{"id":3202,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3193,"src":"7036:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3203,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3195,"src":"7045:10:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3204,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3180,"src":"7057:12:23","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":3201,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3238,"src":"7018:17:23","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":3205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7018:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3184,"id":3206,"nodeType":"Return","src":"7011:59:23"}]},"documentation":{"id":3174,"nodeType":"StructuredDocumentation","src":"6480:175:23","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":3208,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":3181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3176,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":3208,"src":"6690:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3175,"name":"address","nodeType":"ElementaryTypeName","src":"6690:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3178,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3208,"src":"6706:17:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3177,"name":"bytes","nodeType":"ElementaryTypeName","src":"6706:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3180,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":3208,"src":"6725:26:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3179,"name":"string","nodeType":"ElementaryTypeName","src":"6725:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6689:63:23"},"returnParameters":{"id":3184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3183,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3208,"src":"6771:12:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3182,"name":"bytes","nodeType":"ElementaryTypeName","src":"6771:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6770:14:23"},"scope":3239,"src":"6660:417:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3237,"nodeType":"Block","src":"7212:596:23","statements":[{"condition":{"id":3219,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"7226:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3235,"nodeType":"Block","src":"7283:519:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3223,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3212,"src":"7367:10:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7367:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7367:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3233,"nodeType":"Block","src":"7739:53:23","statements":[{"expression":{"arguments":[{"id":3230,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"7764:12:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3229,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7757:6:23","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":3231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7757:20:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3232,"nodeType":"ExpressionStatement","src":"7757:20:23"}]},"id":3234,"nodeType":"IfStatement","src":"7363:429:23","trueBody":{"id":3228,"nodeType":"Block","src":"7390:343:23","statements":[{"AST":{"nodeType":"YulBlock","src":"7574:145:23","statements":[{"nodeType":"YulVariableDeclaration","src":"7596:40:23","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"7625:10:23"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7619:5:23"},"nodeType":"YulFunctionCall","src":"7619:17:23"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"7600:15:23","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7668:2:23","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"7672:10:23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7664:3:23"},"nodeType":"YulFunctionCall","src":"7664:19:23"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"7685:15:23"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7657:6:23"},"nodeType":"YulFunctionCall","src":"7657:44:23"},"nodeType":"YulExpressionStatement","src":"7657:44:23"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3212,"isOffset":false,"isSlot":false,"src":"7625:10:23","valueSize":1},{"declaration":3212,"isOffset":false,"isSlot":false,"src":"7672:10:23","valueSize":1}],"id":3227,"nodeType":"InlineAssembly","src":"7565:154:23"}]}}]},"id":3236,"nodeType":"IfStatement","src":"7222:580:23","trueBody":{"id":3222,"nodeType":"Block","src":"7235:42:23","statements":[{"expression":{"id":3220,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3212,"src":"7256:10:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3218,"id":3221,"nodeType":"Return","src":"7249:17:23"}]}}]},"id":3238,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyCallResult","nodeType":"FunctionDefinition","parameters":{"id":3215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3210,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":3238,"src":"7110:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3209,"name":"bool","nodeType":"ElementaryTypeName","src":"7110:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3212,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":3238,"src":"7124:23:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3211,"name":"bytes","nodeType":"ElementaryTypeName","src":"7124:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3214,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":3238,"src":"7149:26:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3213,"name":"string","nodeType":"ElementaryTypeName","src":"7149:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7109:67:23"},"returnParameters":{"id":3218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3217,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3238,"src":"7198:12:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3216,"name":"bytes","nodeType":"ElementaryTypeName","src":"7198:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7197:14:23"},"scope":3239,"src":"7083:725:23","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":3240,"src":"126:7684:23"}],"src":"33:7778:23"},"id":23},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[3262]},"id":3263,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3241,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:24"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3262,"linearizedBaseContracts":[3262],"name":"Context","nodeType":"ContractDefinition","nodes":[{"body":{"id":3249,"nodeType":"Block","src":"668:34:24","statements":[{"expression":{"expression":{"id":3246,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"685:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"685:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":3245,"id":3248,"nodeType":"Return","src":"678:17:24"}]},"id":3250,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nodeType":"FunctionDefinition","parameters":{"id":3242,"nodeType":"ParameterList","parameters":[],"src":"617:2:24"},"returnParameters":{"id":3245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3244,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3250,"src":"651:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3243,"name":"address","nodeType":"ElementaryTypeName","src":"651:15:24","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"650:17:24"},"scope":3262,"src":"598:104:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3260,"nodeType":"Block","src":"773:165:24","statements":[{"expression":{"id":3255,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"783:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$3262","typeString":"contract Context"}},"id":3256,"nodeType":"ExpressionStatement","src":"783:4:24"},{"expression":{"expression":{"id":3257,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"923:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"923:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":3254,"id":3259,"nodeType":"Return","src":"916:15:24"}]},"id":3261,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nodeType":"FunctionDefinition","parameters":{"id":3251,"nodeType":"ParameterList","parameters":[],"src":"725:2:24"},"returnParameters":{"id":3254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3253,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3261,"src":"759:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3252,"name":"bytes","nodeType":"ElementaryTypeName","src":"759:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"758:14:24"},"scope":3262,"src":"708:230:24","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":3263,"src":"566:374:24"}],"src":"33:908:24"},"id":24},"@openzeppelin/contracts/utils/EnumerableMap.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/EnumerableMap.sol","exportedSymbols":{"EnumerableMap":[3822]},"id":3823,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3264,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:25"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":3265,"nodeType":"StructuredDocumentation","src":"58:705:25","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":3822,"linearizedBaseContracts":[3822],"name":"EnumerableMap","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableMap.MapEntry","id":3270,"members":[{"constant":false,"id":3267,"mutability":"mutable","name":"_key","nodeType":"VariableDeclaration","scope":3270,"src":"1276:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3266,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1276:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3269,"mutability":"mutable","name":"_value","nodeType":"VariableDeclaration","scope":3270,"src":"1298:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3268,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1298:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"MapEntry","nodeType":"StructDefinition","scope":3822,"src":"1250:69:25","visibility":"public"},{"canonicalName":"EnumerableMap.Map","id":3278,"members":[{"constant":false,"id":3273,"mutability":"mutable","name":"_entries","nodeType":"VariableDeclaration","scope":3278,"src":"1388:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage_ptr","typeString":"struct EnumerableMap.MapEntry[]"},"typeName":{"baseType":{"id":3271,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":3270,"src":"1388:8:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"id":3272,"nodeType":"ArrayTypeName","src":"1388:10:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage_ptr","typeString":"struct EnumerableMap.MapEntry[]"}},"visibility":"internal"},{"constant":false,"id":3277,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":3278,"src":"1557:37:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":3276,"keyType":{"id":3274,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1566:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1557:28:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":3275,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Map","nodeType":"StructDefinition","scope":3822,"src":"1325:276:25","visibility":"public"},{"body":{"id":3339,"nodeType":"Block","src":"1910:596:25","statements":[{"assignments":[3291],"declarations":[{"constant":false,"id":3291,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":3339,"src":"2018:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3290,"name":"uint256","nodeType":"ElementaryTypeName","src":"2018:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3296,"initialValue":{"baseExpression":{"expression":{"id":3292,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"2037:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3293,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3277,"src":"2037:12:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3295,"indexExpression":{"id":3294,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"2050:3:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2037:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2018:36:25"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3297,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3291,"src":"2069:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2081:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2069:13:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3337,"nodeType":"Block","src":"2408:92:25","statements":[{"expression":{"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":3324,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"2422:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3329,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"2422:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3330,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3326,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3291,"src":"2435:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2446:1:25","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2435:12:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2422:26:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":3331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":3269,"src":"2422:33:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3332,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"2458:5:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2422:41:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3334,"nodeType":"ExpressionStatement","src":"2422:41:25"},{"expression":{"hexValue":"66616c7365","id":3335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2484:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3289,"id":3336,"nodeType":"Return","src":"2477:12:25"}]},"id":3338,"nodeType":"IfStatement","src":"2065:435:25","trueBody":{"id":3323,"nodeType":"Block","src":"2084:318:25","statements":[{"expression":{"arguments":[{"arguments":[{"id":3306,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"2170:3:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3307,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"2183:5:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3305,"name":"MapEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3270,"src":"2153:8:25","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MapEntry_$3270_storage_ptr_$","typeString":"type(struct EnumerableMap.MapEntry storage pointer)"}},"id":3308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["_key","_value"],"nodeType":"FunctionCall","src":"2153:38:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_memory_ptr","typeString":"struct EnumerableMap.MapEntry memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MapEntry_$3270_memory_ptr","typeString":"struct EnumerableMap.MapEntry memory"}],"expression":{"expression":{"id":3300,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"2135:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"2135:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"2135:17:25","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_struct$_MapEntry_$3270_storage_$returns$__$","typeString":"function (struct EnumerableMap.MapEntry storage ref)"}},"id":3309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2135:57:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3310,"nodeType":"ExpressionStatement","src":"2135:57:25"},{"expression":{"id":3319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3311,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"2327:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3314,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3277,"src":"2327:12:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3315,"indexExpression":{"id":3313,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"2340:3:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2327:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":3316,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"2347:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"2347:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2347:19:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2327:39:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3320,"nodeType":"ExpressionStatement","src":"2327:39:25"},{"expression":{"hexValue":"74727565","id":3321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2387:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3289,"id":3322,"nodeType":"Return","src":"2380:11:25"}]}}]},"documentation":{"id":3279,"nodeType":"StructuredDocumentation","src":"1607:216:25","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":3340,"implemented":true,"kind":"function","modifiers":[],"name":"_set","nodeType":"FunctionDefinition","parameters":{"id":3286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3281,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3340,"src":"1842:15:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":3280,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":3278,"src":"1842:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":3283,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3340,"src":"1859:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3282,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1859:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3285,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3340,"src":"1872:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3284,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1872:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1841:45:25"},"returnParameters":{"id":3289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3288,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3340,"src":"1904:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3287,"name":"bool","nodeType":"ElementaryTypeName","src":"1904:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1903:6:25"},"scope":3822,"src":"1828:678:25","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":3420,"nodeType":"Block","src":"2744:1447:25","statements":[{"assignments":[3351],"declarations":[{"constant":false,"id":3351,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":3420,"src":"2852:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3350,"name":"uint256","nodeType":"ElementaryTypeName","src":"2852:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3356,"initialValue":{"baseExpression":{"expression":{"id":3352,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3343,"src":"2871:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3353,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3277,"src":"2871:12:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3355,"indexExpression":{"id":3354,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3345,"src":"2884:3:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2871:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2852:36:25"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3357,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"2903:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2903:13:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3418,"nodeType":"Block","src":"4148:37:25","statements":[{"expression":{"hexValue":"66616c7365","id":3416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4169:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3349,"id":3417,"nodeType":"Return","src":"4162:12:25"}]},"id":3419,"nodeType":"IfStatement","src":"2899:1286:25","trueBody":{"id":3415,"nodeType":"Block","src":"2918:1224:25","statements":[{"assignments":[3361],"declarations":[{"constant":false,"id":3361,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":3415,"src":"3259:21:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3360,"name":"uint256","nodeType":"ElementaryTypeName","src":"3259:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3365,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3362,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"3283:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3294:1:25","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3283:12:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3259:36:25"},{"assignments":[3367],"declarations":[{"constant":false,"id":3367,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":3415,"src":"3309:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3366,"name":"uint256","nodeType":"ElementaryTypeName","src":"3309:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3373,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":3368,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3343,"src":"3329:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"3329:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3329:19:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3351:1:25","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3329:23:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3309:43:25"},{"assignments":[3375],"declarations":[{"constant":false,"id":3375,"mutability":"mutable","name":"lastEntry","nodeType":"VariableDeclaration","scope":3415,"src":"3592:26:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage_ptr","typeString":"struct EnumerableMap.MapEntry"},"typeName":{"id":3374,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":3270,"src":"3592:8:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"visibility":"internal"}],"id":3380,"initialValue":{"baseExpression":{"expression":{"id":3376,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3343,"src":"3621:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3377,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"3621:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3379,"indexExpression":{"id":3378,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"3634:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3621:23:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3592:52:25"},{"expression":{"id":3387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3381,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3343,"src":"3736:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"3736:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3385,"indexExpression":{"id":3383,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3361,"src":"3749:13:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3736:27:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3386,"name":"lastEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"3766:9:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"src":"3736:39:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":3388,"nodeType":"ExpressionStatement","src":"3736:39:25"},{"expression":{"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3389,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3343,"src":"3841:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3277,"src":"3841:12:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3394,"indexExpression":{"expression":{"id":3391,"name":"lastEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"3854:9:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":3392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":3267,"src":"3854:14:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3841:28:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3395,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3361,"src":"3872:13:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3888:1:25","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3872:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3841:48:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3399,"nodeType":"ExpressionStatement","src":"3841:48:25"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":3400,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3343,"src":"3995:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"3995:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3995:16:25","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3995:18:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3406,"nodeType":"ExpressionStatement","src":"3995:18:25"},{"expression":{"id":3411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4081:24:25","subExpression":{"baseExpression":{"expression":{"id":3407,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3343,"src":"4088:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3408,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3277,"src":"4088:12:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3410,"indexExpression":{"id":3409,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3345,"src":"4101:3:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4088:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3412,"nodeType":"ExpressionStatement","src":"4081:24:25"},{"expression":{"hexValue":"74727565","id":3413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4127:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3349,"id":3414,"nodeType":"Return","src":"4120:11:25"}]}}]},"documentation":{"id":3341,"nodeType":"StructuredDocumentation","src":"2512:157:25","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":3421,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nodeType":"FunctionDefinition","parameters":{"id":3346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3343,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3421,"src":"2691:15:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":3342,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":3278,"src":"2691:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":3345,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3421,"src":"2708:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3344,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2708:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2690:30:25"},"returnParameters":{"id":3349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3348,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3421,"src":"2738:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3347,"name":"bool","nodeType":"ElementaryTypeName","src":"2738:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2737:6:25"},"scope":3822,"src":"2674:1517:25","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":3438,"nodeType":"Block","src":"4347:46:25","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":3431,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3424,"src":"4364:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3432,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3277,"src":"4364:12:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3434,"indexExpression":{"id":3433,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3426,"src":"4377:3:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4364:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4385:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4364:22:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3430,"id":3437,"nodeType":"Return","src":"4357:29:25"}]},"documentation":{"id":3422,"nodeType":"StructuredDocumentation","src":"4197:68:25","text":" @dev Returns true if the key is in the map. O(1)."},"id":3439,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nodeType":"FunctionDefinition","parameters":{"id":3427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3424,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3439,"src":"4289:15:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":3423,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":3278,"src":"4289:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":3426,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3439,"src":"4306:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3425,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4306:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4288:30:25"},"returnParameters":{"id":3430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3429,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3439,"src":"4341:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3428,"name":"bool","nodeType":"ElementaryTypeName","src":"4341:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4340:6:25"},"scope":3822,"src":"4270:123:25","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":3451,"nodeType":"Block","src":"4548:43:25","statements":[{"expression":{"expression":{"expression":{"id":3447,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3442,"src":"4565:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"4565:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4565:19:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3446,"id":3450,"nodeType":"Return","src":"4558:26:25"}]},"documentation":{"id":3440,"nodeType":"StructuredDocumentation","src":"4399:79:25","text":" @dev Returns the number of key-value pairs in the map. O(1)."},"id":3452,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nodeType":"FunctionDefinition","parameters":{"id":3443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3442,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3452,"src":"4500:15:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":3441,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":3278,"src":"4500:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"}],"src":"4499:17:25"},"returnParameters":{"id":3446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3445,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3452,"src":"4539:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3444,"name":"uint256","nodeType":"ElementaryTypeName","src":"4539:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4538:9:25"},"scope":3822,"src":"4483:108:25","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":3486,"nodeType":"Block","src":"5019:189:25","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":3465,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3455,"src":"5037:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"5037:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5037:19:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3468,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3457,"src":"5059:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5037:27:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473","id":3470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5066:36:25","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":3464,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5029:7:25","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5029:74:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3472,"nodeType":"ExpressionStatement","src":"5029:74:25"},{"assignments":[3474],"declarations":[{"constant":false,"id":3474,"mutability":"mutable","name":"entry","nodeType":"VariableDeclaration","scope":3486,"src":"5114:22:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage_ptr","typeString":"struct EnumerableMap.MapEntry"},"typeName":{"id":3473,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":3270,"src":"5114:8:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"visibility":"internal"}],"id":3479,"initialValue":{"baseExpression":{"expression":{"id":3475,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3455,"src":"5139:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3476,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"5139:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3478,"indexExpression":{"id":3477,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3457,"src":"5152:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5139:19:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5114:44:25"},{"expression":{"components":[{"expression":{"id":3480,"name":"entry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3474,"src":"5176:5:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":3481,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":3267,"src":"5176:10:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3482,"name":"entry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3474,"src":"5188:5:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":3483,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":3269,"src":"5188:12:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3484,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5175:26:25","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"functionReturnParameters":3463,"id":3485,"nodeType":"Return","src":"5168:33:25"}]},"documentation":{"id":3453,"nodeType":"StructuredDocumentation","src":"4596:333:25","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":3487,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nodeType":"FunctionDefinition","parameters":{"id":3458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3455,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3487,"src":"4947:15:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":3454,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":3278,"src":"4947:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":3457,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":3487,"src":"4964:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3456,"name":"uint256","nodeType":"ElementaryTypeName","src":"4964:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4946:32:25"},"returnParameters":{"id":3463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3460,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3487,"src":"5001:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5001:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3462,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3487,"src":"5010:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3461,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5010:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5000:18:25"},"scope":3822,"src":"4934:274:25","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":3524,"nodeType":"Block","src":"5434:220:25","statements":[{"assignments":[3500],"declarations":[{"constant":false,"id":3500,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":3524,"src":"5444:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3499,"name":"uint256","nodeType":"ElementaryTypeName","src":"5444:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3505,"initialValue":{"baseExpression":{"expression":{"id":3501,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3490,"src":"5463:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3277,"src":"5463:12:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3504,"indexExpression":{"id":3503,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3492,"src":"5476:3:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5463:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5444:36:25"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3506,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"5494:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5506:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5494:13:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3513,"nodeType":"IfStatement","src":"5490:36:25","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5517:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5524:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3511,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5516:10:25","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3498,"id":3512,"nodeType":"Return","src":"5509:17:25"}},{"expression":{"components":[{"hexValue":"74727565","id":3514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5580:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"baseExpression":{"expression":{"id":3515,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3490,"src":"5586:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3516,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"5586:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3520,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3517,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"5599:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5610:1:25","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5599:12:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5586:26:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":3521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":3269,"src":"5586:33:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3522,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5579:41:25","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"functionReturnParameters":3498,"id":3523,"nodeType":"Return","src":"5572:48:25"}]},"documentation":{"id":3488,"nodeType":"StructuredDocumentation","src":"5214:131:25","text":" @dev Tries to returns the value associated with `key`.  O(1).\n Does not revert if `key` is not in the map."},"id":3525,"implemented":true,"kind":"function","modifiers":[],"name":"_tryGet","nodeType":"FunctionDefinition","parameters":{"id":3493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3490,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3525,"src":"5367:15:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":3489,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":3278,"src":"5367:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":3492,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3525,"src":"5384:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5384:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5366:30:25"},"returnParameters":{"id":3498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3495,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3525,"src":"5419:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3494,"name":"bool","nodeType":"ElementaryTypeName","src":"5419:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3497,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3525,"src":"5425:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3496,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5425:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5418:15:25"},"scope":3822,"src":"5350:304:25","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":3557,"nodeType":"Block","src":"5881:232:25","statements":[{"assignments":[3536],"declarations":[{"constant":false,"id":3536,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":3557,"src":"5891:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3535,"name":"uint256","nodeType":"ElementaryTypeName","src":"5891:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3541,"initialValue":{"baseExpression":{"expression":{"id":3537,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"5910:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3277,"src":"5910:12:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3540,"indexExpression":{"id":3539,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"5923:3:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5910:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5891:36:25"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3543,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"5945:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5957:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5945:13:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579","id":3546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5960:32:25","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":3542,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5937:7:25","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5937:56:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3548,"nodeType":"ExpressionStatement","src":"5937:56:25"},{"expression":{"expression":{"baseExpression":{"expression":{"id":3549,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"6046:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3550,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"6046:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3554,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3551,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"6059:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6070:1:25","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6059:12:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6046:26:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":3555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":3269,"src":"6046:33:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3534,"id":3556,"nodeType":"Return","src":"6039:40:25"}]},"documentation":{"id":3526,"nodeType":"StructuredDocumentation","src":"5660:141:25","text":" @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."},"id":3558,"implemented":true,"kind":"function","modifiers":[],"name":"_get","nodeType":"FunctionDefinition","parameters":{"id":3531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3528,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3558,"src":"5820:15:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":3527,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":3278,"src":"5820:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":3530,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3558,"src":"5837:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5837:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5819:30:25"},"returnParameters":{"id":3534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3533,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3558,"src":"5872:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3532,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5872:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5871:9:25"},"scope":3822,"src":"5806:307:25","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":3592,"nodeType":"Block","src":"6498:212:25","statements":[{"assignments":[3571],"declarations":[{"constant":false,"id":3571,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":3592,"src":"6508:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3570,"name":"uint256","nodeType":"ElementaryTypeName","src":"6508:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3576,"initialValue":{"baseExpression":{"expression":{"id":3572,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3561,"src":"6527:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3573,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3277,"src":"6527:12:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3575,"indexExpression":{"id":3574,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3563,"src":"6540:3:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6527:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6508:36:25"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3578,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3571,"src":"6562:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6574:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6562:13:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3581,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3565,"src":"6577:12:25","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":3577,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6554:7:25","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6554:36:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3583,"nodeType":"ExpressionStatement","src":"6554:36:25"},{"expression":{"expression":{"baseExpression":{"expression":{"id":3584,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3561,"src":"6643:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":3585,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"6643:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$3270_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":3589,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3586,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3571,"src":"6656:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6667:1:25","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6656:12:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6643:26:25","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$3270_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":3590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":3269,"src":"6643:33:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3569,"id":3591,"nodeType":"Return","src":"6636:40:25"}]},"documentation":{"id":3559,"nodeType":"StructuredDocumentation","src":"6119:271:25","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":3593,"implemented":true,"kind":"function","modifiers":[],"name":"_get","nodeType":"FunctionDefinition","parameters":{"id":3566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3561,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3593,"src":"6409:15:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":3560,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":3278,"src":"6409:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":3563,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3593,"src":"6426:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3562,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6426:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3565,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":3593,"src":"6439:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3564,"name":"string","nodeType":"ElementaryTypeName","src":"6439:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6408:58:25"},"returnParameters":{"id":3569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3568,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3593,"src":"6489:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6489:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6488:9:25"},"scope":3822,"src":"6395:315:25","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableMap.UintToAddressMap","id":3596,"members":[{"constant":false,"id":3595,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":3596,"src":"6775:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":3594,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":3278,"src":"6775:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"}],"name":"UintToAddressMap","nodeType":"StructDefinition","scope":3822,"src":"6741:51:25","visibility":"public"},{"body":{"id":3627,"nodeType":"Block","src":"7114:88:25","statements":[{"expression":{"arguments":[{"expression":{"id":3609,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3599,"src":"7136:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":3610,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":3595,"src":"7136:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":3613,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3601,"src":"7156:3:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7148:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3611,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7148:7:25","typeDescriptions":{}}},"id":3614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7148:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"arguments":[{"id":3621,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3603,"src":"7186:5:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7178:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3619,"name":"uint160","nodeType":"ElementaryTypeName","src":"7178:7:25","typeDescriptions":{}}},"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7178:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7170:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3617,"name":"uint256","nodeType":"ElementaryTypeName","src":"7170:7:25","typeDescriptions":{}}},"id":3623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7170:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7162:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7162:7:25","typeDescriptions":{}}},"id":3624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7162:32:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3608,"name":"_set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3340,"src":"7131:4:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$3278_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)"}},"id":3625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7131:64:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3607,"id":3626,"nodeType":"Return","src":"7124:71:25"}]},"documentation":{"id":3597,"nodeType":"StructuredDocumentation","src":"6798:216:25","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":3628,"implemented":true,"kind":"function","modifiers":[],"name":"set","nodeType":"FunctionDefinition","parameters":{"id":3604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3599,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3628,"src":"7032:28:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":3598,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3596,"src":"7032:16:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":3601,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3628,"src":"7062:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3600,"name":"uint256","nodeType":"ElementaryTypeName","src":"7062:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3603,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3628,"src":"7075:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3602,"name":"address","nodeType":"ElementaryTypeName","src":"7075:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7031:58:25"},"returnParameters":{"id":3607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3606,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3628,"src":"7108:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3605,"name":"bool","nodeType":"ElementaryTypeName","src":"7108:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7107:6:25"},"scope":3822,"src":"7019:183:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3647,"nodeType":"Block","src":"7444:57:25","statements":[{"expression":{"arguments":[{"expression":{"id":3639,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"7469:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":3640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":3595,"src":"7469:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":3643,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"7489:3:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7481:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3641,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7481:7:25","typeDescriptions":{}}},"id":3644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7481:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3638,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3421,"src":"7461:7:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$3278_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)"}},"id":3645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7461:33:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3637,"id":3646,"nodeType":"Return","src":"7454:40:25"}]},"documentation":{"id":3629,"nodeType":"StructuredDocumentation","src":"7208:148:25","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":3648,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":3634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3631,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3648,"src":"7377:28:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":3630,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3596,"src":"7377:16:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":3633,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3648,"src":"7407:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3632,"name":"uint256","nodeType":"ElementaryTypeName","src":"7407:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:43:25"},"returnParameters":{"id":3637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3636,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3648,"src":"7438:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3635,"name":"bool","nodeType":"ElementaryTypeName","src":"7438:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7437:6:25"},"scope":3822,"src":"7361:140:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3667,"nodeType":"Block","src":"7670:59:25","statements":[{"expression":{"arguments":[{"expression":{"id":3659,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3651,"src":"7697:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":3660,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":3595,"src":"7697:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":3663,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3653,"src":"7717:3:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7709:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3661,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7709:7:25","typeDescriptions":{}}},"id":3664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7709:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3658,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3439,"src":"7687:9:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$3278_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)"}},"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7687:35:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3657,"id":3666,"nodeType":"Return","src":"7680:42:25"}]},"documentation":{"id":3649,"nodeType":"StructuredDocumentation","src":"7507:68:25","text":" @dev Returns true if the key is in the map. O(1)."},"id":3668,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":3654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3651,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3668,"src":"7598:28:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":3650,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3596,"src":"7598:16:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":3653,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3668,"src":"7628:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3652,"name":"uint256","nodeType":"ElementaryTypeName","src":"7628:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7597:43:25"},"returnParameters":{"id":3657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3656,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3668,"src":"7664:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3655,"name":"bool","nodeType":"ElementaryTypeName","src":"7664:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7663:6:25"},"scope":3822,"src":"7580:149:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3681,"nodeType":"Block","src":"7890:43:25","statements":[{"expression":{"arguments":[{"expression":{"id":3677,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3671,"src":"7915:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":3678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":3595,"src":"7915:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"}],"id":3676,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3452,"src":"7907:7:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$3278_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableMap.Map storage pointer) view returns (uint256)"}},"id":3679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7907:19:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3675,"id":3680,"nodeType":"Return","src":"7900:26:25"}]},"documentation":{"id":3669,"nodeType":"StructuredDocumentation","src":"7735:72:25","text":" @dev Returns the number of elements in the map. O(1)."},"id":3682,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":3672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3671,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3682,"src":"7828:28:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":3670,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3596,"src":"7828:16:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"}],"src":"7827:30:25"},"returnParameters":{"id":3675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3674,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3682,"src":"7881:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3673,"name":"uint256","nodeType":"ElementaryTypeName","src":"7881:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7880:9:25"},"scope":3822,"src":"7812:121:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3720,"nodeType":"Block","src":"8359:135:25","statements":[{"assignments":[3695,3697],"declarations":[{"constant":false,"id":3695,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3720,"src":"8370:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8370:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3697,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3720,"src":"8383:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3696,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8383:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3703,"initialValue":{"arguments":[{"expression":{"id":3699,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3685,"src":"8404:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":3700,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":3595,"src":"8404:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"id":3701,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3687,"src":"8416:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3698,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"8400:3:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$3278_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)"}},"id":3702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8400:22:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"8369:53:25"},{"expression":{"components":[{"arguments":[{"id":3706,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3695,"src":"8448:3:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8440:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3704,"name":"uint256","nodeType":"ElementaryTypeName","src":"8440:7:25","typeDescriptions":{}}},"id":3707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8440:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"arguments":[{"id":3714,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"8478:5:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8470:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3712,"name":"uint256","nodeType":"ElementaryTypeName","src":"8470:7:25","typeDescriptions":{}}},"id":3715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8470:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8462:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3710,"name":"uint160","nodeType":"ElementaryTypeName","src":"8462:7:25","typeDescriptions":{}}},"id":3716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8462:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8454:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3708,"name":"address","nodeType":"ElementaryTypeName","src":"8454:7:25","typeDescriptions":{}}},"id":3717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8454:32:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":3718,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8439:48:25","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_payable_$","typeString":"tuple(uint256,address payable)"}},"functionReturnParameters":3693,"id":3719,"nodeType":"Return","src":"8432:55:25"}]},"documentation":{"id":3683,"nodeType":"StructuredDocumentation","src":"7938:318:25","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":3721,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":3688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3685,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3721,"src":"8273:28:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":3684,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3596,"src":"8273:16:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":3687,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":3721,"src":"8303:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3686,"name":"uint256","nodeType":"ElementaryTypeName","src":"8303:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8272:45:25"},"returnParameters":{"id":3693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3690,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3721,"src":"8341:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3689,"name":"uint256","nodeType":"ElementaryTypeName","src":"8341:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3692,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3721,"src":"8350:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3691,"name":"address","nodeType":"ElementaryTypeName","src":"8350:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8340:18:25"},"scope":3822,"src":"8261:233:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3759,"nodeType":"Block","src":"8771:142:25","statements":[{"assignments":[3734,3736],"declarations":[{"constant":false,"id":3734,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":3759,"src":"8782:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3733,"name":"bool","nodeType":"ElementaryTypeName","src":"8782:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3736,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3759,"src":"8796:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3735,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8796:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3745,"initialValue":{"arguments":[{"expression":{"id":3738,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3724,"src":"8821:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":3739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":3595,"src":"8821:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":3742,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3726,"src":"8841:3:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8833:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3740,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8833:7:25","typeDescriptions":{}}},"id":3743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8833:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3737,"name":"_tryGet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3525,"src":"8813:7:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$3278_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool,bytes32)"}},"id":3744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8813:33:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"8781:65:25"},{"expression":{"components":[{"id":3746,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3734,"src":"8864:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"arguments":[{"id":3753,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"8897:5:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8889:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3751,"name":"uint256","nodeType":"ElementaryTypeName","src":"8889:7:25","typeDescriptions":{}}},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8889:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8881:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3749,"name":"uint160","nodeType":"ElementaryTypeName","src":"8881:7:25","typeDescriptions":{}}},"id":3755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8881:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8873:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3747,"name":"address","nodeType":"ElementaryTypeName","src":"8873:7:25","typeDescriptions":{}}},"id":3756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8873:32:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":3757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8863:43:25","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_payable_$","typeString":"tuple(bool,address payable)"}},"functionReturnParameters":3732,"id":3758,"nodeType":"Return","src":"8856:50:25"}]},"documentation":{"id":3722,"nodeType":"StructuredDocumentation","src":"8500:169:25","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":3760,"implemented":true,"kind":"function","modifiers":[],"name":"tryGet","nodeType":"FunctionDefinition","parameters":{"id":3727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3724,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3760,"src":"8690:28:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":3723,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3596,"src":"8690:16:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":3726,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3760,"src":"8720:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3725,"name":"uint256","nodeType":"ElementaryTypeName","src":"8720:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8689:43:25"},"returnParameters":{"id":3732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3729,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3760,"src":"8756:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3728,"name":"bool","nodeType":"ElementaryTypeName","src":"8756:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3731,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3760,"src":"8762:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3730,"name":"address","nodeType":"ElementaryTypeName","src":"8762:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8755:15:25"},"scope":3822,"src":"8674:239:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3788,"nodeType":"Block","src":"9153:81:25","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":3777,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3763,"src":"9199:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":3778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":3595,"src":"9199:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":3781,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"9219:3:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9211:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3779,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9211:7:25","typeDescriptions":{}}},"id":3782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9211:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3776,"name":"_get","nodeType":"Identifier","overloadedDeclarations":[3558,3593],"referencedDeclaration":3558,"src":"9194:4:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$3278_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)"}},"id":3783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9194:30:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9186:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3774,"name":"uint256","nodeType":"ElementaryTypeName","src":"9186:7:25","typeDescriptions":{}}},"id":3784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9186:39:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9178:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3772,"name":"uint160","nodeType":"ElementaryTypeName","src":"9178:7:25","typeDescriptions":{}}},"id":3785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9178:48:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9170:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3770,"name":"address","nodeType":"ElementaryTypeName","src":"9170:7:25","typeDescriptions":{}}},"id":3786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9170:57:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":3769,"id":3787,"nodeType":"Return","src":"9163:64:25"}]},"documentation":{"id":3761,"nodeType":"StructuredDocumentation","src":"8919:141:25","text":" @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."},"id":3789,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":3766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3763,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3789,"src":"9078:28:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":3762,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3596,"src":"9078:16:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":3765,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3789,"src":"9108:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3764,"name":"uint256","nodeType":"ElementaryTypeName","src":"9108:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9077:43:25"},"returnParameters":{"id":3769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3768,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3789,"src":"9144:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3767,"name":"address","nodeType":"ElementaryTypeName","src":"9144:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9143:9:25"},"scope":3822,"src":"9065:169:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3820,"nodeType":"Block","src":"9630:95:25","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":3808,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3792,"src":"9676:3:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":3809,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":3595,"src":"9676:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":3812,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"9696:3:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9688:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3810,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9688:7:25","typeDescriptions":{}}},"id":3813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9688:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3814,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3796,"src":"9702:12:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$3278_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3807,"name":"_get","nodeType":"Identifier","overloadedDeclarations":[3558,3593],"referencedDeclaration":3593,"src":"9671:4:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$3278_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":3815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9671:44:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9663:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3805,"name":"uint256","nodeType":"ElementaryTypeName","src":"9663:7:25","typeDescriptions":{}}},"id":3816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9663:53:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9655:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3803,"name":"uint160","nodeType":"ElementaryTypeName","src":"9655:7:25","typeDescriptions":{}}},"id":3817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9655:62:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9647:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3801,"name":"address","nodeType":"ElementaryTypeName","src":"9647:7:25","typeDescriptions":{}}},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9647:71:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":3800,"id":3819,"nodeType":"Return","src":"9640:78:25"}]},"documentation":{"id":3790,"nodeType":"StructuredDocumentation","src":"9240:269:25","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":3821,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":3797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3792,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":3821,"src":"9527:28:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":3791,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":3596,"src":"9527:16:25","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$3596_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":3794,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3821,"src":"9557:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3793,"name":"uint256","nodeType":"ElementaryTypeName","src":"9557:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3796,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":3821,"src":"9570:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3795,"name":"string","nodeType":"ElementaryTypeName","src":"9570:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9526:71:25"},"returnParameters":{"id":3800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3799,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3821,"src":"9621:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3798,"name":"address","nodeType":"ElementaryTypeName","src":"9621:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9620:9:25"},"scope":3822,"src":"9514:211:25","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":3823,"src":"764:8963:25"}],"src":"33:9695:25"},"id":25},"@openzeppelin/contracts/utils/EnumerableSet.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/EnumerableSet.sol","exportedSymbols":{"EnumerableSet":[4314]},"id":4315,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3824,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:26"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":3825,"nodeType":"StructuredDocumentation","src":"58:686:26","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":4314,"linearizedBaseContracts":[4314],"name":"EnumerableSet","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.Set","id":3833,"members":[{"constant":false,"id":3828,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":3833,"src":"1267:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":3826,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1267:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3827,"nodeType":"ArrayTypeName","src":"1267:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":3832,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":3833,"src":"1418:37:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":3831,"keyType":{"id":3829,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1427:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1418:28:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":3830,"name":"uint256","nodeType":"ElementaryTypeName","src":"1438:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Set","nodeType":"StructDefinition","scope":4314,"src":"1213:249:26","visibility":"public"},{"body":{"id":3873,"nodeType":"Block","src":"1701:335:26","statements":[{"condition":{"id":3847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1715:22:26","subExpression":{"arguments":[{"id":3844,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"1726:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},{"id":3845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"1731:5:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3843,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3972,"src":"1716:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$3833_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":3846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1716:21:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3871,"nodeType":"Block","src":"1993:37:26","statements":[{"expression":{"hexValue":"66616c7365","id":3869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2014:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3842,"id":3870,"nodeType":"Return","src":"2007:12:26"}]},"id":3872,"nodeType":"IfStatement","src":"1711:319:26","trueBody":{"id":3868,"nodeType":"Block","src":"1739:248:26","statements":[{"expression":{"arguments":[{"id":3853,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"1770:5:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":3848,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"1753:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3851,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":3828,"src":"1753:11:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":3852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"1753:16:26","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3855,"nodeType":"ExpressionStatement","src":"1753:23:26"},{"expression":{"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3856,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"1911:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"1911:12:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3860,"indexExpression":{"id":3858,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"1924:5:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1911:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":3861,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"1933:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":3828,"src":"1933:11:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1933:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1911:40:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3865,"nodeType":"ExpressionStatement","src":"1911:40:26"},{"expression":{"hexValue":"74727565","id":3866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3842,"id":3867,"nodeType":"Return","src":"1965:11:26"}]}}]},"documentation":{"id":3834,"nodeType":"StructuredDocumentation","src":"1468:159:26","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":3874,"implemented":true,"kind":"function","modifiers":[],"name":"_add","nodeType":"FunctionDefinition","parameters":{"id":3839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3836,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":3874,"src":"1646:15:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":3835,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":3833,"src":"1646:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":3838,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3874,"src":"1663:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3837,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1663:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1645:32:26"},"returnParameters":{"id":3842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3841,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3874,"src":"1695:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3840,"name":"bool","nodeType":"ElementaryTypeName","src":"1695:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1694:6:26"},"scope":4314,"src":"1632:404:26","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":3953,"nodeType":"Block","src":"2276:1440:26","statements":[{"assignments":[3885],"declarations":[{"constant":false,"id":3885,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":3953,"src":"2386:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3884,"name":"uint256","nodeType":"ElementaryTypeName","src":"2386:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3890,"initialValue":{"baseExpression":{"expression":{"id":3886,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"2407:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"2407:12:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3889,"indexExpression":{"id":3888,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3879,"src":"2420:5:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2407:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2386:40:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3891,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3885,"src":"2441:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2455:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2441:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3951,"nodeType":"Block","src":"3673:37:26","statements":[{"expression":{"hexValue":"66616c7365","id":3949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3694:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3883,"id":3950,"nodeType":"Return","src":"3687:12:26"}]},"id":3952,"nodeType":"IfStatement","src":"2437:1273:26","trueBody":{"id":3948,"nodeType":"Block","src":"2458:1209:26","statements":[{"assignments":[3895],"declarations":[{"constant":false,"id":3895,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":3948,"src":"2798:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3894,"name":"uint256","nodeType":"ElementaryTypeName","src":"2798:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3899,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3896,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3885,"src":"2822:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2835:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2822:14:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2798:38:26"},{"assignments":[3901],"declarations":[{"constant":false,"id":3901,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":3948,"src":"2850:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3900,"name":"uint256","nodeType":"ElementaryTypeName","src":"2850:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3907,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":3902,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"2870:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":3828,"src":"2870:11:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":3904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2870:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2891:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2870:22:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2850:42:26"},{"assignments":[3909],"declarations":[{"constant":false,"id":3909,"mutability":"mutable","name":"lastvalue","nodeType":"VariableDeclaration","scope":3948,"src":"3132:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3908,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3132:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3914,"initialValue":{"baseExpression":{"expression":{"id":3910,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"3152:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3911,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":3828,"src":"3152:11:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":3913,"indexExpression":{"id":3912,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3901,"src":"3164:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3152:22:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3132:42:26"},{"expression":{"id":3921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3915,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"3266:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":3828,"src":"3266:11:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":3919,"indexExpression":{"id":3917,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3895,"src":"3278:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3266:26:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3920,"name":"lastvalue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"3295:9:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3266:38:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3922,"nodeType":"ExpressionStatement","src":"3266:38:26"},{"expression":{"id":3931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3923,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"3370:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"3370:12:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3927,"indexExpression":{"id":3925,"name":"lastvalue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"3383:9:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3370:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3928,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3895,"src":"3396:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3412:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3396:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3370:43:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3932,"nodeType":"ExpressionStatement","src":"3370:43:26"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":3933,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"3519:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":3828,"src":"3519:11:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":3937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3519:15:26","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3519:17:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3939,"nodeType":"ExpressionStatement","src":"3519:17:26"},{"expression":{"id":3944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"3604:26:26","subExpression":{"baseExpression":{"expression":{"id":3940,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"3611:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"3611:12:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3943,"indexExpression":{"id":3942,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3879,"src":"3624:5:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3611:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3945,"nodeType":"ExpressionStatement","src":"3604:26:26"},{"expression":{"hexValue":"74727565","id":3946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3652:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3883,"id":3947,"nodeType":"Return","src":"3645:11:26"}]}}]},"documentation":{"id":3875,"nodeType":"StructuredDocumentation","src":"2042:157:26","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":3954,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nodeType":"FunctionDefinition","parameters":{"id":3880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3877,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":3954,"src":"2221:15:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":3876,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":3833,"src":"2221:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":3879,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3954,"src":"2238:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2238:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2220:32:26"},"returnParameters":{"id":3883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3882,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3954,"src":"2270:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3881,"name":"bool","nodeType":"ElementaryTypeName","src":"2270:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2269:6:26"},"scope":4314,"src":"2204:1512:26","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":3971,"nodeType":"Block","src":"3876:48:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":3964,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3957,"src":"3893:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"3893:12:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":3967,"indexExpression":{"id":3966,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"3906:5:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3893:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3916:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3893:24:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3963,"id":3970,"nodeType":"Return","src":"3886:31:26"}]},"documentation":{"id":3955,"nodeType":"StructuredDocumentation","src":"3722:70:26","text":" @dev Returns true if the value is in the set. O(1)."},"id":3972,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nodeType":"FunctionDefinition","parameters":{"id":3960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3957,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":3972,"src":"3816:15:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":3956,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":3833,"src":"3816:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":3959,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3972,"src":"3833:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3958,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3833:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3815:32:26"},"returnParameters":{"id":3963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3962,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3972,"src":"3870:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3961,"name":"bool","nodeType":"ElementaryTypeName","src":"3870:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3869:6:26"},"scope":4314,"src":"3797:127:26","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":3984,"nodeType":"Block","src":"4070:42:26","statements":[{"expression":{"expression":{"expression":{"id":3980,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3975,"src":"4087:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":3828,"src":"4087:11:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":3982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4087:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3979,"id":3983,"nodeType":"Return","src":"4080:25:26"}]},"documentation":{"id":3973,"nodeType":"StructuredDocumentation","src":"3930:70:26","text":" @dev Returns the number of values on the set. O(1)."},"id":3985,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nodeType":"FunctionDefinition","parameters":{"id":3976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3975,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":3985,"src":"4022:15:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":3974,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":3833,"src":"4022:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"src":"4021:17:26"},"returnParameters":{"id":3979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3978,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3985,"src":"4061:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3977,"name":"uint256","nodeType":"ElementaryTypeName","src":"4061:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4060:9:26"},"scope":4314,"src":"4005:107:26","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4009,"nodeType":"Block","src":"4520:125:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":3996,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3988,"src":"4538:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":3997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":3828,"src":"4538:11:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":3998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4538:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3999,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3990,"src":"4559:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4538:26:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473","id":4001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4566:36:26","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":3995,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4530:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4530:73:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4003,"nodeType":"ExpressionStatement","src":"4530:73:26"},{"expression":{"baseExpression":{"expression":{"id":4004,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3988,"src":"4620:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":4005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":3828,"src":"4620:11:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":4007,"indexExpression":{"id":4006,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3990,"src":"4632:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4620:18:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3994,"id":4008,"nodeType":"Return","src":"4613:25:26"}]},"documentation":{"id":3986,"nodeType":"StructuredDocumentation","src":"4117:322:26","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":4010,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nodeType":"FunctionDefinition","parameters":{"id":3991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3988,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4010,"src":"4457:15:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":3987,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":3833,"src":"4457:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":3990,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":4010,"src":"4474:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3989,"name":"uint256","nodeType":"ElementaryTypeName","src":"4474:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4456:32:26"},"returnParameters":{"id":3994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3993,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4010,"src":"4511:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3992,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4511:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4510:9:26"},"scope":4314,"src":"4444:201:26","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableSet.Bytes32Set","id":4013,"members":[{"constant":false,"id":4012,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":4013,"src":"4698:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":4011,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":3833,"src":"4698:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"Bytes32Set","nodeType":"StructDefinition","scope":4314,"src":"4670:45:26","visibility":"public"},{"body":{"id":4029,"nodeType":"Block","src":"4961:47:26","statements":[{"expression":{"arguments":[{"expression":{"id":4024,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4016,"src":"4983:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":4025,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4012,"src":"4983:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":4026,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"4995:5:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4023,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3874,"src":"4978:4:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$3833_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":4027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4978:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4022,"id":4028,"nodeType":"Return","src":"4971:30:26"}]},"documentation":{"id":4014,"nodeType":"StructuredDocumentation","src":"4721:159:26","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":4030,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":4019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4016,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4030,"src":"4898:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":4015,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":4013,"src":"4898:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":4018,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4030,"src":"4922:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4922:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4897:39:26"},"returnParameters":{"id":4022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4021,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4030,"src":"4955:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4020,"name":"bool","nodeType":"ElementaryTypeName","src":"4955:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4954:6:26"},"scope":4314,"src":"4885:123:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4046,"nodeType":"Block","src":"5255:50:26","statements":[{"expression":{"arguments":[{"expression":{"id":4041,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4033,"src":"5280:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":4042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4012,"src":"5280:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":4043,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4035,"src":"5292:5:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4040,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3954,"src":"5272:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$3833_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":4044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5272:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4039,"id":4045,"nodeType":"Return","src":"5265:33:26"}]},"documentation":{"id":4031,"nodeType":"StructuredDocumentation","src":"5014:157:26","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":4047,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":4036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4033,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4047,"src":"5192:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":4032,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":4013,"src":"5192:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":4035,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4047,"src":"5216:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4034,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5216:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5191:39:26"},"returnParameters":{"id":4039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4038,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4047,"src":"5249:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4037,"name":"bool","nodeType":"ElementaryTypeName","src":"5249:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5248:6:26"},"scope":4314,"src":"5176:129:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4063,"nodeType":"Block","src":"5472:52:26","statements":[{"expression":{"arguments":[{"expression":{"id":4058,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4050,"src":"5499:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":4059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4012,"src":"5499:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":4060,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4052,"src":"5511:5:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4057,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3972,"src":"5489:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$3833_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":4061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5489:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4056,"id":4062,"nodeType":"Return","src":"5482:35:26"}]},"documentation":{"id":4048,"nodeType":"StructuredDocumentation","src":"5311:70:26","text":" @dev Returns true if the value is in the set. O(1)."},"id":4064,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":4053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4050,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4064,"src":"5404:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":4049,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":4013,"src":"5404:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":4052,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4064,"src":"5428:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4051,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5428:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5403:39:26"},"returnParameters":{"id":4056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4055,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4064,"src":"5466:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4054,"name":"bool","nodeType":"ElementaryTypeName","src":"5466:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5465:6:26"},"scope":4314,"src":"5386:138:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4077,"nodeType":"Block","src":"5677:43:26","statements":[{"expression":{"arguments":[{"expression":{"id":4073,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4067,"src":"5702:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":4074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4012,"src":"5702:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":4072,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"5694:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$3833_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":4075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5694:19:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4071,"id":4076,"nodeType":"Return","src":"5687:26:26"}]},"documentation":{"id":4065,"nodeType":"StructuredDocumentation","src":"5530:70:26","text":" @dev Returns the number of values in the set. O(1)."},"id":4078,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":4068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4067,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4078,"src":"5621:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":4066,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":4013,"src":"5621:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"5620:24:26"},"returnParameters":{"id":4071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4070,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4078,"src":"5668:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4069,"name":"uint256","nodeType":"ElementaryTypeName","src":"5668:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5667:9:26"},"scope":4314,"src":"5605:115:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4094,"nodeType":"Block","src":"6135:46:26","statements":[{"expression":{"arguments":[{"expression":{"id":4089,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4081,"src":"6156:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":4090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4012,"src":"6156:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":4091,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4083,"src":"6168:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4088,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"6152:3:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$3833_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":4092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6152:22:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4087,"id":4093,"nodeType":"Return","src":"6145:29:26"}]},"documentation":{"id":4079,"nodeType":"StructuredDocumentation","src":"5725:322:26","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":4095,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":4084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4081,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4095,"src":"6064:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":4080,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":4013,"src":"6064:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$4013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":4083,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":4095,"src":"6088:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4082,"name":"uint256","nodeType":"ElementaryTypeName","src":"6088:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6063:39:26"},"returnParameters":{"id":4087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4086,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4095,"src":"6126:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4085,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6126:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6125:9:26"},"scope":4314,"src":"6052:129:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.AddressSet","id":4098,"members":[{"constant":false,"id":4097,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":4098,"src":"6234:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":4096,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":3833,"src":"6234:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"AddressSet","nodeType":"StructDefinition","scope":4314,"src":"6206:45:26","visibility":"public"},{"body":{"id":4123,"nodeType":"Block","src":"6497:74:26","statements":[{"expression":{"arguments":[{"expression":{"id":4109,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4101,"src":"6519:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":4110,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"6519:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":4117,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4103,"src":"6555:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6547:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4115,"name":"uint160","nodeType":"ElementaryTypeName","src":"6547:7:26","typeDescriptions":{}}},"id":4118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6547:14:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6539:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4113,"name":"uint256","nodeType":"ElementaryTypeName","src":"6539:7:26","typeDescriptions":{}}},"id":4119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6539:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6531:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4111,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6531:7:26","typeDescriptions":{}}},"id":4120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6531:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4108,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3874,"src":"6514:4:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$3833_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":4121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6514:50:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4107,"id":4122,"nodeType":"Return","src":"6507:57:26"}]},"documentation":{"id":4099,"nodeType":"StructuredDocumentation","src":"6257:159:26","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":4124,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":4104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4101,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4124,"src":"6434:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":4100,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4098,"src":"6434:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":4103,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4124,"src":"6458:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4102,"name":"address","nodeType":"ElementaryTypeName","src":"6458:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6433:39:26"},"returnParameters":{"id":4107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4106,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4124,"src":"6491:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4105,"name":"bool","nodeType":"ElementaryTypeName","src":"6491:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6490:6:26"},"scope":4314,"src":"6421:150:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4149,"nodeType":"Block","src":"6818:77:26","statements":[{"expression":{"arguments":[{"expression":{"id":4135,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"6843:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":4136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"6843:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":4143,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"6879:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6871:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4141,"name":"uint160","nodeType":"ElementaryTypeName","src":"6871:7:26","typeDescriptions":{}}},"id":4144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6871:14:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6863:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4139,"name":"uint256","nodeType":"ElementaryTypeName","src":"6863:7:26","typeDescriptions":{}}},"id":4145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6863:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6855:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4137,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6855:7:26","typeDescriptions":{}}},"id":4146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6855:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4134,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3954,"src":"6835:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$3833_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":4147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6835:53:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4133,"id":4148,"nodeType":"Return","src":"6828:60:26"}]},"documentation":{"id":4125,"nodeType":"StructuredDocumentation","src":"6577:157:26","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":4150,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":4130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4127,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4150,"src":"6755:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":4126,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4098,"src":"6755:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":4129,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4150,"src":"6779:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4128,"name":"address","nodeType":"ElementaryTypeName","src":"6779:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6754:39:26"},"returnParameters":{"id":4133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4132,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4150,"src":"6812:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4131,"name":"bool","nodeType":"ElementaryTypeName","src":"6812:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6811:6:26"},"scope":4314,"src":"6739:156:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4175,"nodeType":"Block","src":"7062:79:26","statements":[{"expression":{"arguments":[{"expression":{"id":4161,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4153,"src":"7089:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":4162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"7089:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":4169,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4155,"src":"7125:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7117:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4167,"name":"uint160","nodeType":"ElementaryTypeName","src":"7117:7:26","typeDescriptions":{}}},"id":4170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7117:14:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7109:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4165,"name":"uint256","nodeType":"ElementaryTypeName","src":"7109:7:26","typeDescriptions":{}}},"id":4171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7109:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7101:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4163,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7101:7:26","typeDescriptions":{}}},"id":4172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7101:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4160,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3972,"src":"7079:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$3833_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":4173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7079:55:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4159,"id":4174,"nodeType":"Return","src":"7072:62:26"}]},"documentation":{"id":4151,"nodeType":"StructuredDocumentation","src":"6901:70:26","text":" @dev Returns true if the value is in the set. O(1)."},"id":4176,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":4156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4153,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4176,"src":"6994:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":4152,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4098,"src":"6994:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":4155,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4176,"src":"7018:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4154,"name":"address","nodeType":"ElementaryTypeName","src":"7018:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6993:39:26"},"returnParameters":{"id":4159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4158,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4176,"src":"7056:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4157,"name":"bool","nodeType":"ElementaryTypeName","src":"7056:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7055:6:26"},"scope":4314,"src":"6976:165:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4189,"nodeType":"Block","src":"7294:43:26","statements":[{"expression":{"arguments":[{"expression":{"id":4185,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4179,"src":"7319:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":4186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"7319:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":4184,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"7311:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$3833_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":4187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7311:19:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4183,"id":4188,"nodeType":"Return","src":"7304:26:26"}]},"documentation":{"id":4177,"nodeType":"StructuredDocumentation","src":"7147:70:26","text":" @dev Returns the number of values in the set. O(1)."},"id":4190,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":4180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4179,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4190,"src":"7238:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":4178,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4098,"src":"7238:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"7237:24:26"},"returnParameters":{"id":4183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4182,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4190,"src":"7285:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4181,"name":"uint256","nodeType":"ElementaryTypeName","src":"7285:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7284:9:26"},"scope":4314,"src":"7222:115:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4215,"nodeType":"Block","src":"7752:73:26","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":4207,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4193,"src":"7797:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":4208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"7797:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":4209,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4195,"src":"7809:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4206,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"7793:3:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$3833_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":4210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7793:22:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7785:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4204,"name":"uint256","nodeType":"ElementaryTypeName","src":"7785:7:26","typeDescriptions":{}}},"id":4211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7785:31:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7777:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4202,"name":"uint160","nodeType":"ElementaryTypeName","src":"7777:7:26","typeDescriptions":{}}},"id":4212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7777:40:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7769:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4200,"name":"address","nodeType":"ElementaryTypeName","src":"7769:7:26","typeDescriptions":{}}},"id":4213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7769:49:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":4199,"id":4214,"nodeType":"Return","src":"7762:56:26"}]},"documentation":{"id":4191,"nodeType":"StructuredDocumentation","src":"7342:322:26","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":4216,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":4196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4193,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4216,"src":"7681:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":4192,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4098,"src":"7681:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$4098_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":4195,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":4216,"src":"7705:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4194,"name":"uint256","nodeType":"ElementaryTypeName","src":"7705:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7680:39:26"},"returnParameters":{"id":4199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4198,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4216,"src":"7743:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4197,"name":"address","nodeType":"ElementaryTypeName","src":"7743:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7742:9:26"},"scope":4314,"src":"7669:156:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.UintSet","id":4219,"members":[{"constant":false,"id":4218,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":4219,"src":"7873:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":4217,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":3833,"src":"7873:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"UintSet","nodeType":"StructDefinition","scope":4314,"src":"7848:42:26","visibility":"public"},{"body":{"id":4238,"nodeType":"Block","src":"8133:56:26","statements":[{"expression":{"arguments":[{"expression":{"id":4230,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4222,"src":"8155:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":4231,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4218,"src":"8155:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":4234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4224,"src":"8175:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8167:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4232,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8167:7:26","typeDescriptions":{}}},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8167:14:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4229,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3874,"src":"8150:4:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$3833_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":4236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8150:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4228,"id":4237,"nodeType":"Return","src":"8143:39:26"}]},"documentation":{"id":4220,"nodeType":"StructuredDocumentation","src":"7896:159:26","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":4239,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":4225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4222,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4239,"src":"8073:19:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":4221,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4219,"src":"8073:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":4224,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4239,"src":"8094:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4223,"name":"uint256","nodeType":"ElementaryTypeName","src":"8094:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8072:36:26"},"returnParameters":{"id":4228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4227,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4239,"src":"8127:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4226,"name":"bool","nodeType":"ElementaryTypeName","src":"8127:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8126:6:26"},"scope":4314,"src":"8060:129:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4258,"nodeType":"Block","src":"8433:59:26","statements":[{"expression":{"arguments":[{"expression":{"id":4250,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4242,"src":"8458:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":4251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4218,"src":"8458:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":4254,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4244,"src":"8478:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8470:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4252,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8470:7:26","typeDescriptions":{}}},"id":4255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8470:14:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4249,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3954,"src":"8450:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$3833_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":4256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8450:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4248,"id":4257,"nodeType":"Return","src":"8443:42:26"}]},"documentation":{"id":4240,"nodeType":"StructuredDocumentation","src":"8195:157:26","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":4259,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":4245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4242,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4259,"src":"8373:19:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":4241,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4219,"src":"8373:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":4244,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4259,"src":"8394:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4243,"name":"uint256","nodeType":"ElementaryTypeName","src":"8394:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8372:36:26"},"returnParameters":{"id":4248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4247,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4259,"src":"8427:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4246,"name":"bool","nodeType":"ElementaryTypeName","src":"8427:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8426:6:26"},"scope":4314,"src":"8357:135:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4278,"nodeType":"Block","src":"8656:61:26","statements":[{"expression":{"arguments":[{"expression":{"id":4270,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4262,"src":"8683:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":4271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4218,"src":"8683:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":4274,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"8703:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8695:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4272,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8695:7:26","typeDescriptions":{}}},"id":4275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8695:14:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4269,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3972,"src":"8673:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$3833_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8673:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4268,"id":4277,"nodeType":"Return","src":"8666:44:26"}]},"documentation":{"id":4260,"nodeType":"StructuredDocumentation","src":"8498:70:26","text":" @dev Returns true if the value is in the set. O(1)."},"id":4279,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":4265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4262,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4279,"src":"8591:19:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":4261,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4219,"src":"8591:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":4264,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4279,"src":"8612:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4263,"name":"uint256","nodeType":"ElementaryTypeName","src":"8612:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8590:36:26"},"returnParameters":{"id":4268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4267,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4279,"src":"8650:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4266,"name":"bool","nodeType":"ElementaryTypeName","src":"8650:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8649:6:26"},"scope":4314,"src":"8573:144:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4292,"nodeType":"Block","src":"8867:43:26","statements":[{"expression":{"arguments":[{"expression":{"id":4288,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"8892:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":4289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4218,"src":"8892:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":4287,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"8884:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$3833_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":4290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8884:19:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4286,"id":4291,"nodeType":"Return","src":"8877:26:26"}]},"documentation":{"id":4280,"nodeType":"StructuredDocumentation","src":"8723:70:26","text":" @dev Returns the number of values on the set. O(1)."},"id":4293,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":4283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4282,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4293,"src":"8814:19:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":4281,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4219,"src":"8814:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"}],"src":"8813:21:26"},"returnParameters":{"id":4286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4285,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4293,"src":"8858:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8858:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8857:9:26"},"scope":4314,"src":"8798:112:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4312,"nodeType":"Block","src":"9322:55:26","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":4306,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4296,"src":"9351:3:26","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":4307,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":4218,"src":"9351:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":4308,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4298,"src":"9363:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$3833_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4305,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"9347:3:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$3833_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":4309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9347:22:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9339:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4303,"name":"uint256","nodeType":"ElementaryTypeName","src":"9339:7:26","typeDescriptions":{}}},"id":4310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9339:31:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4302,"id":4311,"nodeType":"Return","src":"9332:38:26"}]},"documentation":{"id":4294,"nodeType":"StructuredDocumentation","src":"8915:322:26","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":4313,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":4299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4296,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":4313,"src":"9254:19:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":4295,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":4219,"src":"9254:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$4219_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":4298,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":4313,"src":"9275:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4297,"name":"uint256","nodeType":"ElementaryTypeName","src":"9275:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9253:36:26"},"returnParameters":{"id":4302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4301,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4313,"src":"9313:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4300,"name":"uint256","nodeType":"ElementaryTypeName","src":"9313:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9312:9:26"},"scope":4314,"src":"9242:135:26","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":4315,"src":"745:8634:26"}],"src":"33:9347:26"},"id":26},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Strings":[4401]},"id":4402,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4316,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:27"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4317,"nodeType":"StructuredDocumentation","src":"58:34:27","text":" @dev String operations."},"fullyImplemented":true,"id":4401,"linearizedBaseContracts":[4401],"name":"Strings","nodeType":"ContractDefinition","nodes":[{"body":{"id":4399,"nodeType":"Block","src":"273:654:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4325,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"475:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"484:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"475:10:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4331,"nodeType":"IfStatement","src":"471:51:27","trueBody":{"id":4330,"nodeType":"Block","src":"487:35:27","statements":[{"expression":{"hexValue":"30","id":4328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"508:3:27","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"functionReturnParameters":4324,"id":4329,"nodeType":"Return","src":"501:10:27"}]}},{"assignments":[4333],"declarations":[{"constant":false,"id":4333,"mutability":"mutable","name":"temp","nodeType":"VariableDeclaration","scope":4399,"src":"531:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4332,"name":"uint256","nodeType":"ElementaryTypeName","src":"531:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4335,"initialValue":{"id":4334,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"546:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"531:20:27"},{"assignments":[4337],"declarations":[{"constant":false,"id":4337,"mutability":"mutable","name":"digits","nodeType":"VariableDeclaration","scope":4399,"src":"561:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4336,"name":"uint256","nodeType":"ElementaryTypeName","src":"561:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4338,"nodeType":"VariableDeclarationStatement","src":"561:14:27"},{"body":{"id":4349,"nodeType":"Block","src":"603:57:27","statements":[{"expression":{"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"617:8:27","subExpression":{"id":4342,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4337,"src":"617:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4344,"nodeType":"ExpressionStatement","src":"617:8:27"},{"expression":{"id":4347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4345,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"639:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":4346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"647:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"639:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4348,"nodeType":"ExpressionStatement","src":"639:10:27"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4339,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"592:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"600:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"592:9:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4350,"nodeType":"WhileStatement","src":"585:75:27"},{"assignments":[4352],"declarations":[{"constant":false,"id":4352,"mutability":"mutable","name":"buffer","nodeType":"VariableDeclaration","scope":4399,"src":"669:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4351,"name":"bytes","nodeType":"ElementaryTypeName","src":"669:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4357,"initialValue":{"arguments":[{"id":4355,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4337,"src":"701:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"691:9:27","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4353,"name":"bytes","nodeType":"ElementaryTypeName","src":"695:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"691:17:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"669:39:27"},{"assignments":[4359],"declarations":[{"constant":false,"id":4359,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":4399,"src":"718:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4358,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4363,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4360,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4337,"src":"734:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"743:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"734:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"718:26:27"},{"expression":{"id":4366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4364,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"754:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4365,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"761:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"754:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4367,"nodeType":"ExpressionStatement","src":"754:12:27"},{"body":{"id":4392,"nodeType":"Block","src":"794:96:27","statements":[{"expression":{"id":4386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4371,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"808:6:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4374,"indexExpression":{"id":4373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"815:7:27","subExpression":{"id":4372,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"815:5:27","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:27","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3438","id":4379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"839:2:27","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4380,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"844:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"3130","id":4381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"851:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"844:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"839:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"833:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4377,"name":"uint8","nodeType":"ElementaryTypeName","src":"833:5:27","typeDescriptions":{}}},"id":4384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"833:21:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":4376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"826:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":4375,"name":"bytes1","nodeType":"ElementaryTypeName","src":"826:6:27","typeDescriptions":{}}},"id":4385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"826:29:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"808:47:27","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4387,"nodeType":"ExpressionStatement","src":"808:47:27"},{"expression":{"id":4390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4388,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"869:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":4389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"877:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"869:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4391,"nodeType":"ExpressionStatement","src":"869:10:27"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4368,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"783:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"791:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"783:9:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4393,"nodeType":"WhileStatement","src":"776:114:27"},{"expression":{"arguments":[{"id":4396,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"913:6:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"906:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4394,"name":"string","nodeType":"ElementaryTypeName","src":"906:6:27","typeDescriptions":{}}},"id":4397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"906:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4324,"id":4398,"nodeType":"Return","src":"899:21:27"}]},"documentation":{"id":4318,"nodeType":"StructuredDocumentation","src":"115:82:27","text":" @dev Converts a `uint256` to its ASCII `string` representation."},"id":4400,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nodeType":"FunctionDefinition","parameters":{"id":4321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4320,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4400,"src":"220:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4319,"name":"uint256","nodeType":"ElementaryTypeName","src":"220:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"219:15:27"},"returnParameters":{"id":4324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4323,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4400,"src":"258:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4322,"name":"string","nodeType":"ElementaryTypeName","src":"258:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"257:15:27"},"scope":4401,"src":"202:725:27","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4402,"src":"93:836:27"}],"src":"33:897:27"},"id":27},"contracts/NonfungiblePositionManager.sol":{"ast":{"absolutePath":"contracts/NonfungiblePositionManager.sol","exportedSymbols":{"Address":[3239],"BlockTimestamp":[5504],"CallbackValidation":[7039],"ChainId":[7051],"Context":[3262],"ERC165":[1362],"ERC721":[2751],"ERC721Permit":[5714],"EnumerableMap":[3822],"EnumerableSet":[4314],"FixedPoint128":[551],"FixedPoint96":[561],"FullMath":[734],"IAstraCLFactory":[82],"IAstraCLMintCallback":[124],"IAstraCLPool":[110],"IAstraCLPoolActions":[220],"IAstraCLPoolDerivedState":[251],"IAstraCLPoolEvents":[370],"IAstraCLPoolImmutables":[410],"IAstraCLPoolOwnerActions":[436],"IAstraCLPoolState":[544],"IERC1271":[6936],"IERC165":[1374],"IERC20":[1807],"IERC20Permit":[1305],"IERC20PermitAllowed":[6960],"IERC721":[2867],"IERC721Enumerable":[2898],"IERC721Metadata":[2925],"IERC721Permit":[6569],"IERC721Receiver":[2943],"IMulticall":[6584],"INonfungiblePositionManager":[6778],"INonfungibleTokenPositionDescriptor":[6793],"IPeripheryImmutableState":[6809],"IPeripheryPayments":[6835],"IPoolInitializer":[6854],"ISAMB":[6977],"ISelfPermit":[6922],"LiquidityAmounts":[7391],"LiquidityManagement":[5929],"Multicall":[6014],"NonfungiblePositionManager":[5490],"PeripheryImmutableState":[6045],"PeripheryPayments":[6255],"PeripheryValidation":[6275],"PoolAddress":[7483],"PoolInitializer":[6367],"PositionKey":[7508],"SafeMath":[1729],"SelfPermit":[6534],"Strings":[4401],"TickMath":[1269],"TransferHelper":[7679]},"id":5491,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4403,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:28"},{"id":4404,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"69:19:28"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":4405,"nodeType":"ImportDirective","scope":5491,"sourceUnit":111,"src":"143:69:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol","file":"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol","id":4406,"nodeType":"ImportDirective","scope":5491,"sourceUnit":552,"src":"266:69:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","id":4407,"nodeType":"ImportDirective","scope":5491,"sourceUnit":735,"src":"389:64:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/INonfungiblePositionManager.sol","file":"./interfaces/INonfungiblePositionManager.sol","id":4408,"nodeType":"ImportDirective","scope":5491,"sourceUnit":6779,"src":"455:54:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol","file":"./interfaces/INonfungibleTokenPositionDescriptor.sol","id":4409,"nodeType":"ImportDirective","scope":5491,"sourceUnit":6794,"src":"510:62:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PositionKey.sol","file":"./libraries/PositionKey.sol","id":4410,"nodeType":"ImportDirective","scope":5491,"sourceUnit":7509,"src":"573:37:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"./libraries/PoolAddress.sol","id":4411,"nodeType":"ImportDirective","scope":5491,"sourceUnit":7484,"src":"611:37:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/LiquidityManagement.sol","file":"./base/LiquidityManagement.sol","id":4412,"nodeType":"ImportDirective","scope":5491,"sourceUnit":5930,"src":"649:40:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"./base/PeripheryImmutableState.sol","id":4413,"nodeType":"ImportDirective","scope":5491,"sourceUnit":6046,"src":"690:44:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/Multicall.sol","file":"./base/Multicall.sol","id":4414,"nodeType":"ImportDirective","scope":5491,"sourceUnit":6015,"src":"735:30:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/ERC721Permit.sol","file":"./base/ERC721Permit.sol","id":4415,"nodeType":"ImportDirective","scope":5491,"sourceUnit":5715,"src":"766:33:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryValidation.sol","file":"./base/PeripheryValidation.sol","id":4416,"nodeType":"ImportDirective","scope":5491,"sourceUnit":6276,"src":"800:40:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/SelfPermit.sol","file":"./base/SelfPermit.sol","id":4417,"nodeType":"ImportDirective","scope":5491,"sourceUnit":6535,"src":"841:31:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PoolInitializer.sol","file":"./base/PoolInitializer.sol","id":4418,"nodeType":"ImportDirective","scope":5491,"sourceUnit":6368,"src":"873:36:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4420,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":6778,"src":"1062:27:28","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$6778","typeString":"contract INonfungiblePositionManager"}},"id":4421,"nodeType":"InheritanceSpecifier","src":"1062:27:28"},{"baseName":{"id":4422,"name":"Multicall","nodeType":"UserDefinedTypeName","referencedDeclaration":6014,"src":"1095:9:28","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$6014","typeString":"contract Multicall"}},"id":4423,"nodeType":"InheritanceSpecifier","src":"1095:9:28"},{"baseName":{"id":4424,"name":"ERC721Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":5714,"src":"1110:12:28","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721Permit_$5714","typeString":"contract ERC721Permit"}},"id":4425,"nodeType":"InheritanceSpecifier","src":"1110:12:28"},{"baseName":{"id":4426,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":6045,"src":"1128:23:28","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$6045","typeString":"contract PeripheryImmutableState"}},"id":4427,"nodeType":"InheritanceSpecifier","src":"1128:23:28"},{"baseName":{"id":4428,"name":"PoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":6367,"src":"1157:15:28","typeDescriptions":{"typeIdentifier":"t_contract$_PoolInitializer_$6367","typeString":"contract PoolInitializer"}},"id":4429,"nodeType":"InheritanceSpecifier","src":"1157:15:28"},{"baseName":{"id":4430,"name":"LiquidityManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":5929,"src":"1178:19:28","typeDescriptions":{"typeIdentifier":"t_contract$_LiquidityManagement_$5929","typeString":"contract LiquidityManagement"}},"id":4431,"nodeType":"InheritanceSpecifier","src":"1178:19:28"},{"baseName":{"id":4432,"name":"PeripheryValidation","nodeType":"UserDefinedTypeName","referencedDeclaration":6275,"src":"1203:19:28","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryValidation_$6275","typeString":"contract PeripheryValidation"}},"id":4433,"nodeType":"InheritanceSpecifier","src":"1203:19:28"},{"baseName":{"id":4434,"name":"SelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":6534,"src":"1228:10:28","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$6534","typeString":"contract SelfPermit"}},"id":4435,"nodeType":"InheritanceSpecifier","src":"1228:10:28"}],"contractDependencies":[124,1362,1374,2751,2867,2898,2925,3262,5504,5714,5929,6014,6045,6255,6275,6367,6534,6569,6584,6778,6809,6835,6854,6922],"contractKind":"contract","documentation":{"id":4419,"nodeType":"StructuredDocumentation","src":"911:108:28","text":"@title NFT positions\n @notice Wraps AstraDEX CL positions in the ERC721 non-fungible token interface"},"fullyImplemented":true,"id":5490,"linearizedBaseContracts":[5490,6534,6922,6275,5929,6255,6367,6045,5714,6014,6584,6778,6569,2751,2898,2925,2867,1362,1374,6809,6835,124,6854,3262,5504],"name":"NonfungiblePositionManager","nodeType":"ContractDefinition","nodes":[{"canonicalName":"NonfungiblePositionManager.Position","id":4456,"members":[{"constant":false,"id":4437,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":4456,"src":"1344:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":4436,"name":"uint96","nodeType":"ElementaryTypeName","src":"1344:6:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":4439,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":4456,"src":"1430:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4438,"name":"address","nodeType":"ElementaryTypeName","src":"1430:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4441,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":4456,"src":"1521:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":4440,"name":"uint80","nodeType":"ElementaryTypeName","src":"1521:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":4443,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":4456,"src":"1586:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4442,"name":"int24","nodeType":"ElementaryTypeName","src":"1586:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4445,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":4456,"src":"1611:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4444,"name":"int24","nodeType":"ElementaryTypeName","src":"1611:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4447,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4456,"src":"1677:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4446,"name":"uint128","nodeType":"ElementaryTypeName","src":"1677:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4449,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":4456,"src":"1805:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4448,"name":"uint256","nodeType":"ElementaryTypeName","src":"1805:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4451,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":4456,"src":"1847:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4450,"name":"uint256","nodeType":"ElementaryTypeName","src":"1847:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4453,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":4456,"src":"1981:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4452,"name":"uint128","nodeType":"ElementaryTypeName","src":"1981:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4455,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":4456,"src":"2010:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4454,"name":"uint128","nodeType":"ElementaryTypeName","src":"2010:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"Position","nodeType":"StructDefinition","scope":5490,"src":"1285:751:28","visibility":"public"},{"constant":false,"documentation":{"id":4457,"nodeType":"StructuredDocumentation","src":"2042:47:28","text":"@dev IDs of pools assigned by this contract"},"id":4461,"mutability":"mutable","name":"_poolIds","nodeType":"VariableDeclaration","scope":5490,"src":"2094:43:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint80_$","typeString":"mapping(address => uint80)"},"typeName":{"id":4460,"keyType":{"id":4458,"name":"address","nodeType":"ElementaryTypeName","src":"2102:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2094:26:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint80_$","typeString":"mapping(address => uint80)"},"valueType":{"id":4459,"name":"uint80","nodeType":"ElementaryTypeName","src":"2113:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}}},"visibility":"private"},{"constant":false,"documentation":{"id":4462,"nodeType":"StructuredDocumentation","src":"2144:67:28","text":"@dev Pool keys by pool ID, to save on SSTOREs for position data"},"id":4466,"mutability":"mutable","name":"_poolIdToPoolKey","nodeType":"VariableDeclaration","scope":5490,"src":"2216:63:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$7404_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey)"},"typeName":{"id":4465,"keyType":{"id":4463,"name":"uint80","nodeType":"ElementaryTypeName","src":"2224:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"Mapping","src":"2216:38:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$7404_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey)"},"valueType":{"id":4464,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"2234:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}}},"visibility":"private"},{"constant":false,"documentation":{"id":4467,"nodeType":"StructuredDocumentation","src":"2286:35:28","text":"@dev The token ID position data"},"id":4471,"mutability":"mutable","name":"_positions","nodeType":"VariableDeclaration","scope":5490,"src":"2326:47:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position)"},"typeName":{"id":4470,"keyType":{"id":4468,"name":"uint256","nodeType":"ElementaryTypeName","src":"2334:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2326:28:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position)"},"valueType":{"id":4469,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":4456,"src":"2345:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}}},"visibility":"private"},{"constant":false,"documentation":{"id":4472,"nodeType":"StructuredDocumentation","src":"2380:62:28","text":"@dev The ID of the next token that will be minted. Skips 0"},"id":4475,"mutability":"mutable","name":"_nextId","nodeType":"VariableDeclaration","scope":5490,"src":"2447:27:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":4473,"name":"uint176","nodeType":"ElementaryTypeName","src":"2447:7:28","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"value":{"hexValue":"31","id":4474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2473:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"documentation":{"id":4476,"nodeType":"StructuredDocumentation","src":"2480:73:28","text":"@dev The ID of the next pool that is used for the first time. Skips 0"},"id":4479,"mutability":"mutable","name":"_nextPoolId","nodeType":"VariableDeclaration","scope":5490,"src":"2558:30:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":4477,"name":"uint80","nodeType":"ElementaryTypeName","src":"2558:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"value":{"hexValue":"31","id":4478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2587:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"documentation":{"id":4480,"nodeType":"StructuredDocumentation","src":"2595:110:28","text":"@dev The address of the token descriptor contract, which handles generating token URIs for position tokens"},"id":4482,"mutability":"immutable","name":"_tokenDescriptor","nodeType":"VariableDeclaration","scope":5490,"src":"2710:42:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4481,"name":"address","nodeType":"ElementaryTypeName","src":"2710:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":4504,"nodeType":"Block","src":"2966:53:28","statements":[{"expression":{"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4500,"name":"_tokenDescriptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4482,"src":"2976:16:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4501,"name":"_tokenDescriptor_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4488,"src":"2995:17:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2976:36:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4503,"nodeType":"ExpressionStatement","src":"2976:36:28"}]},"id":4505,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"417374726144455820434c20506f736974696f6e73204e46542d5631","id":4491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2874:30:28","typeDescriptions":{"typeIdentifier":"t_stringliteral_c9b37a337323b60f540dadd259334207d4477d6b18dcf1ca60a90b124c27daa1","typeString":"literal_string \"AstraDEX CL Positions NFT-V1\""},"value":"AstraDEX CL Positions NFT-V1"},{"hexValue":"4153542d434c2d504f53","id":4492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2906:12:28","typeDescriptions":{"typeIdentifier":"t_stringliteral_86b0b936bb48c1f14a16235015bf03d5eb13d9a813a73b2cec58c619c32e24f6","typeString":"literal_string \"AST-CL-POS\""},"value":"AST-CL-POS"},{"hexValue":"31","id":4493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2920:3:28","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":4494,"modifierName":{"id":4490,"name":"ERC721Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5714,"src":"2861:12:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Permit_$5714_$","typeString":"type(contract ERC721Permit)"}},"nodeType":"ModifierInvocation","src":"2861:63:28"},{"arguments":[{"id":4496,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4484,"src":"2949:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4497,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"2959:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4498,"modifierName":{"id":4495,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"2925:23:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$6045_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"2925:40:28"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":4489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4484,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":4505,"src":"2780:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4483,"name":"address","nodeType":"ElementaryTypeName","src":"2780:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4486,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":4505,"src":"2806:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4485,"name":"address","nodeType":"ElementaryTypeName","src":"2806:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4488,"mutability":"mutable","name":"_tokenDescriptor_","nodeType":"VariableDeclaration","scope":4505,"src":"2829:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4487,"name":"address","nodeType":"ElementaryTypeName","src":"2829:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2770:90:28"},"returnParameters":{"id":4499,"nodeType":"ParameterList","parameters":[],"src":"2966:0:28"},"scope":5490,"src":"2759:260:28","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[6669],"body":{"id":4585,"nodeType":"Block","src":"3584:627:28","statements":[{"assignments":[4537],"declarations":[{"constant":false,"id":4537,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":4585,"src":"3594:24:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":4536,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":4456,"src":"3594:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":4541,"initialValue":{"baseExpression":{"id":4538,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"3621:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":4540,"indexExpression":{"id":4539,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4508,"src":"3632:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3621:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3594:46:28"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint80","typeString":"uint80"},"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4543,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"3658:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":4441,"src":"3658:15:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3677:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3658:20:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420746f6b656e204944","id":4547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3680:18:28","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":4542,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3650:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3650:49:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4549,"nodeType":"ExpressionStatement","src":"3650:49:28"},{"assignments":[4553],"declarations":[{"constant":false,"id":4553,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":4585,"src":"3709:34:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":4552,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"3709:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":4558,"initialValue":{"baseExpression":{"id":4554,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4466,"src":"3746:16:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$7404_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":4557,"indexExpression":{"expression":{"id":4555,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"3763:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4556,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":4441,"src":"3763:15:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3746:33:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3709:70:28"},{"expression":{"components":[{"expression":{"id":4559,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"3810:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4437,"src":"3810:14:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"id":4561,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"3838:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4562,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"operator","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"3838:17:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4563,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4553,"src":"3869:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":7399,"src":"3869:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4565,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4553,"src":"3897:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4566,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":7401,"src":"3897:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4567,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4553,"src":"3925:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":7403,"src":"3925:11:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":4569,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"3950:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4570,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"3950:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4571,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"3982:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"3982:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4573,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"4014:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4447,"src":"4014:18:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":4575,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"4046:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4576,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":4449,"src":"4046:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4577,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"4093:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4578,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":4451,"src":"4093:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4579,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"4140:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4580,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":4453,"src":"4140:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":4581,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"4174:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"id":4582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":4455,"src":"4174:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":4583,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3796:408:28","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":4535,"id":4584,"nodeType":"Return","src":"3789:415:28"}]},"documentation":{"id":4506,"nodeType":"StructuredDocumentation","src":"3025:43:28","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"99fbab88","id":4586,"implemented":true,"kind":"function","modifiers":[],"name":"positions","nodeType":"FunctionDefinition","overrides":{"id":4510,"nodeType":"OverrideSpecifier","overrides":[],"src":"3161:8:28"},"parameters":{"id":4509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4508,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4586,"src":"3101:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4507,"name":"uint256","nodeType":"ElementaryTypeName","src":"3101:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3091:31:28"},"returnParameters":{"id":4535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4512,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":4586,"src":"3200:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":4511,"name":"uint96","nodeType":"ElementaryTypeName","src":"3200:6:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":4514,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":4586,"src":"3226:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4513,"name":"address","nodeType":"ElementaryTypeName","src":"3226:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4516,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":4586,"src":"3256:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4515,"name":"address","nodeType":"ElementaryTypeName","src":"3256:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4518,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":4586,"src":"3284:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4517,"name":"address","nodeType":"ElementaryTypeName","src":"3284:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4520,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":4586,"src":"3312:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4519,"name":"uint24","nodeType":"ElementaryTypeName","src":"3312:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":4522,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":4586,"src":"3336:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4521,"name":"int24","nodeType":"ElementaryTypeName","src":"3336:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4524,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":4586,"src":"3365:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4523,"name":"int24","nodeType":"ElementaryTypeName","src":"3365:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4526,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4586,"src":"3394:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4525,"name":"uint128","nodeType":"ElementaryTypeName","src":"3394:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4528,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":4586,"src":"3425:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4527,"name":"uint256","nodeType":"ElementaryTypeName","src":"3425:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4530,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":4586,"src":"3471:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4529,"name":"uint256","nodeType":"ElementaryTypeName","src":"3471:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4532,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":4586,"src":"3517:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4531,"name":"uint128","nodeType":"ElementaryTypeName","src":"3517:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4534,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":4586,"src":"3550:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4533,"name":"uint128","nodeType":"ElementaryTypeName","src":"3550:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3186:393:28"},"scope":5490,"src":"3073:1138:28","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":4623,"nodeType":"Block","src":"4352:180:28","statements":[{"expression":{"id":4600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4596,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"4362:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4597,"name":"_poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4461,"src":"4371:8:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint80_$","typeString":"mapping(address => uint80)"}},"id":4599,"indexExpression":{"id":4598,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"4380:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4371:14:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"4362:23:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"id":4601,"nodeType":"ExpressionStatement","src":"4362:23:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint80","typeString":"uint80"},"id":4604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4602,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"4399:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4409:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4399:11:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4622,"nodeType":"IfStatement","src":"4395:131:28","trueBody":{"id":4621,"nodeType":"Block","src":"4412:114:28","statements":[{"expression":{"id":4613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4605,"name":"_poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4461,"src":"4426:8:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint80_$","typeString":"mapping(address => uint80)"}},"id":4607,"indexExpression":{"id":4606,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"4435:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4426:14:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4608,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"4444:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4453:13:28","subExpression":{"id":4609,"name":"_nextPoolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4479,"src":"4453:11:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"4444:22:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}}],"id":4612,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4443:24:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"4426:41:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"id":4614,"nodeType":"ExpressionStatement","src":"4426:41:28"},{"expression":{"id":4619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4615,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4466,"src":"4481:16:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$7404_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":4617,"indexExpression":{"id":4616,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"4498:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4481:24:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4618,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4591,"src":"4508:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"src":"4481:34:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"id":4620,"nodeType":"ExpressionStatement","src":"4481:34:28"}]}}]},"documentation":{"id":4587,"nodeType":"StructuredDocumentation","src":"4217:26:28","text":"@dev Caches a pool key"},"id":4624,"implemented":true,"kind":"function","modifiers":[],"name":"cachePoolKey","nodeType":"FunctionDefinition","parameters":{"id":4592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4589,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":4624,"src":"4270:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4588,"name":"address","nodeType":"ElementaryTypeName","src":"4270:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4591,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":4624,"src":"4284:34:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":4590,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"4284:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"4269:50:28"},"returnParameters":{"id":4595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4594,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":4624,"src":"4337:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":4593,"name":"uint80","nodeType":"ElementaryTypeName","src":"4337:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"4336:15:28"},"scope":5490,"src":"4248:284:28","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[6706],"body":{"id":4759,"nodeType":"Block","src":"4822:1581:28","statements":[{"assignments":[4644],"declarations":[{"constant":false,"id":4644,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":4759,"src":"4832:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":4643,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"4832:12:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"id":4645,"nodeType":"VariableDeclarationStatement","src":"4832:17:28"},{"expression":{"id":4677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4646,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4637,"src":"4860:9:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":4647,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"4871:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4648,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4641,"src":"4880:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4649,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"4889:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}}],"id":4650,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4859:35:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IAstraCLPool_$110_$","typeString":"tuple(uint128,uint256,uint256,contract IAstraCLPool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":4653,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"4968:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":6671,"src":"4968:13:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4655,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5007:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":6673,"src":"5007:13:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4657,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5043:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":6675,"src":"5043:10:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"arguments":[{"id":4661,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5090:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}],"id":4660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5082:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4659,"name":"address","nodeType":"ElementaryTypeName","src":"5082:7:28","typeDescriptions":{}}},"id":4662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5082:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":4663,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5124:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":6677,"src":"5124:16:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4665,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5169:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":6679,"src":"5169:16:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4667,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5219:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Desired","nodeType":"MemberAccess","referencedDeclaration":6681,"src":"5219:21:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4669,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5274:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Desired","nodeType":"MemberAccess","referencedDeclaration":6683,"src":"5274:21:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4671,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5325:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"5325:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4673,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5372:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":6687,"src":"5372:17:28","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":4652,"name":"AddLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"4923:18:28","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityParams_$5817_storage_ptr_$","typeString":"type(struct LiquidityManagement.AddLiquidityParams storage pointer)"}},"id":4675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee","recipient","tickLower","tickUpper","amount0Desired","amount1Desired","amount0Min","amount1Min"],"nodeType":"FunctionCall","src":"4923:481:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}],"id":4651,"name":"addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"4897:12:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddLiquidityParams_$5817_memory_ptr_$returns$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IAstraCLPool_$110_$","typeString":"function (struct LiquidityManagement.AddLiquidityParams memory) returns (uint128,uint256,uint256,contract IAstraCLPool)"}},"id":4676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4897:517:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IAstraCLPool_$110_$","typeString":"tuple(uint128,uint256,uint256,contract IAstraCLPool)"}},"src":"4859:555:28","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4678,"nodeType":"ExpressionStatement","src":"4859:555:28"},{"expression":{"arguments":[{"expression":{"id":4680,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5431:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"5431:16:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"components":[{"id":4685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4682,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4635,"src":"5450:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5460:9:28","subExpression":{"id":4683,"name":"_nextId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"5460:7:28","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"5450:19:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4686,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5449:21:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4679,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"5425:5:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5425:46:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4688,"nodeType":"ExpressionStatement","src":"5425:46:28"},{"assignments":[4690],"declarations":[{"constant":false,"id":4690,"mutability":"mutable","name":"positionKey","nodeType":"VariableDeclaration","scope":4759,"src":"5482:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4689,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5482:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4702,"initialValue":{"arguments":[{"arguments":[{"id":4695,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5532:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}],"id":4694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5524:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4693,"name":"address","nodeType":"ElementaryTypeName","src":"5524:7:28","typeDescriptions":{}}},"id":4696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5524:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":4697,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5539:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":6677,"src":"5539:16:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4699,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5557:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":6679,"src":"5557:16:28","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":4691,"name":"PositionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"5504:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionKey_$7508_$","typeString":"type(library PositionKey)"}},"id":4692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"compute","nodeType":"MemberAccess","referencedDeclaration":7507,"src":"5504:19:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_int24_$_t_int24_$returns$_t_bytes32_$","typeString":"function (address,int24,int24) pure returns (bytes32)"}},"id":4701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5504:70:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5482:92:28"},{"assignments":[null,4704,4706,null,null],"declarations":[null,{"constant":false,"id":4704,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":4759,"src":"5587:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4703,"name":"uint256","nodeType":"ElementaryTypeName","src":"5587:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4706,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":4759,"src":"5621:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4705,"name":"uint256","nodeType":"ElementaryTypeName","src":"5621:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":4711,"initialValue":{"arguments":[{"id":4709,"name":"positionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4690,"src":"5676:11:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4707,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"5661:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":4708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":529,"src":"5661:14:28","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":4710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5661:27:28","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":"5584:104:28"},{"assignments":[4713],"declarations":[{"constant":false,"id":4713,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":4759,"src":"5725:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":4712,"name":"uint80","nodeType":"ElementaryTypeName","src":"5725:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"id":4729,"initialValue":{"arguments":[{"arguments":[{"id":4717,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"5775:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}],"id":4716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5767:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4715,"name":"address","nodeType":"ElementaryTypeName","src":"5767:7:28","typeDescriptions":{}}},"id":4718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5767:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":4721,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5823:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":6671,"src":"5823:13:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4723,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5846:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":6673,"src":"5846:13:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4725,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"5866:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":6675,"src":"5866:10:28","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":4719,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"5794:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$7483_$","typeString":"type(library PoolAddress)"}},"id":4720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":7404,"src":"5794:19:28","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$7404_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":4727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"5794:84:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"id":4714,"name":"cachePoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"5741:12:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_PoolKey_$7404_memory_ptr_$returns$_t_uint80_$","typeString":"function (address,struct PoolAddress.PoolKey memory) returns (uint80)"}},"id":4728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5741:147:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"nodeType":"VariableDeclarationStatement","src":"5725:163:28"},{"expression":{"id":4750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4730,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"5899:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":4732,"indexExpression":{"id":4731,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4635,"src":"5910:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5899:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":4734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5951:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"30","id":4737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5984:1:28","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":4736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5976:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4735,"name":"address","nodeType":"ElementaryTypeName","src":"5976:7:28","typeDescriptions":{}}},"id":4738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5976:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4739,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4713,"src":"6008:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},{"expression":{"id":4740,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"6039:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":6677,"src":"6039:16:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4742,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"6080:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":6679,"src":"6080:16:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4744,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4637,"src":"6121:9:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":4745,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4704,"src":"6170:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4746,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4706,"src":"6234:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":4747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6285:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":4748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6313:1:28","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"}],"id":4733,"name":"Position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"5921:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Position_$4456_storage_ptr_$","typeString":"type(struct NonfungiblePositionManager.Position storage pointer)"}},"id":4749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["nonce","operator","poolId","tickLower","tickUpper","liquidity","feeGrowthInside0LastX128","feeGrowthInside1LastX128","tokensOwed0","tokensOwed1"],"nodeType":"FunctionCall","src":"5921:404:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_memory_ptr","typeString":"struct NonfungiblePositionManager.Position memory"}},"src":"5899:426:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"id":4751,"nodeType":"ExpressionStatement","src":"5899:426:28"},{"eventCall":{"arguments":[{"id":4753,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4635,"src":"6359:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4754,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4637,"src":"6368:9:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":4755,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"6379:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4756,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4641,"src":"6388:7:28","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":4752,"name":"IncreaseLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6617,"src":"6341:17:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint128,uint256,uint256)"}},"id":4757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6341:55:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4758,"nodeType":"EmitStatement","src":"6336:60:28"}]},"documentation":{"id":4625,"nodeType":"StructuredDocumentation","src":"4538:43:28","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"88316456","id":4760,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":4631,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"4714:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams calldata"}},"id":4632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6691,"src":"4714:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4633,"modifierName":{"id":4630,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6274,"src":"4700:13:28","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4700:30:28"}],"name":"mint","nodeType":"FunctionDefinition","overrides":{"id":4629,"nodeType":"OverrideSpecifier","overrides":[],"src":"4683:8:28"},"parameters":{"id":4628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4627,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":4760,"src":"4609:26:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams"},"typeName":{"id":4626,"name":"MintParams","nodeType":"UserDefinedTypeName","referencedDeclaration":6692,"src":"4609:10:28","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_storage_ptr","typeString":"struct INonfungiblePositionManager.MintParams"}},"visibility":"internal"}],"src":"4599:42:28"},"returnParameters":{"id":4642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4635,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4760,"src":"4748:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4634,"name":"uint256","nodeType":"ElementaryTypeName","src":"4748:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4637,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4760,"src":"4765:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4636,"name":"uint128","nodeType":"ElementaryTypeName","src":"4765:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4639,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":4760,"src":"4784:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4638,"name":"uint256","nodeType":"ElementaryTypeName","src":"4784:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4641,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":4760,"src":"4801:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4640,"name":"uint256","nodeType":"ElementaryTypeName","src":"4801:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4747:70:28"},"scope":5490,"src":"4586:1817:28","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":4774,"nodeType":"Block","src":"6456:92:28","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":4766,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6493:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6493:10:28","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4768,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"6505:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4765,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"6474:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":4769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6474:39:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f7420617070726f766564","id":4770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6515:14:28","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":4764,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6466:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6466:64:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4772,"nodeType":"ExpressionStatement","src":"6466:64:28"},{"id":4773,"nodeType":"PlaceholderStatement","src":"6540:1:28"}]},"id":4775,"name":"isAuthorizedForToken","nodeType":"ModifierDefinition","parameters":{"id":4763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4762,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4775,"src":"6439:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4761,"name":"uint256","nodeType":"ElementaryTypeName","src":"6439:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6438:17:28"},"src":"6409:139:28","virtual":false,"visibility":"internal"},{"baseFunctions":[2043,2924],"body":{"id":4799,"nodeType":"Block","src":"6659:136:28","statements":[{"expression":{"arguments":[{"arguments":[{"id":4787,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4777,"src":"6685:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4786,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"6677:7:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":4788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6677:16:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4785,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6669:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6669:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4790,"nodeType":"ExpressionStatement","src":"6669:25:28"},{"expression":{"arguments":[{"id":4795,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6774:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}},{"id":4796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4777,"src":"6780:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4792,"name":"_tokenDescriptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4482,"src":"6747:16:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4791,"name":"INonfungibleTokenPositionDescriptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6793,"src":"6711:35:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_INonfungibleTokenPositionDescriptor_$6793_$","typeString":"type(contract INonfungibleTokenPositionDescriptor)"}},"id":4793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6711:53:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_INonfungibleTokenPositionDescriptor_$6793","typeString":"contract INonfungibleTokenPositionDescriptor"}},"id":4794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenURI","nodeType":"MemberAccess","referencedDeclaration":6792,"src":"6711:62:28","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_INonfungiblePositionManager_$6778_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (contract INonfungiblePositionManager,uint256) view external returns (string memory)"}},"id":4797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6711:77:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4784,"id":4798,"nodeType":"Return","src":"6704:84:28"}]},"functionSelector":"c87b56dd","id":4800,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","overrides":{"id":4781,"nodeType":"OverrideSpecifier","overrides":[{"id":4779,"name":"ERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":2751,"src":"6610:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$2751","typeString":"contract ERC721"}},{"id":4780,"name":"IERC721Metadata","nodeType":"UserDefinedTypeName","referencedDeclaration":2925,"src":"6618:15:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$2925","typeString":"contract IERC721Metadata"}}],"src":"6601:33:28"},"parameters":{"id":4778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4777,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4800,"src":"6572:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4776,"name":"uint256","nodeType":"ElementaryTypeName","src":"6572:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6571:17:28"},"returnParameters":{"id":4784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4783,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4800,"src":"6644:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4782,"name":"string","nodeType":"ElementaryTypeName","src":"6644:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6643:15:28"},"scope":5490,"src":"6554:241:28","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2052],"body":{"id":4806,"nodeType":"Block","src":"6930:2:28","statements":[]},"functionSelector":"6c0360eb","id":4807,"implemented":true,"kind":"function","modifiers":[],"name":"baseURI","nodeType":"FunctionDefinition","overrides":{"id":4802,"nodeType":"OverrideSpecifier","overrides":[],"src":"6897:8:28"},"parameters":{"id":4801,"nodeType":"ParameterList","parameters":[],"src":"6882:2:28"},"returnParameters":{"id":4805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4804,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4807,"src":"6915:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4803,"name":"string","nodeType":"ElementaryTypeName","src":"6915:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6914:15:28"},"scope":5490,"src":"6866:66:28","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[6731],"body":{"id":4963,"nodeType":"Block","src":"7231:1781:28","statements":[{"assignments":[4825],"declarations":[{"constant":false,"id":4825,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":4963,"src":"7241:25:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":4824,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":4456,"src":"7241:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":4830,"initialValue":{"baseExpression":{"id":4826,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"7269:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":4829,"indexExpression":{"expression":{"id":4827,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"7280:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":4828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":6708,"src":"7280:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7269:26:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7241:54:28"},{"assignments":[4834],"declarations":[{"constant":false,"id":4834,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":4963,"src":"7306:34:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":4833,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"7306:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":4839,"initialValue":{"baseExpression":{"id":4835,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4466,"src":"7343:16:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$7404_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":4838,"indexExpression":{"expression":{"id":4836,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"7360:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4837,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":4441,"src":"7360:15:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7343:33:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7306:70:28"},{"assignments":[4841],"declarations":[{"constant":false,"id":4841,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":4963,"src":"7387:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":4840,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"7387:12:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"id":4842,"nodeType":"VariableDeclarationStatement","src":"7387:17:28"},{"expression":{"id":4874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4843,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"7415:9:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":4844,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4820,"src":"7426:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4845,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"7435:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4846,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4841,"src":"7444:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}}],"id":4847,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7414:35:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IAstraCLPool_$110_$","typeString":"tuple(uint128,uint256,uint256,contract IAstraCLPool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":4850,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"7523:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4851,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":7399,"src":"7523:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4852,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"7563:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":7401,"src":"7563:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4854,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"7600:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":4855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":7403,"src":"7600:11:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":4856,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"7640:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4857,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"7640:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4858,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"7687:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"7687:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4860,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"7739:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":4861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Desired","nodeType":"MemberAccess","referencedDeclaration":6710,"src":"7739:21:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4862,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"7794:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":4863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Desired","nodeType":"MemberAccess","referencedDeclaration":6712,"src":"7794:21:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4864,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"7845:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":4865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":6714,"src":"7845:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4866,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"7892:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":4867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":6716,"src":"7892:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":4870,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7946:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}],"id":4869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7938:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4868,"name":"address","nodeType":"ElementaryTypeName","src":"7938:7:28","typeDescriptions":{}}},"id":4871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7938:13:28","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":4849,"name":"AddLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"7478:18:28","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityParams_$5817_storage_ptr_$","typeString":"type(struct LiquidityManagement.AddLiquidityParams storage pointer)"}},"id":4872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee","tickLower","tickUpper","amount0Desired","amount1Desired","amount0Min","amount1Min","recipient"],"nodeType":"FunctionCall","src":"7478:488:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}],"id":4848,"name":"addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"7452:12:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddLiquidityParams_$5817_memory_ptr_$returns$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IAstraCLPool_$110_$","typeString":"function (struct LiquidityManagement.AddLiquidityParams memory) returns (uint128,uint256,uint256,contract IAstraCLPool)"}},"id":4873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7452:524:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$_t_contract$_IAstraCLPool_$110_$","typeString":"tuple(uint128,uint256,uint256,contract IAstraCLPool)"}},"src":"7414:562:28","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4875,"nodeType":"ExpressionStatement","src":"7414:562:28"},{"assignments":[4877],"declarations":[{"constant":false,"id":4877,"mutability":"mutable","name":"positionKey","nodeType":"VariableDeclaration","scope":4963,"src":"7987:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4876,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7987:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4889,"initialValue":{"arguments":[{"arguments":[{"id":4882,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8037:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}],"id":4881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8029:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4880,"name":"address","nodeType":"ElementaryTypeName","src":"8029:7:28","typeDescriptions":{}}},"id":4883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8029:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":4884,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8044:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"8044:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4886,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8064:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"8064:18:28","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":4878,"name":"PositionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"8009:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionKey_$7508_$","typeString":"type(library PositionKey)"}},"id":4879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"compute","nodeType":"MemberAccess","referencedDeclaration":7507,"src":"8009:19:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_int24_$_t_int24_$returns$_t_bytes32_$","typeString":"function (address,int24,int24) pure returns (bytes32)"}},"id":4888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8009:74:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7987:96:28"},{"assignments":[null,4891,4893,null,null],"declarations":[null,{"constant":false,"id":4891,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":4963,"src":"8155:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4890,"name":"uint256","nodeType":"ElementaryTypeName","src":"8155:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4893,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":4963,"src":"8189:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4892,"name":"uint256","nodeType":"ElementaryTypeName","src":"8189:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":4898,"initialValue":{"arguments":[{"id":4896,"name":"positionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"8244:11:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4894,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4841,"src":"8229:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":4895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":529,"src":"8229:14:28","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":4897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8229:27:28","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":"8152:104:28"},{"expression":{"id":4916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4899,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8267:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":4453,"src":"8267:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4906,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4891,"src":"8345:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":4907,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8372:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":4449,"src":"8372:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8345:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4910,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8423:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4911,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4447,"src":"8423:18:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":4912,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"8459:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$551_$","typeString":"type(library FixedPoint128)"}},"id":4913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":550,"src":"8459:18:28","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":4904,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"8312:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":4905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"8312:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8312:179:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8291:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":4902,"name":"uint128","nodeType":"ElementaryTypeName","src":"8291:7:28","typeDescriptions":{}}},"id":4915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8291:210:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"8267:234:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4917,"nodeType":"ExpressionStatement","src":"8267:234:28"},{"expression":{"id":4935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4918,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8511:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4920,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":4455,"src":"8511:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4925,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4893,"src":"8589:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":4926,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8616:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":4451,"src":"8616:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8589:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4929,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8667:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4447,"src":"8667:18:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":4931,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"8703:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$551_$","typeString":"type(library FixedPoint128)"}},"id":4932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":550,"src":"8703:18:28","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":4923,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"8556:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":4924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"8556:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8556:179:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8535:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":4921,"name":"uint128","nodeType":"ElementaryTypeName","src":"8535:7:28","typeDescriptions":{}}},"id":4934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8535:210:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"8511:234:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4936,"nodeType":"ExpressionStatement","src":"8511:234:28"},{"expression":{"id":4941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4937,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8756:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":4449,"src":"8756:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4940,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4891,"src":"8792:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8756:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4942,"nodeType":"ExpressionStatement","src":"8756:60:28"},{"expression":{"id":4947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4943,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8826:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4945,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":4451,"src":"8826:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4946,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4893,"src":"8862:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8826:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4948,"nodeType":"ExpressionStatement","src":"8826:60:28"},{"expression":{"id":4953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4949,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"8896:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":4951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4447,"src":"8896:18:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4952,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"8918:9:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"8896:31:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4954,"nodeType":"ExpressionStatement","src":"8896:31:28"},{"eventCall":{"arguments":[{"expression":{"id":4956,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"8961:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":4957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":6708,"src":"8961:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4958,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"8977:9:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":4959,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4820,"src":"8988:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4960,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"8997:7:28","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":4955,"name":"IncreaseLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6617,"src":"8943:17:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint128,uint256,uint256)"}},"id":4961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8943:62:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4962,"nodeType":"EmitStatement","src":"8938:67:28"}]},"documentation":{"id":4808,"nodeType":"StructuredDocumentation","src":"6938:43:28","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"219f5d17","id":4964,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":4814,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"7140:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams calldata"}},"id":4815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6718,"src":"7140:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4816,"modifierName":{"id":4813,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6274,"src":"7126:13:28","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"7126:30:28"}],"name":"increaseLiquidity","nodeType":"FunctionDefinition","overrides":{"id":4812,"nodeType":"OverrideSpecifier","overrides":[],"src":"7109:8:28"},"parameters":{"id":4811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4810,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":4964,"src":"7022:39:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"},"typeName":{"id":4809,"name":"IncreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":6719,"src":"7022:23:28","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_storage_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"}},"visibility":"internal"}],"src":"7012:55:28"},"returnParameters":{"id":4823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4818,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4964,"src":"7174:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4817,"name":"uint128","nodeType":"ElementaryTypeName","src":"7174:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4820,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":4964,"src":"7193:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4819,"name":"uint256","nodeType":"ElementaryTypeName","src":"7193:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4822,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":4964,"src":"7210:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4821,"name":"uint256","nodeType":"ElementaryTypeName","src":"7210:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7173:53:28"},"scope":5490,"src":"6986:2026:28","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[6752],"body":{"id":5154,"nodeType":"Block","src":"9337:1879:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4984,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"9355:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":4985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":6735,"src":"9355:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9374:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9355:20:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4983,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9347:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9347:29:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4989,"nodeType":"ExpressionStatement","src":"9347:29:28"},{"assignments":[4991],"declarations":[{"constant":false,"id":4991,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":5154,"src":"9386:25:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":4990,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":4456,"src":"9386:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":4996,"initialValue":{"baseExpression":{"id":4992,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"9414:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":4995,"indexExpression":{"expression":{"id":4993,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"9425:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":4994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":6733,"src":"9425:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9414:26:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9386:54:28"},{"assignments":[4998],"declarations":[{"constant":false,"id":4998,"mutability":"mutable","name":"positionLiquidity","nodeType":"VariableDeclaration","scope":5154,"src":"9451:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4997,"name":"uint128","nodeType":"ElementaryTypeName","src":"9451:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":5001,"initialValue":{"expression":{"id":4999,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"9479:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4447,"src":"9479:18:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"9451:46:28"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5003,"name":"positionLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"9515:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":5004,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"9536:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":5005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":6735,"src":"9536:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9515:37:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5002,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9507:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9507:46:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5008,"nodeType":"ExpressionStatement","src":"9507:46:28"},{"assignments":[5012],"declarations":[{"constant":false,"id":5012,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":5154,"src":"9564:34:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":5011,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"9564:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":5017,"initialValue":{"baseExpression":{"id":5013,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4466,"src":"9601:16:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$7404_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":5016,"indexExpression":{"expression":{"id":5014,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"9618:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":4441,"src":"9618:15:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9601:33:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9564:70:28"},{"assignments":[5019],"declarations":[{"constant":false,"id":5019,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":5154,"src":"9644:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":5018,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"9644:12:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"id":5027,"initialValue":{"arguments":[{"arguments":[{"id":5023,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"9704:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5024,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5012,"src":"9713:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":5021,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"9677:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$7483_$","typeString":"type(library PoolAddress)"}},"id":5022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":7482,"src":"9677:26:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$7404_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":5025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9677:44:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5020,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"9664:12:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":5026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9664:58:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"nodeType":"VariableDeclarationStatement","src":"9644:78:28"},{"expression":{"id":5040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":5028,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"9733:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5029,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4981,"src":"9742:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5030,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9732:18:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":5033,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"9763:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"9763:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":5035,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"9783:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5036,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"9783:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":5037,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"9803:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":5038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":6735,"src":"9803:16:28","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":5031,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"9753:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":5032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":183,"src":"9753:9:28","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":5039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9753:67:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"9732:88:28","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5041,"nodeType":"ExpressionStatement","src":"9732:88:28"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5043,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"9839:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":5044,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"9850:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":5045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":6737,"src":"9850:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9839:28:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5047,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4981,"src":"9871:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":5048,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"9882:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":5049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":6739,"src":"9882:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9871:28:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9839:60:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"507269636520736c69707061676520636865636b","id":5052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9901:22:28","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":5042,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9831:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9831:93:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5054,"nodeType":"ExpressionStatement","src":"9831:93:28"},{"assignments":[5056],"declarations":[{"constant":false,"id":5056,"mutability":"mutable","name":"positionKey","nodeType":"VariableDeclaration","scope":5154,"src":"9935:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5055,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9935:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5068,"initialValue":{"arguments":[{"arguments":[{"id":5061,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9985:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}],"id":5060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9977:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5059,"name":"address","nodeType":"ElementaryTypeName","src":"9977:7:28","typeDescriptions":{}}},"id":5062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9977:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":5063,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"9992:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"9992:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":5065,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"10012:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"10012:18:28","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":5057,"name":"PositionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"9957:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionKey_$7508_$","typeString":"type(library PositionKey)"}},"id":5058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"compute","nodeType":"MemberAccess","referencedDeclaration":7507,"src":"9957:19:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_int24_$_t_int24_$returns$_t_bytes32_$","typeString":"function (address,int24,int24) pure returns (bytes32)"}},"id":5067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9957:74:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9935:96:28"},{"assignments":[null,5070,5072,null,null],"declarations":[null,{"constant":false,"id":5070,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":5154,"src":"10102:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5069,"name":"uint256","nodeType":"ElementaryTypeName","src":"10102:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5072,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":5154,"src":"10136:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5071,"name":"uint256","nodeType":"ElementaryTypeName","src":"10136:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":5077,"initialValue":{"arguments":[{"id":5075,"name":"positionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5056,"src":"10191:11:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5073,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"10176:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":5074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":529,"src":"10176:14:28","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":5076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10176:27:28","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":"10099:104:28"},{"expression":{"id":5099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5078,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"10214:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5080,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":4453,"src":"10214:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5083,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"10258:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10250:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5081,"name":"uint128","nodeType":"ElementaryTypeName","src":"10250:7:28","typeDescriptions":{}}},"id":5084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10250:16:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5089,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5070,"src":"10343:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5090,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"10370:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":4449,"src":"10370:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10343:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5093,"name":"positionLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"10425:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":5094,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"10464:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$551_$","typeString":"type(library FixedPoint128)"}},"id":5095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":550,"src":"10464:18:28","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":5087,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"10306:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":5088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"10306:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10306:194:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10281:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5085,"name":"uint128","nodeType":"ElementaryTypeName","src":"10281:7:28","typeDescriptions":{}}},"id":5097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10281:233:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10250:264:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10214:300:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5100,"nodeType":"ExpressionStatement","src":"10214:300:28"},{"expression":{"id":5122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5101,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"10524:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":4455,"src":"10524:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5106,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4981,"src":"10568:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10560:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5104,"name":"uint128","nodeType":"ElementaryTypeName","src":"10560:7:28","typeDescriptions":{}}},"id":5107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10560:16:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5112,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5072,"src":"10653:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5113,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"10680:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5114,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":4451,"src":"10680:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10653:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5116,"name":"positionLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"10735:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":5117,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"10774:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$551_$","typeString":"type(library FixedPoint128)"}},"id":5118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":550,"src":"10774:18:28","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":5110,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"10616:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":5111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"10616:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10616:194:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10591:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5108,"name":"uint128","nodeType":"ElementaryTypeName","src":"10591:7:28","typeDescriptions":{}}},"id":5120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10591:233:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10560:264:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10524:300:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5123,"nodeType":"ExpressionStatement","src":"10524:300:28"},{"expression":{"id":5128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5124,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"10835:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":4449,"src":"10835:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5127,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5070,"src":"10871:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10835:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5129,"nodeType":"ExpressionStatement","src":"10835:60:28"},{"expression":{"id":5134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5130,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"10905:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":4451,"src":"10905:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5133,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5072,"src":"10941:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10905:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5135,"nodeType":"ExpressionStatement","src":"10905:60:28"},{"expression":{"id":5143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5136,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4991,"src":"11067:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4447,"src":"11067:18:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5139,"name":"positionLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"11088:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5140,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"11108:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":5141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":6735,"src":"11108:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"11088:36:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"11067:57:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5144,"nodeType":"ExpressionStatement","src":"11067:57:28"},{"eventCall":{"arguments":[{"expression":{"id":5146,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"11158:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":5147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":6733,"src":"11158:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5148,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"11174:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":5149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":6735,"src":"11174:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5150,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"11192:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5151,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4981,"src":"11201:7:28","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":5145,"name":"DecreaseLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"11140:17:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint128,uint256,uint256)"}},"id":5152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11140:69:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5153,"nodeType":"EmitStatement","src":"11135:74:28"}]},"documentation":{"id":4965,"nodeType":"StructuredDocumentation","src":"9018:43:28","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"0c49ccbe","id":5155,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":4971,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"9227:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":4972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":6733,"src":"9227:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4973,"modifierName":{"id":4970,"name":"isAuthorizedForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4775,"src":"9206:20:28","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"9206:36:28"},{"arguments":[{"expression":{"id":4975,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"9265:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams calldata"}},"id":4976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6741,"src":"9265:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4977,"modifierName":{"id":4974,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6274,"src":"9251:13:28","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"9251:30:28"}],"name":"decreaseLiquidity","nodeType":"FunctionDefinition","overrides":{"id":4969,"nodeType":"OverrideSpecifier","overrides":[],"src":"9189:8:28"},"parameters":{"id":4968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4967,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":5155,"src":"9102:39:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"},"typeName":{"id":4966,"name":"DecreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":6742,"src":"9102:23:28","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_storage_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"}},"visibility":"internal"}],"src":"9092:55:28"},"returnParameters":{"id":4982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4979,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":5155,"src":"9299:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4978,"name":"uint256","nodeType":"ElementaryTypeName","src":"9299:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4981,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":5155,"src":"9316:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4980,"name":"uint256","nodeType":"ElementaryTypeName","src":"9316:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9298:34:28"},"scope":5490,"src":"9066:2150:28","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[6771],"body":{"id":5376,"nodeType":"Block","src":"11438:2640:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5171,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"11456:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Max","nodeType":"MemberAccess","referencedDeclaration":6758,"src":"11456:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11476:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11456:21:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5175,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"11481:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Max","nodeType":"MemberAccess","referencedDeclaration":6760,"src":"11481:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11501:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11481:21:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11456:46:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11448:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11448:55:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5181,"nodeType":"ExpressionStatement","src":"11448:55:28"},{"assignments":[5183],"declarations":[{"constant":false,"id":5183,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":5376,"src":"11592:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5182,"name":"address","nodeType":"ElementaryTypeName","src":"11592:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5198,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5184,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"11612:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":6756,"src":"11612:16:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11640:1:28","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":5187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11632:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5186,"name":"address","nodeType":"ElementaryTypeName","src":"11632:7:28","typeDescriptions":{}}},"id":5189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11632:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"11612:30:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":5195,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"11661:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":6756,"src":"11661:16:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11612:65:28","trueExpression":{"arguments":[{"id":5193,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11653:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}],"id":5192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11645:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5191,"name":"address","nodeType":"ElementaryTypeName","src":"11645:7:28","typeDescriptions":{}}},"id":5194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11645:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11592:85:28"},{"assignments":[5200],"declarations":[{"constant":false,"id":5200,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":5376,"src":"11688:25:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":5199,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":4456,"src":"11688:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":5205,"initialValue":{"baseExpression":{"id":5201,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"11716:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":5204,"indexExpression":{"expression":{"id":5202,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"11727:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":6754,"src":"11727:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11716:26:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11688:54:28"},{"assignments":[5209],"declarations":[{"constant":false,"id":5209,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":5376,"src":"11753:34:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":5208,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"11753:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":5214,"initialValue":{"baseExpression":{"id":5210,"name":"_poolIdToPoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4466,"src":"11790:16:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint80_$_t_struct$_PoolKey_$7404_storage_$","typeString":"mapping(uint80 => struct PoolAddress.PoolKey storage ref)"}},"id":5213,"indexExpression":{"expression":{"id":5211,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"11807:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":4441,"src":"11807:15:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11790:33:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage","typeString":"struct PoolAddress.PoolKey storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11753:70:28"},{"assignments":[5216],"declarations":[{"constant":false,"id":5216,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":5376,"src":"11834:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":5215,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"11834:12:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"id":5224,"initialValue":{"arguments":[{"arguments":[{"id":5220,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"11894:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5221,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5209,"src":"11903:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":5218,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"11867:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$7483_$","typeString":"type(library PoolAddress)"}},"id":5219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":7482,"src":"11867:26:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$7404_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":5222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11867:44:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5217,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"11854:12:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":5223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11854:58:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"nodeType":"VariableDeclarationStatement","src":"11834:78:28"},{"assignments":[5226,5228],"declarations":[{"constant":false,"id":5226,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":5376,"src":"11924:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5225,"name":"uint128","nodeType":"ElementaryTypeName","src":"11924:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5228,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":5376,"src":"11945:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5227,"name":"uint128","nodeType":"ElementaryTypeName","src":"11945:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":5234,"initialValue":{"components":[{"expression":{"id":5229,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"11969:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":4453,"src":"11969:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":5231,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"11991:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5232,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":4455,"src":"11991:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":5233,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11968:44:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"11923:89:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5235,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"12131:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4447,"src":"12131:18:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12152:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12131:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5315,"nodeType":"IfStatement","src":"12127:992:28","trueBody":{"id":5314,"nodeType":"Block","src":"12155:964:28","statements":[{"expression":{"arguments":[{"expression":{"id":5242,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"12179:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5243,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"12179:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":5244,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"12199:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5245,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"12199:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"30","id":5246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12219:1:28","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":5239,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"12169:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":5241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":183,"src":"12169:9:28","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":5247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12169:52:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":5248,"nodeType":"ExpressionStatement","src":"12169:52:28"},{"assignments":[null,5250,5252,null,null],"declarations":[null,{"constant":false,"id":5250,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":5314,"src":"12238:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5249,"name":"uint256","nodeType":"ElementaryTypeName","src":"12238:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5252,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":5314,"src":"12272:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5251,"name":"uint256","nodeType":"ElementaryTypeName","src":"12272:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":5267,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":5259,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12372:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}],"id":5258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12364:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5257,"name":"address","nodeType":"ElementaryTypeName","src":"12364:7:28","typeDescriptions":{}}},"id":5260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12364:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":5261,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"12379:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"12379:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":5263,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"12399:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"12399:18:28","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":5255,"name":"PositionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"12344:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionKey_$7508_$","typeString":"type(library PositionKey)"}},"id":5256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"compute","nodeType":"MemberAccess","referencedDeclaration":7507,"src":"12344:19:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_int24_$_t_int24_$returns$_t_bytes32_$","typeString":"function (address,int24,int24) pure returns (bytes32)"}},"id":5265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12344:74:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5253,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"12312:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":5254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":529,"src":"12312:14:28","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":5266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12312:120:28","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":"12235:197:28"},{"expression":{"id":5283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5268,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"12447:11:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5273,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5250,"src":"12524:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5274,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"12551:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":4449,"src":"12551:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12524:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5277,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"12606:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4447,"src":"12606:18:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":5279,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"12646:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$551_$","typeString":"type(library FixedPoint128)"}},"id":5280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":550,"src":"12646:18:28","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":5271,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"12487:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":5272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"12487:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12487:195:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12462:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5269,"name":"uint128","nodeType":"ElementaryTypeName","src":"12462:7:28","typeDescriptions":{}}},"id":5282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12462:234:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"12447:249:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5284,"nodeType":"ExpressionStatement","src":"12447:249:28"},{"expression":{"id":5300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5285,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5228,"src":"12710:11:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5290,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5252,"src":"12787:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5291,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"12814:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":4451,"src":"12814:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12787:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5294,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"12869:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5295,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4447,"src":"12869:18:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":5296,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"12909:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$551_$","typeString":"type(library FixedPoint128)"}},"id":5297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":550,"src":"12909:18:28","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":5288,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"12750:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":5289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"12750:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12750:195:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12725:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5286,"name":"uint128","nodeType":"ElementaryTypeName","src":"12725:7:28","typeDescriptions":{}}},"id":5299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12725:234:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"12710:249:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5301,"nodeType":"ExpressionStatement","src":"12710:249:28"},{"expression":{"id":5306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5302,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"12974:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5304,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":4449,"src":"12974:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5305,"name":"feeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5250,"src":"13010:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12974:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5307,"nodeType":"ExpressionStatement","src":"12974:60:28"},{"expression":{"id":5312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5308,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"13048:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":4451,"src":"13048:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5311,"name":"feeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5252,"src":"13084:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13048:60:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5313,"nodeType":"ExpressionStatement","src":"13048:60:28"}]}},{"assignments":[5317,5319],"declarations":[{"constant":false,"id":5317,"mutability":"mutable","name":"amount0Collect","nodeType":"VariableDeclaration","scope":5376,"src":"13198:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5316,"name":"uint128","nodeType":"ElementaryTypeName","src":"13198:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5319,"mutability":"mutable","name":"amount1Collect","nodeType":"VariableDeclaration","scope":5376,"src":"13222:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5318,"name":"uint128","nodeType":"ElementaryTypeName","src":"13222:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":5337,"initialValue":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5320,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"13262:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Max","nodeType":"MemberAccess","referencedDeclaration":6758,"src":"13262:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5322,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"13282:11:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"13262:31:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":5325,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"13310:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Max","nodeType":"MemberAccess","referencedDeclaration":6758,"src":"13310:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13262:65:28","trueExpression":{"id":5324,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"13296:11:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5328,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"13341:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Max","nodeType":"MemberAccess","referencedDeclaration":6760,"src":"13341:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5330,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5228,"src":"13361:11:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"13341:31:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":5333,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"13389:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Max","nodeType":"MemberAccess","referencedDeclaration":6760,"src":"13389:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13341:65:28","trueExpression":{"id":5332,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5228,"src":"13375:11:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":5336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13248:168:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"13197:219:28"},{"expression":{"id":5351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":5338,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5166,"src":"13481:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5339,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5168,"src":"13490:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5340,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13480:18:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5343,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5183,"src":"13527:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5344,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"13550:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"13550:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":5346,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"13582:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"13582:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":5348,"name":"amount0Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5317,"src":"13614:14:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5349,"name":"amount1Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5319,"src":"13642:14:28","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":5341,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"13501:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":5342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"collect","nodeType":"MemberAccess","referencedDeclaration":169,"src":"13501:12:28","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":5350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13501:165:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"src":"13480:186:28","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5352,"nodeType":"ExpressionStatement","src":"13480:186:28"},{"expression":{"id":5366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":5353,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"13883:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":4453,"src":"13883:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":5356,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"13905:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":4455,"src":"13905:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":5358,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13882:44:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5359,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"13930:11:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5360,"name":"amount0Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5317,"src":"13944:14:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"13930:28:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5362,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5228,"src":"13960:11:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5363,"name":"amount1Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5319,"src":"13974:14:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"13960:28:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":5365,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13929:60:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"src":"13882:107:28","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5367,"nodeType":"ExpressionStatement","src":"13882:107:28"},{"eventCall":{"arguments":[{"expression":{"id":5369,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"14013:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":6754,"src":"14013:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5371,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5183,"src":"14029:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5372,"name":"amount0Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5317,"src":"14040:14:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5373,"name":"amount1Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5319,"src":"14056:14:28","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":5368,"name":"Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6639,"src":"14005:7:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256,uint256)"}},"id":5374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14005:66:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5375,"nodeType":"EmitStatement","src":"14000:71:28"}]},"documentation":{"id":5156,"nodeType":"StructuredDocumentation","src":"11222:43:28","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"fc6f7865","id":5377,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":5162,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"11379:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams calldata"}},"id":5163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":6754,"src":"11379:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5164,"modifierName":{"id":5161,"name":"isAuthorizedForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4775,"src":"11358:20:28","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"11358:36:28"}],"name":"collect","nodeType":"FunctionDefinition","overrides":{"id":5160,"nodeType":"OverrideSpecifier","overrides":[],"src":"11349:8:28"},"parameters":{"id":5159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5158,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":5377,"src":"11296:29:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"},"typeName":{"id":5157,"name":"CollectParams","nodeType":"UserDefinedTypeName","referencedDeclaration":6761,"src":"11296:13:28","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_storage_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"}},"visibility":"internal"}],"src":"11286:45:28"},"returnParameters":{"id":5169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5166,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":5377,"src":"11404:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5165,"name":"uint256","nodeType":"ElementaryTypeName","src":"11404:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5168,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":5377,"src":"11421:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5167,"name":"uint256","nodeType":"ElementaryTypeName","src":"11421:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11403:34:28"},"scope":5490,"src":"11270:2808:28","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[6777],"body":{"id":5420,"nodeType":"Block","src":"14219:239:28","statements":[{"assignments":[5388],"declarations":[{"constant":false,"id":5388,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":5420,"src":"14229:25:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"},"typeName":{"id":5387,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":4456,"src":"14229:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position"}},"visibility":"internal"}],"id":5392,"initialValue":{"baseExpression":{"id":5389,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"14257:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":5391,"indexExpression":{"id":5390,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5380,"src":"14268:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14257:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14229:47:28"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5394,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5388,"src":"14294:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4447,"src":"14294:18:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14316:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14294:23:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5398,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5388,"src":"14321:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":4453,"src":"14321:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14345:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14321:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14294:52:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5403,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5388,"src":"14350:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage_ptr","typeString":"struct NonfungiblePositionManager.Position storage pointer"}},"id":5404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":4455,"src":"14350:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14374:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14350:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14294:81:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f7420636c6561726564","id":5408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14377:13:28","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa1d7f5abfb64daa85ec56d31f717d114a9182c82071ec276fdb7487a00b013e","typeString":"literal_string \"Not cleared\""},"value":"Not cleared"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fa1d7f5abfb64daa85ec56d31f717d114a9182c82071ec276fdb7487a00b013e","typeString":"literal_string \"Not cleared\""}],"id":5393,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14286:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14286:105:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5410,"nodeType":"ExpressionStatement","src":"14286:105:28"},{"expression":{"id":5414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"14401:26:28","subExpression":{"baseExpression":{"id":5411,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"14408:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":5413,"indexExpression":{"id":5412,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5380,"src":"14419:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14408:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5415,"nodeType":"ExpressionStatement","src":"14401:26:28"},{"expression":{"arguments":[{"id":5417,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5380,"src":"14443:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5416,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"14437:5:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":5418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14437:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5419,"nodeType":"ExpressionStatement","src":"14437:14:28"}]},"documentation":{"id":5378,"nodeType":"StructuredDocumentation","src":"14084:43:28","text":"@inheritdoc INonfungiblePositionManager"},"functionSelector":"42966c68","id":5421,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":5384,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5380,"src":"14210:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5385,"modifierName":{"id":5383,"name":"isAuthorizedForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4775,"src":"14189:20:28","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"14189:29:28"}],"name":"burn","nodeType":"FunctionDefinition","overrides":{"id":5382,"nodeType":"OverrideSpecifier","overrides":[],"src":"14180:8:28"},"parameters":{"id":5381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5380,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5421,"src":"14146:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5379,"name":"uint256","nodeType":"ElementaryTypeName","src":"14146:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14145:17:28"},"returnParameters":{"id":5386,"nodeType":"ParameterList","parameters":[],"src":"14219:0:28"},"scope":5490,"src":"14132:326:28","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[5527],"body":{"id":5438,"nodeType":"Block","src":"14548:60:28","statements":[{"expression":{"arguments":[{"id":5435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14573:27:28","subExpression":{"expression":{"baseExpression":{"id":5431,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"14573:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":5433,"indexExpression":{"id":5432,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5423,"src":"14584:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14573:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"id":5434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4437,"src":"14573:25:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":5430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14565:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5429,"name":"uint256","nodeType":"ElementaryTypeName","src":"14565:7:28","typeDescriptions":{}}},"id":5436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14565:36:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5428,"id":5437,"nodeType":"Return","src":"14558:43:28"}]},"id":5439,"implemented":true,"kind":"function","modifiers":[],"name":"_getAndIncrementNonce","nodeType":"FunctionDefinition","overrides":{"id":5425,"nodeType":"OverrideSpecifier","overrides":[],"src":"14521:8:28"},"parameters":{"id":5424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5423,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5439,"src":"14495:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5422,"name":"uint256","nodeType":"ElementaryTypeName","src":"14495:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14494:17:28"},"returnParameters":{"id":5428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5427,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5439,"src":"14539:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5426,"name":"uint256","nodeType":"ElementaryTypeName","src":"14539:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14538:9:28"},"scope":5490,"src":"14464:144:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2167,2836],"body":{"id":5462,"nodeType":"Block","src":"14736:136:28","statements":[{"expression":{"arguments":[{"arguments":[{"id":5452,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5442,"src":"14762:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5451,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"14754:7:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":5453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14754:16:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":5454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14772:46:28","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":5450,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14746:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14746:73:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5456,"nodeType":"ExpressionStatement","src":"14746:73:28"},{"expression":{"expression":{"baseExpression":{"id":5457,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"14837:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":5459,"indexExpression":{"id":5458,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5442,"src":"14848:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14837:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"id":5460,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"operator","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"14837:28:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5449,"id":5461,"nodeType":"Return","src":"14830:35:28"}]},"documentation":{"id":5440,"nodeType":"StructuredDocumentation","src":"14614:23:28","text":"@inheritdoc IERC721"},"functionSelector":"081812fc","id":5463,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nodeType":"FunctionDefinition","overrides":{"id":5446,"nodeType":"OverrideSpecifier","overrides":[{"id":5444,"name":"ERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":2751,"src":"14701:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$2751","typeString":"contract ERC721"}},{"id":5445,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":2867,"src":"14709:7:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2867","typeString":"contract IERC721"}}],"src":"14692:25:28"},"parameters":{"id":5443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5442,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5463,"src":"14663:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5441,"name":"uint256","nodeType":"ElementaryTypeName","src":"14663:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14662:17:28"},"returnParameters":{"id":5449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5448,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5463,"src":"14727:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5447,"name":"address","nodeType":"ElementaryTypeName","src":"14727:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14726:9:28"},"scope":5490,"src":"14642:230:28","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2739],"body":{"id":5488,"nodeType":"Block","src":"15067:104:28","statements":[{"expression":{"id":5478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5473,"name":"_positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"15077:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Position_$4456_storage_$","typeString":"mapping(uint256 => struct NonfungiblePositionManager.Position storage ref)"}},"id":5475,"indexExpression":{"id":5474,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5468,"src":"15088:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15077:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_Position_$4456_storage","typeString":"struct NonfungiblePositionManager.Position storage ref"}},"id":5476,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"operator","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"15077:28:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5477,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5466,"src":"15108:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15077:33:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5479,"nodeType":"ExpressionStatement","src":"15077:33:28"},{"eventCall":{"arguments":[{"arguments":[{"id":5482,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5468,"src":"15142:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5481,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1955,"src":"15134:7:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15134:16:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5484,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5466,"src":"15152:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5485,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5468,"src":"15156:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5480,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2775,"src":"15125:8:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15125:39:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5487,"nodeType":"EmitStatement","src":"15120:44:28"}]},"documentation":{"id":5464,"nodeType":"StructuredDocumentation","src":"14878:111:28","text":"@dev Overrides _approve to use the operator in the position, which is packed with the position permit nonce"},"id":5489,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","overrides":{"id":5471,"nodeType":"OverrideSpecifier","overrides":[{"id":5470,"name":"ERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":2751,"src":"15059:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$2751","typeString":"contract ERC721"}}],"src":"15050:16:28"},"parameters":{"id":5469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5466,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5489,"src":"15012:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5465,"name":"address","nodeType":"ElementaryTypeName","src":"15012:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5468,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5489,"src":"15024:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5467,"name":"uint256","nodeType":"ElementaryTypeName","src":"15024:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15011:29:28"},"returnParameters":{"id":5472,"nodeType":"ParameterList","parameters":[],"src":"15067:0:28"},"scope":5490,"src":"14994:177:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5491,"src":"1019:14154:28"}],"src":"45:15129:28"},"id":28},"contracts/base/BlockTimestamp.sol":{"ast":{"absolutePath":"contracts/base/BlockTimestamp.sol","exportedSymbols":{"BlockTimestamp":[5504]},"id":5505,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5492,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:29"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":5493,"nodeType":"StructuredDocumentation","src":"70:100:29","text":"@title Function for getting block timestamp\n @dev Base contract that is overridden for tests"},"fullyImplemented":true,"id":5504,"linearizedBaseContracts":[5504],"name":"BlockTimestamp","nodeType":"ContractDefinition","nodes":[{"body":{"id":5502,"nodeType":"Block","src":"386:39:29","statements":[{"expression":{"expression":{"id":5499,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"403:5:29","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"403:15:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5498,"id":5501,"nodeType":"Return","src":"396:22:29"}]},"documentation":{"id":5494,"nodeType":"StructuredDocumentation","src":"209:105:29","text":"@dev Method that exists purely to be overridden for tests\n @return The current block timestamp"},"id":5503,"implemented":true,"kind":"function","modifiers":[],"name":"_blockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":5495,"nodeType":"ParameterList","parameters":[],"src":"343:2:29"},"returnParameters":{"id":5498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5497,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5503,"src":"377:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5496,"name":"uint256","nodeType":"ElementaryTypeName","src":"377:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"376:9:29"},"scope":5504,"src":"319:106:29","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":5505,"src":"170:257:29"}],"src":"45:383:29"},"id":29},"contracts/base/ERC721Permit.sol":{"ast":{"absolutePath":"contracts/base/ERC721Permit.sol","exportedSymbols":{"Address":[3239],"BlockTimestamp":[5504],"ChainId":[7051],"Context":[3262],"ERC165":[1362],"ERC721":[2751],"ERC721Permit":[5714],"EnumerableMap":[3822],"EnumerableSet":[4314],"IERC1271":[6936],"IERC165":[1374],"IERC721":[2867],"IERC721Enumerable":[2898],"IERC721Metadata":[2925],"IERC721Permit":[6569],"IERC721Receiver":[2943],"SafeMath":[1729],"Strings":[4401]},"id":5715,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5506,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:30"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"@openzeppelin/contracts/token/ERC721/ERC721.sol","id":5507,"nodeType":"ImportDirective","scope":5715,"sourceUnit":2752,"src":"70:57:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":5508,"nodeType":"ImportDirective","scope":5715,"sourceUnit":3240,"src":"128:51:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/ChainId.sol","file":"../libraries/ChainId.sol","id":5509,"nodeType":"ImportDirective","scope":5715,"sourceUnit":7052,"src":"181:34:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/IERC1271.sol","file":"../interfaces/external/IERC1271.sol","id":5510,"nodeType":"ImportDirective","scope":5715,"sourceUnit":6937,"src":"216:45:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IERC721Permit.sol","file":"../interfaces/IERC721Permit.sol","id":5511,"nodeType":"ImportDirective","scope":5715,"sourceUnit":6570,"src":"262:41:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/BlockTimestamp.sol","file":"./BlockTimestamp.sol","id":5512,"nodeType":"ImportDirective","scope":5715,"sourceUnit":5505,"src":"304:30:30","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5514,"name":"BlockTimestamp","nodeType":"UserDefinedTypeName","referencedDeclaration":5504,"src":"482:14:30","typeDescriptions":{"typeIdentifier":"t_contract$_BlockTimestamp_$5504","typeString":"contract BlockTimestamp"}},"id":5515,"nodeType":"InheritanceSpecifier","src":"482:14:30"},{"baseName":{"id":5516,"name":"ERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":2751,"src":"498:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$2751","typeString":"contract ERC721"}},"id":5517,"nodeType":"InheritanceSpecifier","src":"498:6:30"},{"baseName":{"id":5518,"name":"IERC721Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":6569,"src":"506:13:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Permit_$6569","typeString":"contract IERC721Permit"}},"id":5519,"nodeType":"InheritanceSpecifier","src":"506:13:30"}],"contractDependencies":[1362,1374,2751,2867,2898,2925,3262,5504,6569],"contractKind":"contract","documentation":{"id":5513,"nodeType":"StructuredDocumentation","src":"336:112:30","text":"@title ERC721 with permit\n @notice Nonfungible tokens that support an approve via signature, i.e. permit"},"fullyImplemented":false,"id":5714,"linearizedBaseContracts":[5714,6569,2751,2898,2925,2867,1362,1374,3262,5504],"name":"ERC721Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5520,"nodeType":"StructuredDocumentation","src":"526:99:30","text":"@dev Gets the current nonce for a token ID and then increments it, returning the original value"},"id":5527,"implemented":false,"kind":"function","modifiers":[],"name":"_getAndIncrementNonce","nodeType":"FunctionDefinition","parameters":{"id":5523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5522,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5527,"src":"661:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5521,"name":"uint256","nodeType":"ElementaryTypeName","src":"661:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"660:17:30"},"returnParameters":{"id":5526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5525,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5527,"src":"704:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5524,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:9:30"},"scope":5714,"src":"630:83:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":5528,"nodeType":"StructuredDocumentation","src":"719:71:30","text":"@dev The hash of the name used in the permit signature verification"},"id":5530,"mutability":"immutable","name":"nameHash","nodeType":"VariableDeclaration","scope":5714,"src":"795:34:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"795:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"documentation":{"id":5531,"nodeType":"StructuredDocumentation","src":"836:81:30","text":"@dev The hash of the version string used in the permit signature verification"},"id":5533,"mutability":"immutable","name":"versionHash","nodeType":"VariableDeclaration","scope":5714,"src":"922:37:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5532,"name":"bytes32","nodeType":"ElementaryTypeName","src":"922:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":5565,"nodeType":"Block","src":"1123:101:30","statements":[{"expression":{"id":5554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5547,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5530,"src":"1133:8:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5551,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5536,"src":"1160:5:30","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1154:5:30","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5549,"name":"bytes","nodeType":"ElementaryTypeName","src":"1154:5:30","typeDescriptions":{}}},"id":5552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1154:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5548,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1144:9:30","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:23:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1133:34:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5555,"nodeType":"ExpressionStatement","src":"1133:34:30"},{"expression":{"id":5563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5556,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5533,"src":"1177:11:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5560,"name":"version_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5540,"src":"1207:8:30","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1201:5:30","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5558,"name":"bytes","nodeType":"ElementaryTypeName","src":"1201:5:30","typeDescriptions":{}}},"id":5561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1201:15:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5557,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1191:9:30","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1191:26:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1177:40:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5564,"nodeType":"ExpressionStatement","src":"1177:40:30"}]},"documentation":{"id":5534,"nodeType":"StructuredDocumentation","src":"966:49:30","text":"@notice Computes the nameHash and versionHash"},"id":5566,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":5543,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5536,"src":"1107:5:30","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5544,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"1114:7:30","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":5545,"modifierName":{"id":5542,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2751,"src":"1100:6:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2751_$","typeString":"type(contract ERC721)"}},"nodeType":"ModifierInvocation","src":"1100:22:30"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":5541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5536,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":5566,"src":"1032:19:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5535,"name":"string","nodeType":"ElementaryTypeName","src":"1032:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5538,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":5566,"src":"1053:21:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5537,"name":"string","nodeType":"ElementaryTypeName","src":"1053:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5540,"mutability":"mutable","name":"version_","nodeType":"VariableDeclaration","scope":5566,"src":"1076:22:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5539,"name":"string","nodeType":"ElementaryTypeName","src":"1076:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1031:68:30"},"returnParameters":{"id":5546,"nodeType":"ParameterList","parameters":[],"src":"1123:0:30"},"scope":5714,"src":"1020:204:30","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[6552],"body":{"id":5589,"nodeType":"Block","src":"1331:445:30","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066","id":5576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1538:66:30","typeDescriptions":{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},"value":"0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"},{"id":5577,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5530,"src":"1626:8:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5578,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5533,"src":"1656:11:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5579,"name":"ChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"1689:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChainId_$7051_$","typeString":"type(library ChainId)"}},"id":5580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"get","nodeType":"MemberAccess","referencedDeclaration":7050,"src":"1689:11:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":5581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1689:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":5584,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1732:4:30","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721Permit_$5714","typeString":"contract ERC721Permit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC721Permit_$5714","typeString":"contract ERC721Permit"}],"id":5583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1724:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5582,"name":"address","nodeType":"ElementaryTypeName","src":"1724:7:30","typeDescriptions":{}}},"id":5585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1724:13:30","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":5574,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1387:3:30","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1387:10:30","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1387:368:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5573,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1360:9:30","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1360:409:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5572,"id":5588,"nodeType":"Return","src":"1341:428:30"}]},"documentation":{"id":5567,"nodeType":"StructuredDocumentation","src":"1230:29:30","text":"@inheritdoc IERC721Permit"},"functionSelector":"3644e515","id":5590,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":{"id":5569,"nodeType":"OverrideSpecifier","overrides":[],"src":"1304:8:30"},"parameters":{"id":5568,"nodeType":"ParameterList","parameters":[],"src":"1289:2:30"},"returnParameters":{"id":5572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5571,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5590,"src":"1322:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5570,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1322:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1321:9:30"},"scope":5714,"src":"1264:512:30","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[6546],"constant":true,"documentation":{"id":5591,"nodeType":"StructuredDocumentation","src":"1782:145:30","text":"@inheritdoc IERC721Permit\n @dev Value is equal to keccak256(\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\");"},"functionSelector":"30adf81f","id":5595,"mutability":"constant","name":"PERMIT_TYPEHASH","nodeType":"VariableDeclaration","overrides":{"id":5593,"nodeType":"OverrideSpecifier","overrides":[],"src":"1956:8:30"},"scope":5714,"src":"1932:125:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5592,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1932:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834396563663333336535623863393563343066646166633935633161643133366538393134613866623535653964633862623031656161383361326466396164","id":5594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1991:66:30","typeDescriptions":{"typeIdentifier":"t_rational_33437492377378226760087498811281282659873828549087316441254475749622436198829_by_1","typeString":"int_const 3343...(69 digits omitted)...8829"},"value":"0x49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad"},"visibility":"public"},{"baseFunctions":[6568],"body":{"id":5712,"nodeType":"Block","src":"2277:895:30","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5613,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5503,"src":"2295:15:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2295:17:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5615,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5602,"src":"2316:8:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2295:29:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5065726d69742065787069726564","id":5617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2326:16:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_53b11e5c6d92c4ee8dcdc3fa4b1e917d15797fc920d394f51957eb1860bab31a","typeString":"literal_string \"Permit expired\""},"value":"Permit expired"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_53b11e5c6d92c4ee8dcdc3fa4b1e917d15797fc920d394f51957eb1860bab31a","typeString":"literal_string \"Permit expired\""}],"id":5612,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2287:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2287:56:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5619,"nodeType":"ExpressionStatement","src":"2287:56:30"},{"assignments":[5621],"declarations":[{"constant":false,"id":5621,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":5712,"src":"2354:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5620,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2354:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5642,"initialValue":{"arguments":[{"arguments":[{"hexValue":"1901","id":5625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2428:10:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":5626,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5590,"src":"2456:16:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":5627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2456:18:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":5631,"name":"PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5595,"src":"2513:15:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5632,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5598,"src":"2530:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5633,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5600,"src":"2539:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":5635,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5600,"src":"2570:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5634,"name":"_getAndIncrementNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5527,"src":"2548:21:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":5636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2548:30:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5637,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5602,"src":"2580:8:30","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":5629,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2502:3:30","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2502:10:30","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2502:87:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5628,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2492:9:30","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2492:98:30","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":5623,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2394:3:30","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2394:16:30","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2394:210:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5622,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2371:9:30","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2371:243:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2354:260:30"},{"assignments":[5644],"declarations":[{"constant":false,"id":5644,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5712,"src":"2624:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5643,"name":"address","nodeType":"ElementaryTypeName","src":"2624:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5648,"initialValue":{"arguments":[{"id":5646,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5600,"src":"2648:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5645,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1955,"src":"2640:7:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2640:16:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2624:32:30"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5650,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5598,"src":"2674:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5651,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5644,"src":"2685:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2674:16:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732315065726d69743a20617070726f76616c20746f2063757272656e74206f776e6572","id":5653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2692:41:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_3d02c5907340bfc85b183184e77cccd9fa6d10edb2b946e292395cc502b0f584","typeString":"literal_string \"ERC721Permit: approval to current owner\""},"value":"ERC721Permit: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3d02c5907340bfc85b183184e77cccd9fa6d10edb2b946e292395cc502b0f584","typeString":"literal_string \"ERC721Permit: approval to current owner\""}],"id":5649,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2666:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2666:68:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5655,"nodeType":"ExpressionStatement","src":"2666:68:30"},{"condition":{"arguments":[{"id":5658,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5644,"src":"2768:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5656,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3239,"src":"2749:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$3239_$","typeString":"type(library Address)"}},"id":5657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":2963,"src":"2749:18:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2749:25:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5705,"nodeType":"Block","src":"2913:216:30","statements":[{"assignments":[5680],"declarations":[{"constant":false,"id":5680,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","scope":5705,"src":"2927:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5679,"name":"address","nodeType":"ElementaryTypeName","src":"2927:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5687,"initialValue":{"arguments":[{"id":5682,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"2964:6:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5683,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5604,"src":"2972:1:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":5684,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"2975:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5685,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5608,"src":"2978:1:30","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":5681,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"2954:9:30","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":5686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2954:26:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2927:53:30"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5689,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5680,"src":"3002:16:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3030:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3022:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5690,"name":"address","nodeType":"ElementaryTypeName","src":"3022:7:30","typeDescriptions":{}}},"id":5693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3022:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3002:30:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964207369676e6174757265","id":5695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3034:19:30","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":5688,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2994:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2994:60:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5697,"nodeType":"ExpressionStatement","src":"2994:60:30"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5699,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5680,"src":"3076:16:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5700,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5644,"src":"3096:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3076:25:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a6564","id":5702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3103:14:30","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":5698,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3068:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3068:50:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5704,"nodeType":"ExpressionStatement","src":"3068:50:30"}]},"id":5706,"nodeType":"IfStatement","src":"2745:384:30","trueBody":{"id":5678,"nodeType":"Block","src":"2776:131:30","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5665,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"2831:6:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":5668,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"2856:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5669,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5608,"src":"2859:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5670,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5604,"src":"2862:1:30","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":5666,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2839:3:30","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2839:16:30","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2839:25:30","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":5662,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5644,"src":"2807:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5661,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6936,"src":"2798:8:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$6936_$","typeString":"type(contract IERC1271)"}},"id":5663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2798:15:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$6936","typeString":"contract IERC1271"}},"id":5664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":6935,"src":"2798:32:30","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":5672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2798:67:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783136323662613765","id":5673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2869:10:30","typeDescriptions":{"typeIdentifier":"t_rational_371636862_by_1","typeString":"int_const 371636862"},"value":"0x1626ba7e"},"src":"2798:81:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a6564","id":5675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2881:14:30","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":5660,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2790:7:30","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":"2790:106:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5677,"nodeType":"ExpressionStatement","src":"2790:106:30"}]}},{"expression":{"arguments":[{"id":5708,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5598,"src":"3148:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5709,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5600,"src":"3157:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5707,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2739,"src":"3139:8:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3139:26:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5711,"nodeType":"ExpressionStatement","src":"3139:26:30"}]},"documentation":{"id":5596,"nodeType":"StructuredDocumentation","src":"2064:29:30","text":"@inheritdoc IERC721Permit"},"functionSelector":"7ac2ff7b","id":5713,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":5610,"nodeType":"OverrideSpecifier","overrides":[],"src":"2268:8:30"},"parameters":{"id":5609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5598,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":5713,"src":"2123:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5597,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5600,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5713,"src":"2148:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5599,"name":"uint256","nodeType":"ElementaryTypeName","src":"2148:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5602,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":5713,"src":"2173:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5601,"name":"uint256","nodeType":"ElementaryTypeName","src":"2173:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5604,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":5713,"src":"2199:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5603,"name":"uint8","nodeType":"ElementaryTypeName","src":"2199:5:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5606,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":5713,"src":"2216:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5605,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2216:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5608,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":5713,"src":"2235:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5607,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2235:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2113:137:30"},"returnParameters":{"id":5611,"nodeType":"ParameterList","parameters":[],"src":"2277:0:30"},"scope":5714,"src":"2098:1074:30","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":5715,"src":"448:2726:30"}],"src":"45:3130:30"},"id":30},"contracts/base/LiquidityManagement.sol":{"ast":{"absolutePath":"contracts/base/LiquidityManagement.sol","exportedSymbols":{"CallbackValidation":[7039],"FixedPoint96":[561],"FullMath":[734],"IAstraCLFactory":[82],"IAstraCLMintCallback":[124],"IAstraCLPool":[110],"IAstraCLPoolActions":[220],"IAstraCLPoolDerivedState":[251],"IAstraCLPoolEvents":[370],"IAstraCLPoolImmutables":[410],"IAstraCLPoolOwnerActions":[436],"IAstraCLPoolState":[544],"IERC20":[1807],"IPeripheryImmutableState":[6809],"IPeripheryPayments":[6835],"ISAMB":[6977],"LiquidityAmounts":[7391],"LiquidityManagement":[5929],"PeripheryImmutableState":[6045],"PeripheryPayments":[6255],"PoolAddress":[7483],"TickMath":[1269],"TransferHelper":[7679]},"id":5930,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5716,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:31"},{"id":5717,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"69:19:31"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol","id":5718,"nodeType":"ImportDirective","scope":5930,"sourceUnit":83,"src":"143:72:31","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol","file":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol","id":5719,"nodeType":"ImportDirective","scope":5930,"sourceUnit":125,"src":"269:86:31","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","id":5720,"nodeType":"ImportDirective","scope":5930,"sourceUnit":1270,"src":"409:64:31","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":5721,"nodeType":"ImportDirective","scope":5930,"sourceUnit":7484,"src":"475:38:31","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/CallbackValidation.sol","file":"../libraries/CallbackValidation.sol","id":5722,"nodeType":"ImportDirective","scope":5930,"sourceUnit":7040,"src":"514:45:31","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/LiquidityAmounts.sol","file":"../libraries/LiquidityAmounts.sol","id":5723,"nodeType":"ImportDirective","scope":5930,"sourceUnit":7392,"src":"560:43:31","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryPayments.sol","file":"./PeripheryPayments.sol","id":5724,"nodeType":"ImportDirective","scope":5930,"sourceUnit":6256,"src":"605:33:31","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":5725,"nodeType":"ImportDirective","scope":5930,"sourceUnit":6046,"src":"639:39:31","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5727,"name":"IAstraCLMintCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":124,"src":"839:20:31","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLMintCallback_$124","typeString":"contract IAstraCLMintCallback"}},"id":5728,"nodeType":"InheritanceSpecifier","src":"839:20:31"},{"baseName":{"id":5729,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":6045,"src":"861:23:31","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$6045","typeString":"contract PeripheryImmutableState"}},"id":5730,"nodeType":"InheritanceSpecifier","src":"861:23:31"},{"baseName":{"id":5731,"name":"PeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":6255,"src":"886:17:31","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}},"id":5732,"nodeType":"InheritanceSpecifier","src":"886:17:31"}],"contractDependencies":[124,6045,6255,6809,6835],"contractKind":"contract","documentation":{"id":5726,"nodeType":"StructuredDocumentation","src":"680:118:31","text":"@title Liquidity management functions\n @notice Internal functions for safely managing liquidity in AstraDEX CL"},"fullyImplemented":false,"id":5929,"linearizedBaseContracts":[5929,6255,6045,6809,6835,124],"name":"LiquidityManagement","nodeType":"ContractDefinition","nodes":[{"canonicalName":"LiquidityManagement.MintCallbackData","id":5737,"members":[{"constant":false,"id":5734,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":5737,"src":"944:27:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":5733,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"944:19:31","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"},{"constant":false,"id":5736,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":5737,"src":"981:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5735,"name":"address","nodeType":"ElementaryTypeName","src":"981:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"MintCallbackData","nodeType":"StructDefinition","scope":5929,"src":"910:91:31","visibility":"public"},{"baseFunctions":[123],"body":{"id":5795,"nodeType":"Block","src":"1158:353:31","statements":[{"assignments":[5749],"declarations":[{"constant":false,"id":5749,"mutability":"mutable","name":"decoded","nodeType":"VariableDeclaration","scope":5795,"src":"1168:31:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$5737_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData"},"typeName":{"id":5748,"name":"MintCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":5737,"src":"1168:16:31","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$5737_storage_ptr","typeString":"struct LiquidityManagement.MintCallbackData"}},"visibility":"internal"}],"id":5756,"initialValue":{"arguments":[{"id":5752,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"1213:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":5753,"name":"MintCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5737,"src":"1220:16:31","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$5737_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}}],"id":5754,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1219:18:31","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$5737_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_$5737_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}],"expression":{"id":5750,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1202:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1202:10:31","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":5755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1202:36:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$5737_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"nodeType":"VariableDeclarationStatement","src":"1168:70:31"},{"expression":{"arguments":[{"id":5760,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"1282:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5761,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5749,"src":"1291:7:31","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$5737_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":5762,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":5734,"src":"1291:15:31","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":5757,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7039,"src":"1248:18:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$7039_$","typeString":"type(library CallbackValidation)"}},"id":5759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":7038,"src":"1248:33:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_struct$_PoolKey_$7404_memory_ptr_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,struct PoolAddress.PoolKey memory) view returns (contract IAstraCLPool)"}},"id":5763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:59:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":5764,"nodeType":"ExpressionStatement","src":"1248:59:31"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5765,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"1322:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1336:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1322:15:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5779,"nodeType":"IfStatement","src":"1318:88:31","trueBody":{"expression":{"arguments":[{"expression":{"expression":{"id":5769,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5749,"src":"1343:7:31","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$5737_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":5770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":5734,"src":"1343:15:31","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":5771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":7399,"src":"1343:22:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5772,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5749,"src":"1367:7:31","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$5737_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":5773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":5736,"src":"1367:13:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5774,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1382:3:31","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1382:10:31","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":5776,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"1394:11:31","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":5768,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6254,"src":"1339:3:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":5777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1339:67:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5778,"nodeType":"ExpressionStatement","src":"1339:67:31"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5780,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5742,"src":"1420:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1434:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1420:15:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5794,"nodeType":"IfStatement","src":"1416:88:31","trueBody":{"expression":{"arguments":[{"expression":{"expression":{"id":5784,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5749,"src":"1441:7:31","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$5737_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":5785,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":5734,"src":"1441:15:31","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":5786,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":7401,"src":"1441:22:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5787,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5749,"src":"1465:7:31","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$5737_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":5788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":5736,"src":"1465:13:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5789,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1480:3:31","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1480:10:31","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":5791,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5742,"src":"1492:11:31","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":5783,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6254,"src":"1437:3:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":5792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1437:67:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5793,"nodeType":"ExpressionStatement","src":"1437:67:31"}}]},"documentation":{"id":5738,"nodeType":"StructuredDocumentation","src":"1007:36:31","text":"@inheritdoc IAstraCLMintCallback"},"functionSelector":"4cb42d2d","id":5796,"implemented":true,"kind":"function","modifiers":[],"name":"astraCLMintCallback","nodeType":"FunctionDefinition","overrides":{"id":5746,"nodeType":"OverrideSpecifier","overrides":[],"src":"1149:8:31"},"parameters":{"id":5745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5740,"mutability":"mutable","name":"amount0Owed","nodeType":"VariableDeclaration","scope":5796,"src":"1077:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5739,"name":"uint256","nodeType":"ElementaryTypeName","src":"1077:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5742,"mutability":"mutable","name":"amount1Owed","nodeType":"VariableDeclaration","scope":5796,"src":"1098:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5741,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5744,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5796,"src":"1119:19:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5743,"name":"bytes","nodeType":"ElementaryTypeName","src":"1119:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1076:63:31"},"returnParameters":{"id":5747,"nodeType":"ParameterList","parameters":[],"src":"1158:0:31"},"scope":5929,"src":"1048:463:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"LiquidityManagement.AddLiquidityParams","id":5817,"members":[{"constant":false,"id":5798,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":5817,"src":"1553:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5797,"name":"address","nodeType":"ElementaryTypeName","src":"1553:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5800,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":5817,"src":"1577:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5799,"name":"address","nodeType":"ElementaryTypeName","src":"1577:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5802,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":5817,"src":"1601:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":5801,"name":"uint24","nodeType":"ElementaryTypeName","src":"1601:6:31","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":5804,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":5817,"src":"1621:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5803,"name":"address","nodeType":"ElementaryTypeName","src":"1621:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5806,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":5817,"src":"1648:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5805,"name":"int24","nodeType":"ElementaryTypeName","src":"1648:5:31","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5808,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":5817,"src":"1673:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5807,"name":"int24","nodeType":"ElementaryTypeName","src":"1673:5:31","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5810,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":5817,"src":"1698:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5809,"name":"uint256","nodeType":"ElementaryTypeName","src":"1698:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5812,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":5817,"src":"1730:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5811,"name":"uint256","nodeType":"ElementaryTypeName","src":"1730:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5814,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":5817,"src":"1762:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5813,"name":"uint256","nodeType":"ElementaryTypeName","src":"1762:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5816,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":5817,"src":"1790:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5815,"name":"uint256","nodeType":"ElementaryTypeName","src":"1790:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AddLiquidityParams","nodeType":"StructDefinition","scope":5929,"src":"1517:298:31","visibility":"public"},{"body":{"id":5927,"nodeType":"Block","src":"2034:1149:31","statements":[{"assignments":[5834],"declarations":[{"constant":false,"id":5834,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":5927,"src":"2044:34:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":5833,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"2044:19:31","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":5844,"initialValue":{"arguments":[{"expression":{"id":5837,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"2123:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":5798,"src":"2123:13:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5839,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"2158:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":5800,"src":"2158:13:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5841,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"2190:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5842,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":5802,"src":"2190:10:31","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":5835,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"2081:11:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$7483_$","typeString":"type(library PoolAddress)"}},"id":5836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":7404,"src":"2081:19:31","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$7404_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":5843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"2081:130:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"nodeType":"VariableDeclarationStatement","src":"2044:167:31"},{"expression":{"id":5853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5845,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5829,"src":"2222:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5849,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"2269:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5850,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5834,"src":"2278:7:31","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":5847,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"2242:11:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$7483_$","typeString":"type(library PoolAddress)"}},"id":5848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":7482,"src":"2242:26:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$7404_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":5851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2242:44:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5846,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"2229:12:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":5852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2229:58:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"src":"2222:65:31","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":5854,"nodeType":"ExpressionStatement","src":"2222:65:31"},{"id":5890,"nodeType":"Block","src":"2338:490:31","statements":[{"assignments":[5856,null,null,null,null,null,null],"declarations":[{"constant":false,"id":5856,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":5890,"src":"2353:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5855,"name":"uint160","nodeType":"ElementaryTypeName","src":"2353:7:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},null,null,null,null,null,null],"id":5860,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5857,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5829,"src":"2389:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":5858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":457,"src":"2389:10:31","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":5859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2389:12:31","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":"2352:49:31"},{"assignments":[5862],"declarations":[{"constant":false,"id":5862,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":5890,"src":"2415:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5861,"name":"uint160","nodeType":"ElementaryTypeName","src":"2415:7:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":5868,"initialValue":{"arguments":[{"expression":{"id":5865,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"2467:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":5806,"src":"2467:16:31","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":5863,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"2439:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$1269_$","typeString":"type(library TickMath)"}},"id":5864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":1129,"src":"2439:27:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":5867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2439:45:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2415:69:31"},{"assignments":[5870],"declarations":[{"constant":false,"id":5870,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":5890,"src":"2498:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5869,"name":"uint160","nodeType":"ElementaryTypeName","src":"2498:7:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":5876,"initialValue":{"arguments":[{"expression":{"id":5873,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"2550:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5874,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":5808,"src":"2550:16:31","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":5871,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"2522:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$1269_$","typeString":"type(library TickMath)"}},"id":5872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":1129,"src":"2522:27:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":5875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2522:45:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2498:69:31"},{"expression":{"id":5888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5877,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5823,"src":"2582:9:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5880,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5856,"src":"2651:12:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5881,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5862,"src":"2681:13:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5882,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5870,"src":"2712:13:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":5883,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"2743:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5884,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0Desired","nodeType":"MemberAccess","referencedDeclaration":5810,"src":"2743:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5885,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"2782:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1Desired","nodeType":"MemberAccess","referencedDeclaration":5812,"src":"2782:21:31","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":5878,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7391,"src":"2594:16:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$7391_$","typeString":"type(library LiquidityAmounts)"}},"id":5879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmounts","nodeType":"MemberAccess","referencedDeclaration":7241,"src":"2594:39:31","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":5887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2594:223:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2582:235:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5889,"nodeType":"ExpressionStatement","src":"2582:235:31"}]},{"expression":{"id":5912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":5891,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"2839:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5892,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5827,"src":"2848:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5893,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2838:18:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":5896,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"2882:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":5804,"src":"2882:16:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5898,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"2912:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":5806,"src":"2912:16:31","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":5900,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"2942:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":5808,"src":"2942:16:31","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":5902,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5823,"src":"2972:9:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"arguments":[{"id":5906,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5834,"src":"3033:7:31","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},{"expression":{"id":5907,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3049:3:31","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3049:10:31","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":5905,"name":"MintCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5737,"src":"3006:16:31","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$5737_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}},"id":5909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["poolKey","payer"],"nodeType":"FunctionCall","src":"3006:55:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$5737_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MintCallbackData_$5737_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}],"expression":{"id":5903,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2995:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2995:10:31","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2995:67:31","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":5894,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5829,"src":"2859:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":5895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":151,"src":"2859:9:31","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":5911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2859:213:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"2838:234:31","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5913,"nodeType":"ExpressionStatement","src":"2838:234:31"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5915,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"3091:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":5916,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"3102:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":5814,"src":"3102:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3091:28:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5919,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5827,"src":"3123:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":5920,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"3134:6:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":5921,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":5816,"src":"3134:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3123:28:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3091:60:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"507269636520736c69707061676520636865636b","id":5924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3153:22:31","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":5914,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3083:7:31","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3083:93:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5926,"nodeType":"ExpressionStatement","src":"3083:93:31"}]},"documentation":{"id":5818,"nodeType":"StructuredDocumentation","src":"1821:48:31","text":"@notice Add liquidity to an initialized pool"},"id":5928,"implemented":true,"kind":"function","modifiers":[],"name":"addLiquidity","nodeType":"FunctionDefinition","parameters":{"id":5821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5820,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":5928,"src":"1905:32:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams"},"typeName":{"id":5819,"name":"AddLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":5817,"src":"1905:18:31","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$5817_storage_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams"}},"visibility":"internal"}],"src":"1895:48:31"},"returnParameters":{"id":5830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5823,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5928,"src":"1962:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5822,"name":"uint128","nodeType":"ElementaryTypeName","src":"1962:7:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5825,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":5928,"src":"1981:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5824,"name":"uint256","nodeType":"ElementaryTypeName","src":"1981:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5827,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":5928,"src":"1998:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5826,"name":"uint256","nodeType":"ElementaryTypeName","src":"1998:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5829,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":5928,"src":"2015:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":5828,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"2015:12:31","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"src":"1961:72:31"},"scope":5929,"src":"1874:1309:31","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5930,"src":"798:2387:31"}],"src":"45:3141:31"},"id":31},"contracts/base/Multicall.sol":{"ast":{"absolutePath":"contracts/base/Multicall.sol","exportedSymbols":{"IMulticall":[6584],"Multicall":[6014]},"id":6015,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5931,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:32"},{"id":5932,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"69:19:32"},{"absolutePath":"contracts/interfaces/IMulticall.sol","file":"../interfaces/IMulticall.sol","id":5933,"nodeType":"ImportDirective","scope":6015,"sourceUnit":6585,"src":"90:38:32","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5935,"name":"IMulticall","nodeType":"UserDefinedTypeName","referencedDeclaration":6584,"src":"260:10:32","typeDescriptions":{"typeIdentifier":"t_contract$_IMulticall_$6584","typeString":"contract IMulticall"}},"id":5936,"nodeType":"InheritanceSpecifier","src":"260:10:32"}],"contractDependencies":[6584],"contractKind":"contract","documentation":{"id":5934,"nodeType":"StructuredDocumentation","src":"130:99:32","text":"@title Multicall\n @notice Enables calling multiple methods in a single call to the contract"},"fullyImplemented":true,"id":6014,"linearizedBaseContracts":[6014,6584],"name":"Multicall","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[6583],"body":{"id":6012,"nodeType":"Block","src":"407:554:32","statements":[{"expression":{"id":5954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5947,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5945,"src":"417:7:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":5951,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5940,"src":"439:4:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":5952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"439:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"427:11:32","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":5948,"name":"bytes","nodeType":"ElementaryTypeName","src":"431:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":5949,"nodeType":"ArrayTypeName","src":"431:7:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":5953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"427:24:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"417:34:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":5955,"nodeType":"ExpressionStatement","src":"417:34:32"},{"body":{"id":6010,"nodeType":"Block","src":"503:452:32","statements":[{"assignments":[5968,5970],"declarations":[{"constant":false,"id":5968,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6010,"src":"518:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5967,"name":"bool","nodeType":"ElementaryTypeName","src":"518:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5970,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":6010,"src":"532:19:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5969,"name":"bytes","nodeType":"ElementaryTypeName","src":"532:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5980,"initialValue":{"arguments":[{"baseExpression":{"id":5976,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5940,"src":"582:4:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":5978,"indexExpression":{"id":5977,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"587:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"582:7:32","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":5973,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"563:4:32","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$6014","typeString":"contract Multicall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Multicall_$6014","typeString":"contract Multicall"}],"id":5972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"555:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5971,"name":"address","nodeType":"ElementaryTypeName","src":"555:7:32","typeDescriptions":{}}},"id":5974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"555:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"555:26:32","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":5979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"555:35:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"517:73:32"},{"condition":{"id":5982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"609:8:32","subExpression":{"id":5981,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5968,"src":"610:7:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6003,"nodeType":"IfStatement","src":"605:306:32","trueBody":{"id":6002,"nodeType":"Block","src":"619:292:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5983,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"721:6:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"721:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3638","id":5985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"737:2:32","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"68"},"src":"721:18:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5990,"nodeType":"IfStatement","src":"717:32:32","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5987,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"741:6:32","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":5988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"741:8:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5989,"nodeType":"ExpressionStatement","src":"741:8:32"}},{"AST":{"nodeType":"YulBlock","src":"776:67:32","statements":[{"nodeType":"YulAssignment","src":"798:27:32","value":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"812:6:32"},{"kind":"number","nodeType":"YulLiteral","src":"820:4:32","type":"","value":"0x04"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"808:3:32"},"nodeType":"YulFunctionCall","src":"808:17:32"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"798:6:32"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5970,"isOffset":false,"isSlot":false,"src":"798:6:32","valueSize":1},{"declaration":5970,"isOffset":false,"isSlot":false,"src":"812:6:32","valueSize":1}],"id":5991,"nodeType":"InlineAssembly","src":"767:76:32"},{"expression":{"arguments":[{"arguments":[{"id":5995,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"878:6:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":5997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"887:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":5996,"name":"string","nodeType":"ElementaryTypeName","src":"887:6:32","typeDescriptions":{}}}],"id":5998,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"886:8:32","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":5993,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"867:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"867:10:32","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":5999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"867:28:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5992,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"860:6:32","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"860:36:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6001,"nodeType":"ExpressionStatement","src":"860:36:32"}]}},{"expression":{"id":6008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6004,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5945,"src":"925:7:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":6006,"indexExpression":{"id":6005,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"933:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"925:10:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"938:6:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"925:19:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6009,"nodeType":"ExpressionStatement","src":"925:19:32"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5960,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"481:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5961,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5940,"src":"485:4:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":5962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"485:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"481:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6011,"initializationExpression":{"assignments":[5957],"declarations":[{"constant":false,"id":5957,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":6011,"src":"466:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5956,"name":"uint256","nodeType":"ElementaryTypeName","src":"466:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5959,"initialValue":{"hexValue":"30","id":5958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"478:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"466:13:32"},"loopExpression":{"expression":{"id":5965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"498:3:32","subExpression":{"id":5964,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"498:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5966,"nodeType":"ExpressionStatement","src":"498:3:32"},"nodeType":"ForStatement","src":"461:494:32"}]},"documentation":{"id":5937,"nodeType":"StructuredDocumentation","src":"277:26:32","text":"@inheritdoc IMulticall"},"functionSelector":"ac9650d8","id":6013,"implemented":true,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","overrides":{"id":5942,"nodeType":"OverrideSpecifier","overrides":[],"src":"365:8:32"},"parameters":{"id":5941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5940,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6013,"src":"327:21:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":5938,"name":"bytes","nodeType":"ElementaryTypeName","src":"327:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":5939,"nodeType":"ArrayTypeName","src":"327:7:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"326:23:32"},"returnParameters":{"id":5946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5945,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":6013,"src":"383:22:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":5943,"name":"bytes","nodeType":"ElementaryTypeName","src":"383:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":5944,"nodeType":"ArrayTypeName","src":"383:7:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"382:24:32"},"scope":6014,"src":"308:653:32","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":6015,"src":"229:734:32"}],"src":"45:919:32"},"id":32},"contracts/base/PeripheryImmutableState.sol":{"ast":{"absolutePath":"contracts/base/PeripheryImmutableState.sol","exportedSymbols":{"IPeripheryImmutableState":[6809],"PeripheryImmutableState":[6045]},"id":6046,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6016,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:33"},{"absolutePath":"contracts/interfaces/IPeripheryImmutableState.sol","file":"../interfaces/IPeripheryImmutableState.sol","id":6017,"nodeType":"ImportDirective","scope":6046,"sourceUnit":6810,"src":"70:52:33","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6019,"name":"IPeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":6809,"src":"252:24:33","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryImmutableState_$6809","typeString":"contract IPeripheryImmutableState"}},"id":6020,"nodeType":"InheritanceSpecifier","src":"252:24:33"}],"contractDependencies":[6809],"contractKind":"contract","documentation":{"id":6018,"nodeType":"StructuredDocumentation","src":"124:83:33","text":"@title Immutable state\n @notice Immutable state used by periphery contracts"},"fullyImplemented":true,"id":6045,"linearizedBaseContracts":[6045,6809],"name":"PeripheryImmutableState","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[6802],"constant":false,"documentation":{"id":6021,"nodeType":"StructuredDocumentation","src":"283:40:33","text":"@inheritdoc IPeripheryImmutableState"},"functionSelector":"c45a0155","id":6024,"mutability":"immutable","name":"factory","nodeType":"VariableDeclaration","overrides":{"id":6023,"nodeType":"OverrideSpecifier","overrides":[],"src":"353:8:33"},"scope":6045,"src":"328:41:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6022,"name":"address","nodeType":"ElementaryTypeName","src":"328:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[6808],"constant":false,"documentation":{"id":6025,"nodeType":"StructuredDocumentation","src":"375:40:33","text":"@inheritdoc IPeripheryImmutableState"},"functionSelector":"90793ea8","id":6028,"mutability":"immutable","name":"SAMB","nodeType":"VariableDeclaration","overrides":{"id":6027,"nodeType":"OverrideSpecifier","overrides":[],"src":"445:8:33"},"scope":6045,"src":"420:38:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6026,"name":"address","nodeType":"ElementaryTypeName","src":"420:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":6043,"nodeType":"Block","src":"510:57:33","statements":[{"expression":{"id":6037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6035,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"520:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6036,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6030,"src":"530:8:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"520:18:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6038,"nodeType":"ExpressionStatement","src":"520:18:33"},{"expression":{"id":6041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6039,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6028,"src":"548:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6040,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6032,"src":"555:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"548:12:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6042,"nodeType":"ExpressionStatement","src":"548:12:33"}]},"id":6044,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6030,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":6044,"src":"477:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6029,"name":"address","nodeType":"ElementaryTypeName","src":"477:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6032,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":6044,"src":"495:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6031,"name":"address","nodeType":"ElementaryTypeName","src":"495:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"476:33:33"},"returnParameters":{"id":6034,"nodeType":"ParameterList","parameters":[],"src":"510:0:33"},"scope":6045,"src":"465:102:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":6046,"src":"207:362:33"}],"src":"45:525:33"},"id":33},"contracts/base/PeripheryPayments.sol":{"ast":{"absolutePath":"contracts/base/PeripheryPayments.sol","exportedSymbols":{"IERC20":[1807],"IPeripheryImmutableState":[6809],"IPeripheryPayments":[6835],"ISAMB":[6977],"PeripheryImmutableState":[6045],"PeripheryPayments":[6255],"TransferHelper":[7679]},"id":6256,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6047,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:34"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":6048,"nodeType":"ImportDirective","scope":6256,"sourceUnit":1808,"src":"71:56:34","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPeripheryPayments.sol","file":"../interfaces/IPeripheryPayments.sol","id":6049,"nodeType":"ImportDirective","scope":6256,"sourceUnit":6836,"src":"129:46:34","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/ISAMB.sol","file":"../interfaces/external/ISAMB.sol","id":6050,"nodeType":"ImportDirective","scope":6256,"sourceUnit":6978,"src":"176:42:34","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/TransferHelper.sol","file":"../libraries/TransferHelper.sol","id":6051,"nodeType":"ImportDirective","scope":6256,"sourceUnit":7680,"src":"220:41:34","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":6052,"nodeType":"ImportDirective","scope":6256,"sourceUnit":6046,"src":"263:39:34","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6053,"name":"IPeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":6835,"src":"343:18:34","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPayments_$6835","typeString":"contract IPeripheryPayments"}},"id":6054,"nodeType":"InheritanceSpecifier","src":"343:18:34"},{"baseName":{"id":6055,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":6045,"src":"363:23:34","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$6045","typeString":"contract PeripheryImmutableState"}},"id":6056,"nodeType":"InheritanceSpecifier","src":"363:23:34"}],"contractDependencies":[6045,6809,6835],"contractKind":"contract","fullyImplemented":false,"id":6255,"linearizedBaseContracts":[6255,6045,6809,6835],"name":"PeripheryPayments","nodeType":"ContractDefinition","nodes":[{"body":{"id":6067,"nodeType":"Block","src":"420:56:34","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6060,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"438:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"438:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6062,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6028,"src":"452:4:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"438:18:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f742053414d42","id":6064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"458:10:34","typeDescriptions":{"typeIdentifier":"t_stringliteral_9742e45cbdcfb33441b71c5e16cad2d39cf9a5067bcabd680e872cd9d5b8a313","typeString":"literal_string \"Not SAMB\""},"value":"Not SAMB"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9742e45cbdcfb33441b71c5e16cad2d39cf9a5067bcabd680e872cd9d5b8a313","typeString":"literal_string \"Not SAMB\""}],"id":6059,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"430:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"430:39:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6066,"nodeType":"ExpressionStatement","src":"430:39:34"}]},"id":6068,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6057,"nodeType":"ParameterList","parameters":[],"src":"400:2:34"},"returnParameters":{"id":6058,"nodeType":"ParameterList","parameters":[],"src":"420:0:34"},"scope":6255,"src":"393:83:34","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[6820],"body":{"id":6115,"nodeType":"Block","src":"607:300:34","statements":[{"assignments":[6078],"declarations":[{"constant":false,"id":6078,"mutability":"mutable","name":"balanceSAMB","nodeType":"VariableDeclaration","scope":6115,"src":"617:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6077,"name":"uint256","nodeType":"ElementaryTypeName","src":"617:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6088,"initialValue":{"arguments":[{"arguments":[{"id":6085,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"669:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}],"id":6084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"661:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6083,"name":"address","nodeType":"ElementaryTypeName","src":"661:7:34","typeDescriptions":{}}},"id":6086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"661:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":6080,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6028,"src":"645:4:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6079,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"639:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$6977_$","typeString":"type(contract ISAMB)"}},"id":6081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"639:11:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$6977","typeString":"contract ISAMB"}},"id":6082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1746,"src":"639:21:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":6087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"639:36:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"617:58:34"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6090,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6078,"src":"693:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6091,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6071,"src":"708:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"693:28:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742053414d42","id":6093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"723:19:34","typeDescriptions":{"typeIdentifier":"t_stringliteral_28ab92c5d6f07031eb580ee0e2845547a46c2cf150bdb8c12bcaa66335c7464f","typeString":"literal_string \"Insufficient SAMB\""},"value":"Insufficient SAMB"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28ab92c5d6f07031eb580ee0e2845547a46c2cf150bdb8c12bcaa66335c7464f","typeString":"literal_string \"Insufficient SAMB\""}],"id":6089,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"685:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"685:58:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6095,"nodeType":"ExpressionStatement","src":"685:58:34"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6096,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6078,"src":"758:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"772:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"758:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6114,"nodeType":"IfStatement","src":"754:147:34","trueBody":{"id":6113,"nodeType":"Block","src":"775:126:34","statements":[{"expression":{"arguments":[{"id":6103,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6078,"src":"810:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6100,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6028,"src":"795:4:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6099,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"789:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$6977_$","typeString":"type(contract ISAMB)"}},"id":6101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"789:11:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$6977","typeString":"contract ISAMB"}},"id":6102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":6976,"src":"789:20:34","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":6104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"789:33:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6105,"nodeType":"ExpressionStatement","src":"789:33:34"},{"expression":{"arguments":[{"id":6109,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"867:9:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6110,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6078,"src":"878:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6106,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7679,"src":"836:14:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7679_$","typeString":"type(library TransferHelper)"}},"id":6108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":7678,"src":"836:30:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"836:54:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6112,"nodeType":"ExpressionStatement","src":"836:54:34"}]}}]},"documentation":{"id":6069,"nodeType":"StructuredDocumentation","src":"482:34:34","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"a98ce37f","id":6116,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapSAMB","nodeType":"FunctionDefinition","overrides":{"id":6075,"nodeType":"OverrideSpecifier","overrides":[],"src":"598:8:34"},"parameters":{"id":6074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6071,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":6116,"src":"541:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6070,"name":"uint256","nodeType":"ElementaryTypeName","src":"541:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6073,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6116,"src":"564:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6072,"name":"address","nodeType":"ElementaryTypeName","src":"564:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"540:42:34"},"returnParameters":{"id":6076,"nodeType":"ParameterList","parameters":[],"src":"607:0:34"},"scope":6255,"src":"521:386:34","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[6834],"body":{"id":6159,"nodeType":"Block","src":"1053:264:34","statements":[{"assignments":[6128],"declarations":[{"constant":false,"id":6128,"mutability":"mutable","name":"balanceToken","nodeType":"VariableDeclaration","scope":6159,"src":"1063:20:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6127,"name":"uint256","nodeType":"ElementaryTypeName","src":"1063:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6138,"initialValue":{"arguments":[{"arguments":[{"id":6135,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1118:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}],"id":6134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1110:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6133,"name":"address","nodeType":"ElementaryTypeName","src":"1110:7:34","typeDescriptions":{}}},"id":6136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1110:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":6130,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1093:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6129,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"1086:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1807_$","typeString":"type(contract IERC20)"}},"id":6131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1086:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1807","typeString":"contract IERC20"}},"id":6132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1746,"src":"1086:23:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":6137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1086:38:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1063:61:34"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6140,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6128,"src":"1142:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6141,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6121,"src":"1158:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1142:29:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e7420746f6b656e","id":6143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1173:20:34","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":6139,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1134:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1134:60:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6145,"nodeType":"ExpressionStatement","src":"1134:60:34"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6146,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6128,"src":"1209:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1224:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1209:16:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6158,"nodeType":"IfStatement","src":"1205:106:34","trueBody":{"id":6157,"nodeType":"Block","src":"1227:84:34","statements":[{"expression":{"arguments":[{"id":6152,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1269:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6153,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6123,"src":"1276:9:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6154,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6128,"src":"1287:12:34","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":6149,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7679,"src":"1241:14:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7679_$","typeString":"type(library TransferHelper)"}},"id":6151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7606,"src":"1241:27:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1241:59:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6156,"nodeType":"ExpressionStatement","src":"1241:59:34"}]}}]},"documentation":{"id":6117,"nodeType":"StructuredDocumentation","src":"913:34:34","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"df2ab5bb","id":6160,"implemented":true,"kind":"function","modifiers":[],"name":"sweepToken","nodeType":"FunctionDefinition","overrides":{"id":6125,"nodeType":"OverrideSpecifier","overrides":[],"src":"1044:8:34"},"parameters":{"id":6124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6119,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6160,"src":"972:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6118,"name":"address","nodeType":"ElementaryTypeName","src":"972:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6121,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":6160,"src":"987:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6120,"name":"uint256","nodeType":"ElementaryTypeName","src":"987:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6123,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6160,"src":"1010:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6122,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"971:57:34"},"returnParameters":{"id":6126,"nodeType":"ParameterList","parameters":[],"src":"1053:0:34"},"scope":6255,"src":"952:365:34","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[6824],"body":{"id":6185,"nodeType":"Block","src":"1409:113:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6167,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1431:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}],"id":6166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1423:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6165,"name":"address","nodeType":"ElementaryTypeName","src":"1423:7:34","typeDescriptions":{}}},"id":6168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1423:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"1423:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1447:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1423:25:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6184,"nodeType":"IfStatement","src":"1419:96:34","trueBody":{"expression":{"arguments":[{"expression":{"id":6175,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1481:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1481:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"arguments":[{"id":6179,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1501:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}],"id":6178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1493:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6177,"name":"address","nodeType":"ElementaryTypeName","src":"1493:7:34","typeDescriptions":{}}},"id":6180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1493:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":6181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"1493:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6172,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7679,"src":"1450:14:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7679_$","typeString":"type(library TransferHelper)"}},"id":6174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":7678,"src":"1450:30:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1450:65:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6183,"nodeType":"ExpressionStatement","src":"1450:65:34"}}]},"documentation":{"id":6161,"nodeType":"StructuredDocumentation","src":"1323:34:34","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"c53af304","id":6186,"implemented":true,"kind":"function","modifiers":[],"name":"refundAMB","nodeType":"FunctionDefinition","overrides":{"id":6163,"nodeType":"OverrideSpecifier","overrides":[],"src":"1400:8:34"},"parameters":{"id":6162,"nodeType":"ParameterList","parameters":[],"src":"1380:2:34"},"returnParameters":{"id":6164,"nodeType":"ParameterList","parameters":[],"src":"1409:0:34"},"scope":6255,"src":"1362:160:34","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":6253,"nodeType":"Block","src":"1799:569:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6198,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6189,"src":"1813:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6199,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6028,"src":"1822:4:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1813:13:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6203,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1838:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}],"id":6202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1830:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6201,"name":"address","nodeType":"ElementaryTypeName","src":"1830:7:34","typeDescriptions":{}}},"id":6204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1830:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":6205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"1830:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"1855:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:30:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1813:47:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6226,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6191,"src":"2048:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":6229,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2065:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$6255","typeString":"contract PeripheryPayments"}],"id":6228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2057:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6227,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:34","typeDescriptions":{}}},"id":6230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2057:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2048:22:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6250,"nodeType":"Block","src":"2246:116:34","statements":[{"expression":{"arguments":[{"id":6244,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6189,"src":"2320:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6245,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6191,"src":"2327:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6246,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"2334:9:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6247,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"2345:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6241,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7679,"src":"2288:14:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7679_$","typeString":"type(library TransferHelper)"}},"id":6243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7560,"src":"2288:31:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2288:63:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6249,"nodeType":"ExpressionStatement","src":"2288:63:34"}]},"id":6251,"nodeType":"IfStatement","src":"2044:318:34","trueBody":{"id":6240,"nodeType":"Block","src":"2072:168:34","statements":[{"expression":{"arguments":[{"id":6235,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6189,"src":"2205:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6236,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"2212:9:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"2223:5:34","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":6232,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7679,"src":"2177:14:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7679_$","typeString":"type(library TransferHelper)"}},"id":6234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7606,"src":"2177:27:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2177:52:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6239,"nodeType":"ExpressionStatement","src":"2177:52:34"}]}},"id":6252,"nodeType":"IfStatement","src":"1809:553:34","trueBody":{"id":6225,"nodeType":"Block","src":"1862:176:34","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6210,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6028,"src":"1911:4:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6209,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"1905:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$6977_$","typeString":"type(contract ISAMB)"}},"id":6211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1905:11:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$6977","typeString":"contract ISAMB"}},"id":6212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":6970,"src":"1905:19:34","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":6214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":6213,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"1932:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1905:33:34","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":6215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1905:35:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6216,"nodeType":"ExpressionStatement","src":"1905:35:34"},{"expression":{"arguments":[{"id":6221,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"2010:9:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6222,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"2021:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6218,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6028,"src":"1995:4:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6217,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"1989:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$6977_$","typeString":"type(contract ISAMB)"}},"id":6219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1989:11:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$6977","typeString":"contract ISAMB"}},"id":6220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1756,"src":"1989:20:34","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":6223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1989:38:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6224,"nodeType":"ExpressionStatement","src":"1989:38:34"}]}}]},"documentation":{"id":6187,"nodeType":"StructuredDocumentation","src":"1528:180:34","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":6254,"implemented":true,"kind":"function","modifiers":[],"name":"pay","nodeType":"FunctionDefinition","parameters":{"id":6196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6189,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6254,"src":"1726:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6188,"name":"address","nodeType":"ElementaryTypeName","src":"1726:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6191,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":6254,"src":"1741:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6190,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6193,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6254,"src":"1756:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6192,"name":"address","nodeType":"ElementaryTypeName","src":"1756:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6195,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6254,"src":"1775:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6194,"name":"uint256","nodeType":"ElementaryTypeName","src":"1775:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1725:64:34"},"returnParameters":{"id":6197,"nodeType":"ParameterList","parameters":[],"src":"1799:0:34"},"scope":6255,"src":"1713:655:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":6256,"src":"304:2066:34"}],"src":"45:2326:34"},"id":34},"contracts/base/PeripheryValidation.sol":{"ast":{"absolutePath":"contracts/base/PeripheryValidation.sol","exportedSymbols":{"BlockTimestamp":[5504],"PeripheryValidation":[6275]},"id":6276,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6257,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:35"},{"absolutePath":"contracts/base/BlockTimestamp.sol","file":"./BlockTimestamp.sol","id":6258,"nodeType":"ImportDirective","scope":6276,"sourceUnit":5505,"src":"70:30:35","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6259,"name":"BlockTimestamp","nodeType":"UserDefinedTypeName","referencedDeclaration":5504,"src":"143:14:35","typeDescriptions":{"typeIdentifier":"t_contract$_BlockTimestamp_$5504","typeString":"contract BlockTimestamp"}},"id":6260,"nodeType":"InheritanceSpecifier","src":"143:14:35"}],"contractDependencies":[5504],"contractKind":"contract","fullyImplemented":true,"id":6275,"linearizedBaseContracts":[6275,5504],"name":"PeripheryValidation","nodeType":"ContractDefinition","nodes":[{"body":{"id":6273,"nodeType":"Block","src":"205:89:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":6265,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5503,"src":"223:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":6266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"223:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6267,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6262,"src":"244:8:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"223:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73616374696f6e20746f6f206f6c64","id":6269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"254:21:35","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":6264,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"215:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"215:61:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6271,"nodeType":"ExpressionStatement","src":"215:61:35"},{"id":6272,"nodeType":"PlaceholderStatement","src":"286:1:35"}]},"id":6274,"name":"checkDeadline","nodeType":"ModifierDefinition","parameters":{"id":6263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6262,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6274,"src":"187:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6261,"name":"uint256","nodeType":"ElementaryTypeName","src":"187:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"186:18:35"},"src":"164:130:35","virtual":false,"visibility":"internal"}],"scope":6276,"src":"102:194:35"}],"src":"45:252:35"},"id":35},"contracts/base/PoolInitializer.sol":{"ast":{"absolutePath":"contracts/base/PoolInitializer.sol","exportedSymbols":{"IAstraCLFactory":[82],"IAstraCLPool":[110],"IAstraCLPoolActions":[220],"IAstraCLPoolDerivedState":[251],"IAstraCLPoolEvents":[370],"IAstraCLPoolImmutables":[410],"IAstraCLPoolOwnerActions":[436],"IAstraCLPoolState":[544],"IPeripheryImmutableState":[6809],"IPoolInitializer":[6854],"PeripheryImmutableState":[6045],"PoolInitializer":[6367]},"id":6368,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6277,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:36"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol","id":6278,"nodeType":"ImportDirective","scope":6368,"sourceUnit":83,"src":"123:72:36","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":6279,"nodeType":"ImportDirective","scope":6368,"sourceUnit":111,"src":"249:69:36","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":6280,"nodeType":"ImportDirective","scope":6368,"sourceUnit":6046,"src":"320:39:36","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPoolInitializer.sol","file":"../interfaces/IPoolInitializer.sol","id":6281,"nodeType":"ImportDirective","scope":6368,"sourceUnit":6855,"src":"360:44:36","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6283,"name":"IPoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":6854,"src":"487:16:36","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolInitializer_$6854","typeString":"contract IPoolInitializer"}},"id":6284,"nodeType":"InheritanceSpecifier","src":"487:16:36"},{"baseName":{"id":6285,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":6045,"src":"505:23:36","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$6045","typeString":"contract PeripheryImmutableState"}},"id":6286,"nodeType":"InheritanceSpecifier","src":"505:23:36"}],"contractDependencies":[6045,6809,6854],"contractKind":"contract","documentation":{"id":6282,"nodeType":"StructuredDocumentation","src":"406:44:36","text":"@title Creates and initializes CL Pools"},"fullyImplemented":false,"id":6367,"linearizedBaseContracts":[6367,6045,6809,6854],"name":"PoolInitializer","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[6853],"body":{"id":6365,"nodeType":"Block","src":"769:512:36","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6302,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6289,"src":"787:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6303,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6291,"src":"796:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"787:15:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6301,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"779:7:36","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":6305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"779:24:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6306,"nodeType":"ExpressionStatement","src":"779:24:36"},{"expression":{"id":6316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6307,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"813:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6312,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6289,"src":"853:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6313,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6291,"src":"861:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6314,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"869: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"}],"expression":{"arguments":[{"id":6309,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"836:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6308,"name":"IAstraCLFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"820:15:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLFactory_$82_$","typeString":"type(contract IAstraCLFactory)"}},"id":6310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"820:24:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLFactory_$82","typeString":"contract IAstraCLFactory"}},"id":6311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":55,"src":"820:32:36","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":6315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"820:53:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"813:60:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6317,"nodeType":"ExpressionStatement","src":"813:60:36"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6318,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"888:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"904:1:36","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":6320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"896:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6319,"name":"address","nodeType":"ElementaryTypeName","src":"896:7:36","typeDescriptions":{}}},"id":6322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"896:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"888:18:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6363,"nodeType":"Block","src":"1059:216:36","statements":[{"assignments":[6344,null,null,null,null,null,null],"declarations":[{"constant":false,"id":6344,"mutability":"mutable","name":"sqrtPriceX96Existing","nodeType":"VariableDeclaration","scope":6363,"src":"1074:28:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6343,"name":"uint160","nodeType":"ElementaryTypeName","src":"1074:7:36","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},null,null,null,null,null,null],"id":6350,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6346,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"1131:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6345,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1118:12:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":6347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1118:18:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":6348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":457,"src":"1118:24:36","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":6349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1118:26:36","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":"1073:71:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":6353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6351,"name":"sqrtPriceX96Existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6344,"src":"1162:20:36","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1186:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1162:25:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6362,"nodeType":"IfStatement","src":"1158:107:36","trueBody":{"id":6361,"nodeType":"Block","src":"1189:76:36","statements":[{"expression":{"arguments":[{"id":6358,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"1237:12:36","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"id":6355,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"1220:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6354,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1207:12:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1207:18:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":6357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":133,"src":"1207:29:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint160_$returns$__$","typeString":"function (uint160) external"}},"id":6359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1207:43:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6360,"nodeType":"ExpressionStatement","src":"1207:43:36"}]}}]},"id":6364,"nodeType":"IfStatement","src":"884:391:36","trueBody":{"id":6342,"nodeType":"Block","src":"908:145:36","statements":[{"expression":{"id":6333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6324,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"922:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6329,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6289,"src":"965:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6330,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6291,"src":"973:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6331,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"981: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"}],"expression":{"arguments":[{"id":6326,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"945:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6325,"name":"IAstraCLFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"929:15:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLFactory_$82_$","typeString":"type(contract IAstraCLFactory)"}},"id":6327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"929:24:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLFactory_$82","typeString":"contract IAstraCLFactory"}},"id":6328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"createPool","nodeType":"MemberAccess","referencedDeclaration":67,"src":"929:35:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) external returns (address)"}},"id":6332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"929:56:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"922:63:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6334,"nodeType":"ExpressionStatement","src":"922:63:36"},{"expression":{"arguments":[{"id":6339,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"1029:12:36","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"id":6336,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"1012:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6335,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"999:12:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":6337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"999:18:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":6338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":133,"src":"999:29:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint160_$returns$__$","typeString":"function (uint160) external"}},"id":6340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"999:43:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6341,"nodeType":"ExpressionStatement","src":"999:43:36"}]}}]},"documentation":{"id":6287,"nodeType":"StructuredDocumentation","src":"535:32:36","text":"@inheritdoc IPoolInitializer"},"functionSelector":"13ead562","id":6366,"implemented":true,"kind":"function","modifiers":[],"name":"createAndInitializePoolIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":6297,"nodeType":"OverrideSpecifier","overrides":[],"src":"737:8:36"},"parameters":{"id":6296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6289,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":6366,"src":"625:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6288,"name":"address","nodeType":"ElementaryTypeName","src":"625:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6291,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":6366,"src":"649:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6290,"name":"address","nodeType":"ElementaryTypeName","src":"649:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6293,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":6366,"src":"673:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":6292,"name":"uint24","nodeType":"ElementaryTypeName","src":"673:6:36","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":6295,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":6366,"src":"693:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6294,"name":"uint160","nodeType":"ElementaryTypeName","src":"693:7:36","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"615:104:36"},"returnParameters":{"id":6300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6299,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":6366,"src":"755:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6298,"name":"address","nodeType":"ElementaryTypeName","src":"755:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"754:14:36"},"scope":6367,"src":"572:709:36","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6368,"src":"450:833:36"}],"src":"45:1239:36"},"id":36},"contracts/base/SelfPermit.sol":{"ast":{"absolutePath":"contracts/base/SelfPermit.sol","exportedSymbols":{"IERC20":[1807],"IERC20Permit":[1305],"IERC20PermitAllowed":[6960],"ISelfPermit":[6922],"SelfPermit":[6534]},"id":6535,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6369,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:37"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":6370,"nodeType":"ImportDirective","scope":6535,"sourceUnit":1808,"src":"71:56:37","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/drafts/IERC20Permit.sol","file":"@openzeppelin/contracts/drafts/IERC20Permit.sol","id":6371,"nodeType":"ImportDirective","scope":6535,"sourceUnit":1306,"src":"128:57:37","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/ISelfPermit.sol","file":"../interfaces/ISelfPermit.sol","id":6372,"nodeType":"ImportDirective","scope":6535,"sourceUnit":6923,"src":"187:39:37","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/IERC20PermitAllowed.sol","file":"../interfaces/external/IERC20PermitAllowed.sol","id":6373,"nodeType":"ImportDirective","scope":6535,"sourceUnit":6961,"src":"227:56:37","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6375,"name":"ISelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":6922,"src":"612:11:37","typeDescriptions":{"typeIdentifier":"t_contract$_ISelfPermit_$6922","typeString":"contract ISelfPermit"}},"id":6376,"nodeType":"InheritanceSpecifier","src":"612:11:37"}],"contractDependencies":[6922],"contractKind":"contract","documentation":{"id":6374,"nodeType":"StructuredDocumentation","src":"285:295:37","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":6534,"linearizedBaseContracts":[6534,6922],"name":"SelfPermit","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[6873],"body":{"id":6410,"nodeType":"Block","src":"839:96:37","statements":[{"expression":{"arguments":[{"expression":{"id":6397,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"876:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"876:10:37","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":6401,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"896:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$6534","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$6534","typeString":"contract SelfPermit"}],"id":6400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"888:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6399,"name":"address","nodeType":"ElementaryTypeName","src":"888:7:37","typeDescriptions":{}}},"id":6402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6403,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6381,"src":"903:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6404,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6383,"src":"910:8:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6405,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6385,"src":"920:1:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":6406,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6387,"src":"923:1:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6407,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6389,"src":"926:1:37","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":6394,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6379,"src":"862:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6393,"name":"IERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"849:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Permit_$1305_$","typeString":"type(contract IERC20Permit)"}},"id":6395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"849:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$1305","typeString":"contract IERC20Permit"}},"id":6396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":1290,"src":"849:26:37","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":6408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"849:79:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6409,"nodeType":"ExpressionStatement","src":"849:79:37"}]},"documentation":{"id":6377,"nodeType":"StructuredDocumentation","src":"630:27:37","text":"@inheritdoc ISelfPermit"},"functionSelector":"f3995c67","id":6411,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermit","nodeType":"FunctionDefinition","overrides":{"id":6391,"nodeType":"OverrideSpecifier","overrides":[],"src":"830:8:37"},"parameters":{"id":6390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6379,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6411,"src":"691:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6378,"name":"address","nodeType":"ElementaryTypeName","src":"691:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6381,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6411,"src":"714:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6380,"name":"uint256","nodeType":"ElementaryTypeName","src":"714:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6383,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6411,"src":"737:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6382,"name":"uint256","nodeType":"ElementaryTypeName","src":"737:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6385,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6411,"src":"763:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6384,"name":"uint8","nodeType":"ElementaryTypeName","src":"763:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6387,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6411,"src":"780:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6386,"name":"bytes32","nodeType":"ElementaryTypeName","src":"780:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6389,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6411,"src":"799:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6388,"name":"bytes32","nodeType":"ElementaryTypeName","src":"799:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"681:133:37"},"returnParameters":{"id":6392,"nodeType":"ParameterList","parameters":[],"src":"839:0:37"},"scope":6534,"src":"662:273:37","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[6889],"body":{"id":6451,"nodeType":"Block","src":"1163:124:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":6432,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1201:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1201:10:37","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":6436,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1221:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$6534","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$6534","typeString":"contract SelfPermit"}],"id":6435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1213:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6434,"name":"address","nodeType":"ElementaryTypeName","src":"1213:7:37","typeDescriptions":{}}},"id":6437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1213:13:37","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":6429,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6414,"src":"1184:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6428,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"1177:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1807_$","typeString":"type(contract IERC20)"}},"id":6430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1177:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1807","typeString":"contract IERC20"}},"id":6431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":1766,"src":"1177:23:37","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":6438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1177:50:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6439,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6416,"src":"1230:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1177:58:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6450,"nodeType":"IfStatement","src":"1173:107:37","trueBody":{"expression":{"arguments":[{"id":6442,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6414,"src":"1248:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6443,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6416,"src":"1255:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6444,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"1262:8:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6445,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"1272:1:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":6446,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6422,"src":"1275:1:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6447,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6424,"src":"1278:1:37","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":6441,"name":"selfPermit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"1237:10:37","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":6448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1237:43:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6449,"nodeType":"ExpressionStatement","src":"1237:43:37"}}]},"documentation":{"id":6412,"nodeType":"StructuredDocumentation","src":"941:27:37","text":"@inheritdoc ISelfPermit"},"functionSelector":"c2e3140a","id":6452,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":6426,"nodeType":"OverrideSpecifier","overrides":[],"src":"1154:8:37"},"parameters":{"id":6425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6414,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6452,"src":"1013:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6413,"name":"address","nodeType":"ElementaryTypeName","src":"1013:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6416,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6452,"src":"1036:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6415,"name":"uint256","nodeType":"ElementaryTypeName","src":"1036:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6418,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6452,"src":"1059:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6417,"name":"uint256","nodeType":"ElementaryTypeName","src":"1059:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6420,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6452,"src":"1085:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6419,"name":"uint8","nodeType":"ElementaryTypeName","src":"1085:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6422,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6452,"src":"1102:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6421,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1102:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6424,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6452,"src":"1121:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6423,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1121:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1003:133:37"},"returnParameters":{"id":6427,"nodeType":"ParameterList","parameters":[],"src":"1163:0:37"},"scope":6534,"src":"973:314:37","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[6905],"body":{"id":6487,"nodeType":"Block","src":"1507:107:37","statements":[{"expression":{"arguments":[{"expression":{"id":6473,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1551:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1551:10:37","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":6477,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1571:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$6534","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$6534","typeString":"contract SelfPermit"}],"id":6476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1563:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6475,"name":"address","nodeType":"ElementaryTypeName","src":"1563:7:37","typeDescriptions":{}}},"id":6478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1563:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6479,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6457,"src":"1578:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6480,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6459,"src":"1585:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":6481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1593:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":6482,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6461,"src":"1599:1:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":6483,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"1602:1:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6484,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6465,"src":"1605:1:37","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":6470,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"1537:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6469,"name":"IERC20PermitAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"1517:19:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20PermitAllowed_$6960_$","typeString":"type(contract IERC20PermitAllowed)"}},"id":6471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1517:26:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitAllowed_$6960","typeString":"contract IERC20PermitAllowed"}},"id":6472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":6959,"src":"1517:33:37","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":6485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1517:90:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6486,"nodeType":"ExpressionStatement","src":"1517:90:37"}]},"documentation":{"id":6453,"nodeType":"StructuredDocumentation","src":"1293:27:37","text":"@inheritdoc ISelfPermit"},"functionSelector":"4659a494","id":6488,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitAllowed","nodeType":"FunctionDefinition","overrides":{"id":6467,"nodeType":"OverrideSpecifier","overrides":[],"src":"1498:8:37"},"parameters":{"id":6466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6455,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6488,"src":"1361:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6454,"name":"address","nodeType":"ElementaryTypeName","src":"1361:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6457,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":6488,"src":"1384:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6456,"name":"uint256","nodeType":"ElementaryTypeName","src":"1384:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6459,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":6488,"src":"1407:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6458,"name":"uint256","nodeType":"ElementaryTypeName","src":"1407:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6461,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6488,"src":"1431:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6460,"name":"uint8","nodeType":"ElementaryTypeName","src":"1431:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6463,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6488,"src":"1448:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1448:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6465,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6488,"src":"1467:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6464,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1467:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1351:131:37"},"returnParameters":{"id":6468,"nodeType":"ParameterList","parameters":[],"src":"1507:0:37"},"scope":6534,"src":"1325:289:37","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[6921],"body":{"id":6532,"nodeType":"Block","src":"1847:153:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":6509,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1885:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1885:10:37","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":6513,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1905:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$6534","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$6534","typeString":"contract SelfPermit"}],"id":6512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1897:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6511,"name":"address","nodeType":"ElementaryTypeName","src":"1897:7:37","typeDescriptions":{}}},"id":6514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1897:13:37","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":6506,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6491,"src":"1868:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6505,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"1861:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1807_$","typeString":"type(contract IERC20)"}},"id":6507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1861:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1807","typeString":"contract IERC20"}},"id":6508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":1766,"src":"1861:23:37","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":6515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1861:50:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":6518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1919:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6517,"name":"uint256","nodeType":"ElementaryTypeName","src":"1919:7:37","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":6516,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1914:4:37","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1914:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":6520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1914:17:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1861:70:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6531,"nodeType":"IfStatement","src":"1857:136:37","trueBody":{"expression":{"arguments":[{"id":6523,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6491,"src":"1963:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6524,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6493,"src":"1970:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6525,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6495,"src":"1977:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6526,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"1985:1:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":6527,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6499,"src":"1988:1:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6528,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6501,"src":"1991:1:37","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":6522,"name":"selfPermitAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6488,"src":"1945:17:37","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":6529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1945:48:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6530,"nodeType":"ExpressionStatement","src":"1945:48:37"}}]},"documentation":{"id":6489,"nodeType":"StructuredDocumentation","src":"1620:27:37","text":"@inheritdoc ISelfPermit"},"functionSelector":"a4a78f0c","id":6533,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitAllowedIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":6503,"nodeType":"OverrideSpecifier","overrides":[],"src":"1838:8:37"},"parameters":{"id":6502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6491,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6533,"src":"1699:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6490,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6493,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":6533,"src":"1722:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6492,"name":"uint256","nodeType":"ElementaryTypeName","src":"1722:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6495,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":6533,"src":"1745:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1745:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6497,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6533,"src":"1769:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6496,"name":"uint8","nodeType":"ElementaryTypeName","src":"1769:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6499,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6533,"src":"1786:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6498,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1786:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6501,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6533,"src":"1805:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6500,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1805:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1689:131:37"},"returnParameters":{"id":6504,"nodeType":"ParameterList","parameters":[],"src":"1847:0:37"},"scope":6534,"src":"1652:348:37","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6535,"src":"580:1422:37"}],"src":"45:1958:37"},"id":37},"contracts/interfaces/IERC721Permit.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC721Permit.sol","exportedSymbols":{"IERC165":[1374],"IERC721":[2867],"IERC721Permit":[6569]},"id":6570,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6536,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:38"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":6537,"nodeType":"ImportDirective","scope":6570,"sourceUnit":2868,"src":"71:58:38","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6539,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":2867,"src":"282:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2867","typeString":"contract IERC721"}},"id":6540,"nodeType":"InheritanceSpecifier","src":"282:7:38"}],"contractDependencies":[1374,2867],"contractKind":"interface","documentation":{"id":6538,"nodeType":"StructuredDocumentation","src":"131:124:38","text":"@title ERC721 with permit\n @notice Extension to ERC721 that includes a permit function for signature based approvals"},"fullyImplemented":false,"id":6569,"linearizedBaseContracts":[6569,2867,1374],"name":"IERC721Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6541,"nodeType":"StructuredDocumentation","src":"296:104:38","text":"@notice The permit typehash used in the permit signature\n @return The typehash for the permit"},"functionSelector":"30adf81f","id":6546,"implemented":false,"kind":"function","modifiers":[],"name":"PERMIT_TYPEHASH","nodeType":"FunctionDefinition","parameters":{"id":6542,"nodeType":"ParameterList","parameters":[],"src":"429:2:38"},"returnParameters":{"id":6545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6544,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6546,"src":"455:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6543,"name":"bytes32","nodeType":"ElementaryTypeName","src":"455:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"454:9:38"},"scope":6569,"src":"405:59:38","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":6547,"nodeType":"StructuredDocumentation","src":"470:135:38","text":"@notice The domain separator used in the permit signature\n @return The domain seperator used in encoding of permit signature"},"functionSelector":"3644e515","id":6552,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":6548,"nodeType":"ParameterList","parameters":[],"src":"635:2:38"},"returnParameters":{"id":6551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6550,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6552,"src":"661:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6549,"name":"bytes32","nodeType":"ElementaryTypeName","src":"661:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"660:9:38"},"scope":6569,"src":"610:60:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6553,"nodeType":"StructuredDocumentation","src":"676:605:38","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":6568,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":6566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6555,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6568,"src":"1302:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6554,"name":"address","nodeType":"ElementaryTypeName","src":"1302:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6557,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6568,"src":"1319:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6556,"name":"uint256","nodeType":"ElementaryTypeName","src":"1319:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6559,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6568,"src":"1336:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6558,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6561,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6568,"src":"1354:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6560,"name":"uint8","nodeType":"ElementaryTypeName","src":"1354:5:38","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6563,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6568,"src":"1363:9:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6562,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1363:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6565,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6568,"src":"1374:9:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6564,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1374:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1301:83:38"},"returnParameters":{"id":6567,"nodeType":"ParameterList","parameters":[],"src":"1401:0:38"},"scope":6569,"src":"1286:116:38","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6570,"src":"255:1149:38"}],"src":"45:1360:38"},"id":38},"contracts/interfaces/IMulticall.sol":{"ast":{"absolutePath":"contracts/interfaces/IMulticall.sol","exportedSymbols":{"IMulticall":[6584]},"id":6585,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6571,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:39"},{"id":6572,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:39"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":6573,"nodeType":"StructuredDocumentation","src":"91:109:39","text":"@title Multicall interface\n @notice Enables calling multiple methods in a single call to the contract"},"fullyImplemented":false,"id":6584,"linearizedBaseContracts":[6584],"name":"IMulticall","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6574,"nodeType":"StructuredDocumentation","src":"227:378:39","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":6583,"implemented":false,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","parameters":{"id":6578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6577,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6583,"src":"629:21:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":6575,"name":"bytes","nodeType":"ElementaryTypeName","src":"629:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":6576,"nodeType":"ArrayTypeName","src":"629:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"628:23:39"},"returnParameters":{"id":6582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6581,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":6583,"src":"678:22:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":6579,"name":"bytes","nodeType":"ElementaryTypeName","src":"678:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":6580,"nodeType":"ArrayTypeName","src":"678:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"677:24:39"},"scope":6584,"src":"610:92:39","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6585,"src":"200:504:39"}],"src":"45:660:39"},"id":39},"contracts/interfaces/INonfungiblePositionManager.sol":{"ast":{"absolutePath":"contracts/interfaces/INonfungiblePositionManager.sol","exportedSymbols":{"IERC165":[1374],"IERC721":[2867],"IERC721Enumerable":[2898],"IERC721Metadata":[2925],"IERC721Permit":[6569],"INonfungiblePositionManager":[6778],"IPeripheryImmutableState":[6809],"IPeripheryPayments":[6835],"IPoolInitializer":[6854]},"id":6779,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6586,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:40"},{"id":6587,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:40"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol","id":6588,"nodeType":"ImportDirective","scope":6779,"sourceUnit":2926,"src":"91:66:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol","id":6589,"nodeType":"ImportDirective","scope":6779,"sourceUnit":2899,"src":"158:68:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPoolInitializer.sol","file":"./IPoolInitializer.sol","id":6590,"nodeType":"ImportDirective","scope":6779,"sourceUnit":6855,"src":"228:32:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IERC721Permit.sol","file":"./IERC721Permit.sol","id":6591,"nodeType":"ImportDirective","scope":6779,"sourceUnit":6570,"src":"261:29:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPeripheryPayments.sol","file":"./IPeripheryPayments.sol","id":6592,"nodeType":"ImportDirective","scope":6779,"sourceUnit":6836,"src":"291:34:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPeripheryImmutableState.sol","file":"./IPeripheryImmutableState.sol","id":6593,"nodeType":"ImportDirective","scope":6779,"sourceUnit":6810,"src":"326:40:40","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6595,"name":"IPoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":6854,"src":"591:16:40","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolInitializer_$6854","typeString":"contract IPoolInitializer"}},"id":6596,"nodeType":"InheritanceSpecifier","src":"591:16:40"},{"baseName":{"id":6597,"name":"IPeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":6835,"src":"613:18:40","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPayments_$6835","typeString":"contract IPeripheryPayments"}},"id":6598,"nodeType":"InheritanceSpecifier","src":"613:18:40"},{"baseName":{"id":6599,"name":"IPeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":6809,"src":"637:24:40","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryImmutableState_$6809","typeString":"contract IPeripheryImmutableState"}},"id":6600,"nodeType":"InheritanceSpecifier","src":"637:24:40"},{"baseName":{"id":6601,"name":"IERC721Metadata","nodeType":"UserDefinedTypeName","referencedDeclaration":2925,"src":"667:15:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$2925","typeString":"contract IERC721Metadata"}},"id":6602,"nodeType":"InheritanceSpecifier","src":"667:15:40"},{"baseName":{"id":6603,"name":"IERC721Enumerable","nodeType":"UserDefinedTypeName","referencedDeclaration":2898,"src":"688:17:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Enumerable_$2898","typeString":"contract IERC721Enumerable"}},"id":6604,"nodeType":"InheritanceSpecifier","src":"688:17:40"},{"baseName":{"id":6605,"name":"IERC721Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":6569,"src":"711:13:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Permit_$6569","typeString":"contract IERC721Permit"}},"id":6606,"nodeType":"InheritanceSpecifier","src":"711:13:40"}],"contractDependencies":[1374,2867,2898,2925,6569,6809,6835,6854],"contractKind":"interface","documentation":{"id":6594,"nodeType":"StructuredDocumentation","src":"368:178:40","text":"@title Non-fungible token for positions\n @notice Wraps AstraDEX CL positions in a non-fungible token interface which allows for them to be transferred\n and authorized."},"fullyImplemented":false,"id":6778,"linearizedBaseContracts":[6778,6569,2898,2925,2867,1374,6809,6835,6854],"name":"INonfungiblePositionManager","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":6607,"nodeType":"StructuredDocumentation","src":"731:458:40","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":6617,"name":"IncreaseLiquidity","nodeType":"EventDefinition","parameters":{"id":6616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6609,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6617,"src":"1218:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6608,"name":"uint256","nodeType":"ElementaryTypeName","src":"1218:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6611,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":6617,"src":"1243:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6610,"name":"uint128","nodeType":"ElementaryTypeName","src":"1243:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6613,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":6617,"src":"1262:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6612,"name":"uint256","nodeType":"ElementaryTypeName","src":"1262:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6615,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":6617,"src":"1279:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6614,"name":"uint256","nodeType":"ElementaryTypeName","src":"1279:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1217:78:40"},"src":"1194:102:40"},{"anonymous":false,"documentation":{"id":6618,"nodeType":"StructuredDocumentation","src":"1301:419:40","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":6628,"name":"DecreaseLiquidity","nodeType":"EventDefinition","parameters":{"id":6627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6620,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6628,"src":"1749:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6619,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6622,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":6628,"src":"1774:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6621,"name":"uint128","nodeType":"ElementaryTypeName","src":"1774:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6624,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":6628,"src":"1793:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6623,"name":"uint256","nodeType":"ElementaryTypeName","src":"1793:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6626,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":6628,"src":"1810:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6625,"name":"uint256","nodeType":"ElementaryTypeName","src":"1810:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1748:78:40"},"src":"1725:102:40"},{"anonymous":false,"documentation":{"id":6629,"nodeType":"StructuredDocumentation","src":"1832:522:40","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":6639,"name":"Collect","nodeType":"EventDefinition","parameters":{"id":6638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6631,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6639,"src":"2373:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6630,"name":"uint256","nodeType":"ElementaryTypeName","src":"2373:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6633,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6639,"src":"2398:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6632,"name":"address","nodeType":"ElementaryTypeName","src":"2398:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6635,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":6639,"src":"2417:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6634,"name":"uint256","nodeType":"ElementaryTypeName","src":"2417:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6637,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":6639,"src":"2434:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6636,"name":"uint256","nodeType":"ElementaryTypeName","src":"2434:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2372:78:40"},"src":"2359:92:40"},{"documentation":{"id":6640,"nodeType":"StructuredDocumentation","src":"2457:1157:40","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":6669,"implemented":false,"kind":"function","modifiers":[],"name":"positions","nodeType":"FunctionDefinition","parameters":{"id":6643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6642,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6669,"src":"3647:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6641,"name":"uint256","nodeType":"ElementaryTypeName","src":"3647:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3637:31:40"},"returnParameters":{"id":6668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6645,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":6669,"src":"3729:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6644,"name":"uint96","nodeType":"ElementaryTypeName","src":"3729:6:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6647,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":6669,"src":"3755:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6646,"name":"address","nodeType":"ElementaryTypeName","src":"3755:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6649,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":6669,"src":"3785:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6648,"name":"address","nodeType":"ElementaryTypeName","src":"3785:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6651,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":6669,"src":"3813:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6650,"name":"address","nodeType":"ElementaryTypeName","src":"3813:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6653,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":6669,"src":"3841:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":6652,"name":"uint24","nodeType":"ElementaryTypeName","src":"3841:6:40","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":6655,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":6669,"src":"3865:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6654,"name":"int24","nodeType":"ElementaryTypeName","src":"3865:5:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6657,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":6669,"src":"3894:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6656,"name":"int24","nodeType":"ElementaryTypeName","src":"3894:5:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6659,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":6669,"src":"3923:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6658,"name":"uint128","nodeType":"ElementaryTypeName","src":"3923:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6661,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":6669,"src":"3954:32:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6660,"name":"uint256","nodeType":"ElementaryTypeName","src":"3954:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6663,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":6669,"src":"4000:32:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6662,"name":"uint256","nodeType":"ElementaryTypeName","src":"4000:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6665,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":6669,"src":"4046:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6664,"name":"uint128","nodeType":"ElementaryTypeName","src":"4046:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6667,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":6669,"src":"4079:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6666,"name":"uint128","nodeType":"ElementaryTypeName","src":"4079:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3715:393:40"},"scope":6778,"src":"3619:490:40","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.MintParams","id":6692,"members":[{"constant":false,"id":6671,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":6692,"src":"4143:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6670,"name":"address","nodeType":"ElementaryTypeName","src":"4143:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6673,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":6692,"src":"4167:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6672,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6675,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":6692,"src":"4191:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":6674,"name":"uint24","nodeType":"ElementaryTypeName","src":"4191:6:40","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":6677,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":6692,"src":"4211:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6676,"name":"int24","nodeType":"ElementaryTypeName","src":"4211:5:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6679,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":6692,"src":"4236:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6678,"name":"int24","nodeType":"ElementaryTypeName","src":"4236:5:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6681,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":6692,"src":"4261:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6680,"name":"uint256","nodeType":"ElementaryTypeName","src":"4261:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6683,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":6692,"src":"4293:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6682,"name":"uint256","nodeType":"ElementaryTypeName","src":"4293:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6685,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":6692,"src":"4325:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6684,"name":"uint256","nodeType":"ElementaryTypeName","src":"4325:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6687,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":6692,"src":"4353:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6686,"name":"uint256","nodeType":"ElementaryTypeName","src":"4353:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6689,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6692,"src":"4381:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6688,"name":"address","nodeType":"ElementaryTypeName","src":"4381:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6691,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6692,"src":"4408:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6690,"name":"uint256","nodeType":"ElementaryTypeName","src":"4408:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"MintParams","nodeType":"StructDefinition","scope":6778,"src":"4115:316:40","visibility":"public"},{"documentation":{"id":6693,"nodeType":"StructuredDocumentation","src":"4437:586:40","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":6706,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":6696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6695,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":6706,"src":"5051:26:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams"},"typeName":{"id":6694,"name":"MintParams","nodeType":"UserDefinedTypeName","referencedDeclaration":6692,"src":"5051:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$6692_storage_ptr","typeString":"struct INonfungiblePositionManager.MintParams"}},"visibility":"internal"}],"src":"5041:42:40"},"returnParameters":{"id":6705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6698,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6706,"src":"5110:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6697,"name":"uint256","nodeType":"ElementaryTypeName","src":"5110:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6700,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":6706,"src":"5127:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6699,"name":"uint128","nodeType":"ElementaryTypeName","src":"5127:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6702,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":6706,"src":"5146:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6701,"name":"uint256","nodeType":"ElementaryTypeName","src":"5146:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6704,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":6706,"src":"5163:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6703,"name":"uint256","nodeType":"ElementaryTypeName","src":"5163:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5109:70:40"},"scope":6778,"src":"5028:152:40","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.IncreaseLiquidityParams","id":6719,"members":[{"constant":false,"id":6708,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6719,"src":"5227:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6707,"name":"uint256","nodeType":"ElementaryTypeName","src":"5227:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6710,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":6719,"src":"5252:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6709,"name":"uint256","nodeType":"ElementaryTypeName","src":"5252:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6712,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":6719,"src":"5284:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6711,"name":"uint256","nodeType":"ElementaryTypeName","src":"5284:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6714,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":6719,"src":"5316:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6713,"name":"uint256","nodeType":"ElementaryTypeName","src":"5316:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6716,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":6719,"src":"5344:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6715,"name":"uint256","nodeType":"ElementaryTypeName","src":"5344:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6718,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6719,"src":"5372:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6717,"name":"uint256","nodeType":"ElementaryTypeName","src":"5372:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"IncreaseLiquidityParams","nodeType":"StructDefinition","scope":6778,"src":"5186:209:40","visibility":"public"},{"documentation":{"id":6720,"nodeType":"StructuredDocumentation","src":"5401:821:40","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":6731,"implemented":false,"kind":"function","modifiers":[],"name":"increaseLiquidity","nodeType":"FunctionDefinition","parameters":{"id":6723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6722,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":6731,"src":"6263:39:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"},"typeName":{"id":6721,"name":"IncreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":6719,"src":"6263:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$6719_storage_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"}},"visibility":"internal"}],"src":"6253:55:40"},"returnParameters":{"id":6730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6725,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":6731,"src":"6335:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6724,"name":"uint128","nodeType":"ElementaryTypeName","src":"6335:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6727,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":6731,"src":"6354:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6726,"name":"uint256","nodeType":"ElementaryTypeName","src":"6354:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6729,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":6731,"src":"6371:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6728,"name":"uint256","nodeType":"ElementaryTypeName","src":"6371:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6334:53:40"},"scope":6778,"src":"6227:161:40","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.DecreaseLiquidityParams","id":6742,"members":[{"constant":false,"id":6733,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6742,"src":"6435:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6732,"name":"uint256","nodeType":"ElementaryTypeName","src":"6435:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6735,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":6742,"src":"6460:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6734,"name":"uint128","nodeType":"ElementaryTypeName","src":"6460:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6737,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":6742,"src":"6487:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6736,"name":"uint256","nodeType":"ElementaryTypeName","src":"6487:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6739,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":6742,"src":"6515:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6738,"name":"uint256","nodeType":"ElementaryTypeName","src":"6515:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6741,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6742,"src":"6543:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6740,"name":"uint256","nodeType":"ElementaryTypeName","src":"6543:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"DecreaseLiquidityParams","nodeType":"StructDefinition","scope":6778,"src":"6394:172:40","visibility":"public"},{"documentation":{"id":6743,"nodeType":"StructuredDocumentation","src":"6572:702:40","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":6752,"implemented":false,"kind":"function","modifiers":[],"name":"decreaseLiquidity","nodeType":"FunctionDefinition","parameters":{"id":6746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6745,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":6752,"src":"7315:39:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"},"typeName":{"id":6744,"name":"DecreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":6742,"src":"7315:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$6742_storage_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"}},"visibility":"internal"}],"src":"7305:55:40"},"returnParameters":{"id":6751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6748,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":6752,"src":"7387:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6747,"name":"uint256","nodeType":"ElementaryTypeName","src":"7387:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6750,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":6752,"src":"7404:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6749,"name":"uint256","nodeType":"ElementaryTypeName","src":"7404:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7386:34:40"},"scope":6778,"src":"7279:142:40","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.CollectParams","id":6761,"members":[{"constant":false,"id":6754,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6761,"src":"7458:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6753,"name":"uint256","nodeType":"ElementaryTypeName","src":"7458:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6756,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6761,"src":"7483:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6755,"name":"address","nodeType":"ElementaryTypeName","src":"7483:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6758,"mutability":"mutable","name":"amount0Max","nodeType":"VariableDeclaration","scope":6761,"src":"7510:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6757,"name":"uint128","nodeType":"ElementaryTypeName","src":"7510:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6760,"mutability":"mutable","name":"amount1Max","nodeType":"VariableDeclaration","scope":6761,"src":"7538:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6759,"name":"uint128","nodeType":"ElementaryTypeName","src":"7538:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"CollectParams","nodeType":"StructDefinition","scope":6778,"src":"7427:136:40","visibility":"public"},{"documentation":{"id":6762,"nodeType":"StructuredDocumentation","src":"7569:489:40","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":6771,"implemented":false,"kind":"function","modifiers":[],"name":"collect","nodeType":"FunctionDefinition","parameters":{"id":6765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6764,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":6771,"src":"8080:29:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"},"typeName":{"id":6763,"name":"CollectParams","nodeType":"UserDefinedTypeName","referencedDeclaration":6761,"src":"8080:13:40","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$6761_storage_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"}},"visibility":"internal"}],"src":"8079:31:40"},"returnParameters":{"id":6770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6767,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":6771,"src":"8137:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6766,"name":"uint256","nodeType":"ElementaryTypeName","src":"8137:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6769,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":6771,"src":"8154:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6768,"name":"uint256","nodeType":"ElementaryTypeName","src":"8154:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8136:34:40"},"scope":6778,"src":"8063:108:40","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":6772,"nodeType":"StructuredDocumentation","src":"8177:213:40","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":6777,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":6775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6774,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6777,"src":"8409:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6773,"name":"uint256","nodeType":"ElementaryTypeName","src":"8409:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8408:17:40"},"returnParameters":{"id":6776,"nodeType":"ParameterList","parameters":[],"src":"8442:0:40"},"scope":6778,"src":"8395:48:40","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6779,"src":"546:7899:40"}],"src":"45:8401:40"},"id":40},"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol":{"ast":{"absolutePath":"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol","exportedSymbols":{"IERC165":[1374],"IERC721":[2867],"IERC721Enumerable":[2898],"IERC721Metadata":[2925],"IERC721Permit":[6569],"INonfungiblePositionManager":[6778],"INonfungibleTokenPositionDescriptor":[6793],"IPeripheryImmutableState":[6809],"IPeripheryPayments":[6835],"IPoolInitializer":[6854]},"id":6794,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6780,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:41"},{"absolutePath":"contracts/interfaces/INonfungiblePositionManager.sol","file":"./INonfungiblePositionManager.sol","id":6781,"nodeType":"ImportDirective","scope":6794,"sourceUnit":6779,"src":"71:43:41","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":6782,"nodeType":"StructuredDocumentation","src":"116:49:41","text":"@title Describes position NFT tokens via URI"},"fullyImplemented":false,"id":6793,"linearizedBaseContracts":[6793],"name":"INonfungibleTokenPositionDescriptor","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6783,"nodeType":"StructuredDocumentation","src":"217:413:41","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":6792,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","parameters":{"id":6788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6785,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":6792,"src":"662:43:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$6778","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":6784,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":6778,"src":"662:27:41","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$6778","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":6787,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":6792,"src":"715:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6786,"name":"uint256","nodeType":"ElementaryTypeName","src":"715:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"652:84:41"},"returnParameters":{"id":6791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6790,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6792,"src":"760:13:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6789,"name":"string","nodeType":"ElementaryTypeName","src":"760:6:41","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"759:15:41"},"scope":6793,"src":"635:140:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6794,"src":"165:612:41"}],"src":"45:733:41"},"id":41},"contracts/interfaces/IPeripheryImmutableState.sol":{"ast":{"absolutePath":"contracts/interfaces/IPeripheryImmutableState.sol","exportedSymbols":{"IPeripheryImmutableState":[6809]},"id":6810,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6795,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:42"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":6796,"nodeType":"StructuredDocumentation","src":"71:91:42","text":"@title Immutable state\n @notice Functions that return immutable state of the router"},"fullyImplemented":false,"id":6809,"linearizedBaseContracts":[6809],"name":"IPeripheryImmutableState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6797,"nodeType":"StructuredDocumentation","src":"203:58:42","text":"@return Returns the address of the AstraDEX CL factory"},"functionSelector":"c45a0155","id":6802,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":6798,"nodeType":"ParameterList","parameters":[],"src":"282:2:42"},"returnParameters":{"id":6801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6800,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6802,"src":"308:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6799,"name":"address","nodeType":"ElementaryTypeName","src":"308:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"307:9:42"},"scope":6809,"src":"266:51:42","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6803,"nodeType":"StructuredDocumentation","src":"323:39:42","text":"@return Returns the address of SAMB"},"functionSelector":"90793ea8","id":6808,"implemented":false,"kind":"function","modifiers":[],"name":"SAMB","nodeType":"FunctionDefinition","parameters":{"id":6804,"nodeType":"ParameterList","parameters":[],"src":"380:2:42"},"returnParameters":{"id":6807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6806,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6808,"src":"406:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6805,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"405:9:42"},"scope":6809,"src":"367:48:42","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6810,"src":"162:255:42"}],"src":"45:373:42"},"id":42},"contracts/interfaces/IPeripheryPayments.sol":{"ast":{"absolutePath":"contracts/interfaces/IPeripheryPayments.sol","exportedSymbols":{"IPeripheryPayments":[6835]},"id":6836,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6811,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:43"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":6812,"nodeType":"StructuredDocumentation","src":"71:92:43","text":"@title Periphery Payments\n @notice Functions to ease deposits and withdrawals of AMB"},"fullyImplemented":false,"id":6835,"linearizedBaseContracts":[6835],"name":"IPeripheryPayments","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6813,"nodeType":"StructuredDocumentation","src":"198:299:43","text":"@notice Unwraps the contract's SAMB balance and sends it to recipient as AMB.\n @dev The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\n @param amountMinimum The minimum amount of SAMB to unwrap\n @param recipient The address receiving AMB"},"functionSelector":"a98ce37f","id":6820,"implemented":false,"kind":"function","modifiers":[],"name":"unwrapSAMB","nodeType":"FunctionDefinition","parameters":{"id":6818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6815,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":6820,"src":"522:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6814,"name":"uint256","nodeType":"ElementaryTypeName","src":"522:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6817,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6820,"src":"545:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6816,"name":"address","nodeType":"ElementaryTypeName","src":"545:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"521:42:43"},"returnParameters":{"id":6819,"nodeType":"ParameterList","parameters":[],"src":"580:0:43"},"scope":6835,"src":"502:79:43","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":6821,"nodeType":"StructuredDocumentation","src":"587:225:43","text":"@notice Refunds any AMB 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":"c53af304","id":6824,"implemented":false,"kind":"function","modifiers":[],"name":"refundAMB","nodeType":"FunctionDefinition","parameters":{"id":6822,"nodeType":"ParameterList","parameters":[],"src":"835:2:43"},"returnParameters":{"id":6823,"nodeType":"ParameterList","parameters":[],"src":"854:0:43"},"scope":6835,"src":"817:38:43","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":6825,"nodeType":"StructuredDocumentation","src":"861:427:43","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":6834,"implemented":false,"kind":"function","modifiers":[],"name":"sweepToken","nodeType":"FunctionDefinition","parameters":{"id":6832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6827,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6834,"src":"1313:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6826,"name":"address","nodeType":"ElementaryTypeName","src":"1313:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6829,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":6834,"src":"1328:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6828,"name":"uint256","nodeType":"ElementaryTypeName","src":"1328:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6831,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6834,"src":"1351:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6830,"name":"address","nodeType":"ElementaryTypeName","src":"1351:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1312:57:43"},"returnParameters":{"id":6833,"nodeType":"ParameterList","parameters":[],"src":"1386:0:43"},"scope":6835,"src":"1293:94:43","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6836,"src":"163:1226:43"}],"src":"45:1345:43"},"id":43},"contracts/interfaces/IPoolInitializer.sol":{"ast":{"absolutePath":"contracts/interfaces/IPoolInitializer.sol","exportedSymbols":{"IPoolInitializer":[6854]},"id":6855,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6837,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:44"},{"id":6838,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:44"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":6839,"nodeType":"StructuredDocumentation","src":"91:194:44","text":"@title Creates and initializes CL 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":6854,"linearizedBaseContracts":[6854],"name":"IPoolInitializer","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6840,"nodeType":"StructuredDocumentation","src":"318:648:44","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 CL 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":6853,"implemented":false,"kind":"function","modifiers":[],"name":"createAndInitializePoolIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":6849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6842,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":6853,"src":"1024:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6841,"name":"address","nodeType":"ElementaryTypeName","src":"1024:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6844,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":6853,"src":"1048:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6843,"name":"address","nodeType":"ElementaryTypeName","src":"1048:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6846,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":6853,"src":"1072:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":6845,"name":"uint24","nodeType":"ElementaryTypeName","src":"1072:6:44","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":6848,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":6853,"src":"1092:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6847,"name":"uint160","nodeType":"ElementaryTypeName","src":"1092:7:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1014:104:44"},"returnParameters":{"id":6852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6851,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":6853,"src":"1145:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6850,"name":"address","nodeType":"ElementaryTypeName","src":"1145:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1144:14:44"},"scope":6854,"src":"971:188:44","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6855,"src":"285:876:44"}],"src":"45:1117:44"},"id":44},"contracts/interfaces/ISelfPermit.sol":{"ast":{"absolutePath":"contracts/interfaces/ISelfPermit.sol","exportedSymbols":{"ISelfPermit":[6922]},"id":6923,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6856,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:45"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":6857,"nodeType":"StructuredDocumentation","src":"71:117:45","text":"@title Self Permit\n @notice Functionality to call permit on any EIP-2612-compliant token for use in the route"},"fullyImplemented":false,"id":6922,"linearizedBaseContracts":[6922],"name":"ISelfPermit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6858,"nodeType":"StructuredDocumentation","src":"216:663:45","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":6873,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermit","nodeType":"FunctionDefinition","parameters":{"id":6871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6860,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6873,"src":"904:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6859,"name":"address","nodeType":"ElementaryTypeName","src":"904:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6862,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6873,"src":"919:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6861,"name":"uint256","nodeType":"ElementaryTypeName","src":"919:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6864,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6873,"src":"934:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6863,"name":"uint256","nodeType":"ElementaryTypeName","src":"934:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6866,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6873,"src":"952:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6865,"name":"uint8","nodeType":"ElementaryTypeName","src":"952:5:45","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6868,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6873,"src":"961:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6867,"name":"bytes32","nodeType":"ElementaryTypeName","src":"961:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6870,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6873,"src":"972:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6869,"name":"bytes32","nodeType":"ElementaryTypeName","src":"972:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"903:79:45"},"returnParameters":{"id":6872,"nodeType":"ParameterList","parameters":[],"src":"999:0:45"},"scope":6922,"src":"884:116:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":6874,"nodeType":"StructuredDocumentation","src":"1006:779:45","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":6889,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":6887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6876,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6889,"src":"1830:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6875,"name":"address","nodeType":"ElementaryTypeName","src":"1830:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6878,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6889,"src":"1853:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6877,"name":"uint256","nodeType":"ElementaryTypeName","src":"1853:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6880,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6889,"src":"1876:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6879,"name":"uint256","nodeType":"ElementaryTypeName","src":"1876:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6882,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6889,"src":"1902:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6881,"name":"uint8","nodeType":"ElementaryTypeName","src":"1902:5:45","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6884,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6889,"src":"1919:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6883,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1919:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6886,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6889,"src":"1938:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6885,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1938:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1820:133:45"},"returnParameters":{"id":6888,"nodeType":"ParameterList","parameters":[],"src":"1970:0:45"},"scope":6922,"src":"1790:181:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":6890,"nodeType":"StructuredDocumentation","src":"1977:670:45","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":6905,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitAllowed","nodeType":"FunctionDefinition","parameters":{"id":6903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6892,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6905,"src":"2688:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6891,"name":"address","nodeType":"ElementaryTypeName","src":"2688:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6894,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":6905,"src":"2711:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6893,"name":"uint256","nodeType":"ElementaryTypeName","src":"2711:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6896,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":6905,"src":"2734:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6895,"name":"uint256","nodeType":"ElementaryTypeName","src":"2734:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6898,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6905,"src":"2758:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6897,"name":"uint8","nodeType":"ElementaryTypeName","src":"2758:5:45","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6900,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6905,"src":"2775:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2775:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6902,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6905,"src":"2794:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2794:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2678:131:45"},"returnParameters":{"id":6904,"nodeType":"ParameterList","parameters":[],"src":"2826:0:45"},"scope":6922,"src":"2652:175:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":6906,"nodeType":"StructuredDocumentation","src":"2833:801:45","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":6921,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitAllowedIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":6919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6908,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":6921,"src":"3686:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6907,"name":"address","nodeType":"ElementaryTypeName","src":"3686:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6910,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":6921,"src":"3709:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6909,"name":"uint256","nodeType":"ElementaryTypeName","src":"3709:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6912,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":6921,"src":"3732:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6911,"name":"uint256","nodeType":"ElementaryTypeName","src":"3732:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6914,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6921,"src":"3756:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6913,"name":"uint8","nodeType":"ElementaryTypeName","src":"3756:5:45","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6916,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6921,"src":"3773:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6915,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3773:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6918,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6921,"src":"3792:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6917,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3792:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3676:131:45"},"returnParameters":{"id":6920,"nodeType":"ParameterList","parameters":[],"src":"3824:0:45"},"scope":6922,"src":"3639:186:45","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6923,"src":"188:3639:45"}],"src":"45:3783:45"},"id":45},"contracts/interfaces/external/IERC1271.sol":{"ast":{"absolutePath":"contracts/interfaces/external/IERC1271.sol","exportedSymbols":{"IERC1271":[6936]},"id":6937,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6924,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:46"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":6925,"nodeType":"StructuredDocumentation","src":"71:176:46","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":6936,"linearizedBaseContracts":[6936],"name":"IERC1271","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6926,"nodeType":"StructuredDocumentation","src":"272:471:46","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":6935,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":6931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6928,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":6935,"src":"774:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6927,"name":"bytes32","nodeType":"ElementaryTypeName","src":"774:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6930,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":6935,"src":"788:22:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6929,"name":"bytes","nodeType":"ElementaryTypeName","src":"788:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"773:38:46"},"returnParameters":{"id":6934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6933,"mutability":"mutable","name":"magicValue","nodeType":"VariableDeclaration","scope":6935,"src":"835:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6932,"name":"bytes4","nodeType":"ElementaryTypeName","src":"835:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"834:19:46"},"scope":6936,"src":"748:106:46","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6937,"src":"247:609:46"}],"src":"45:812:46"},"id":46},"contracts/interfaces/external/IERC20PermitAllowed.sol":{"ast":{"absolutePath":"contracts/interfaces/external/IERC20PermitAllowed.sol","exportedSymbols":{"IERC20PermitAllowed":[6960]},"id":6961,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6938,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:47"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":6939,"nodeType":"StructuredDocumentation","src":"71:82:47","text":"@title Interface for permit\n @notice Interface used by DAI/CHAI for permit"},"fullyImplemented":false,"id":6960,"linearizedBaseContracts":[6960],"name":"IERC20PermitAllowed","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6940,"nodeType":"StructuredDocumentation","src":"189:802:47","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":6959,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":6957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6942,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":6959,"src":"1021:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6941,"name":"address","nodeType":"ElementaryTypeName","src":"1021:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6944,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6959,"src":"1045:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6943,"name":"address","nodeType":"ElementaryTypeName","src":"1045:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6946,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":6959,"src":"1070:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6945,"name":"uint256","nodeType":"ElementaryTypeName","src":"1070:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6948,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":6959,"src":"1093:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6947,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6950,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":6959,"src":"1117:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6949,"name":"bool","nodeType":"ElementaryTypeName","src":"1117:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6952,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6959,"src":"1139:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6951,"name":"uint8","nodeType":"ElementaryTypeName","src":"1139:5:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6954,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6959,"src":"1156:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6953,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1156:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6956,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6959,"src":"1175:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6955,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1175:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1011:179:47"},"returnParameters":{"id":6958,"nodeType":"ParameterList","parameters":[],"src":"1199:0:47"},"scope":6960,"src":"996:204:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6961,"src":"153:1049:47"}],"src":"45:1158:47"},"id":47},"contracts/interfaces/external/ISAMB.sol":{"ast":{"absolutePath":"contracts/interfaces/external/ISAMB.sol","exportedSymbols":{"IERC20":[1807],"ISAMB":[6977]},"id":6978,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6962,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:48"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":6963,"nodeType":"ImportDirective","scope":6978,"sourceUnit":1808,"src":"70:56:48","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6965,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1807,"src":"177:6:48","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1807","typeString":"contract IERC20"}},"id":6966,"nodeType":"InheritanceSpecifier","src":"177:6:48"}],"contractDependencies":[1807],"contractKind":"interface","documentation":{"id":6964,"nodeType":"StructuredDocumentation","src":"128:30:48","text":"@title Interface for SAMB"},"fullyImplemented":false,"id":6977,"linearizedBaseContracts":[6977,1807],"name":"ISAMB","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6967,"nodeType":"StructuredDocumentation","src":"190:46:48","text":"@notice Deposit ether to get wrapped ether"},"functionSelector":"d0e30db0","id":6970,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":6968,"nodeType":"ParameterList","parameters":[],"src":"257:2:48"},"returnParameters":{"id":6969,"nodeType":"ParameterList","parameters":[],"src":"276:0:48"},"scope":6977,"src":"241:36:48","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":6971,"nodeType":"StructuredDocumentation","src":"283:47:48","text":"@notice Withdraw wrapped ether to get ether"},"functionSelector":"2e1a7d4d","id":6976,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":6974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6973,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6976,"src":"353:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6972,"name":"uint256","nodeType":"ElementaryTypeName","src":"353:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"352:9:48"},"returnParameters":{"id":6975,"nodeType":"ParameterList","parameters":[],"src":"370:0:48"},"scope":6977,"src":"335:36:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6978,"src":"158:215:48"}],"src":"45:329:48"},"id":48},"contracts/libraries/CallbackValidation.sol":{"ast":{"absolutePath":"contracts/libraries/CallbackValidation.sol","exportedSymbols":{"CallbackValidation":[7039],"IAstraCLPool":[110],"IAstraCLPoolActions":[220],"IAstraCLPoolDerivedState":[251],"IAstraCLPoolEvents":[370],"IAstraCLPoolImmutables":[410],"IAstraCLPoolOwnerActions":[436],"IAstraCLPoolState":[544],"PoolAddress":[7483]},"id":7040,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6979,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:49"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":6980,"nodeType":"ImportDirective","scope":7040,"sourceUnit":111,"src":"123:69:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"./PoolAddress.sol","id":6981,"nodeType":"ImportDirective","scope":7040,"sourceUnit":7484,"src":"193:27:49","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6982,"nodeType":"StructuredDocumentation","src":"222:69:49","text":"@notice Provides validation for callbacks from AstraDEX CL Pools"},"fullyImplemented":true,"id":7039,"linearizedBaseContracts":[7039],"name":"CallbackValidation","nodeType":"ContractDefinition","nodes":[{"body":{"id":7006,"nodeType":"Block","src":"907:92:49","statements":[{"expression":{"arguments":[{"id":6997,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6985,"src":"939:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7000,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6987,"src":"971:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7001,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6989,"src":"979:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7002,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"987:3:49","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":6998,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"948:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$7483_$","typeString":"type(library PoolAddress)"}},"id":6999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolKey","nodeType":"MemberAccess","referencedDeclaration":7435,"src":"948:22:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_uint24_$returns$_t_struct$_PoolKey_$7404_memory_ptr_$","typeString":"function (address,address,uint24) pure returns (struct PoolAddress.PoolKey memory)"}},"id":7003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"948:43:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"id":6996,"name":"verifyCallback","nodeType":"Identifier","overloadedDeclarations":[7007,7038],"referencedDeclaration":7038,"src":"924:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_struct$_PoolKey_$7404_memory_ptr_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,struct PoolAddress.PoolKey memory) view returns (contract IAstraCLPool)"}},"id":7004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"924:68:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"functionReturnParameters":6995,"id":7005,"nodeType":"Return","src":"917:75:49"}]},"documentation":{"id":6983,"nodeType":"StructuredDocumentation","src":"324:413:49","text":"@notice Returns the address of a valid AstraDEX CL Pool\n @param factory The contract address of the AstraDEX CL 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 CL pool contract address"},"id":7007,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallback","nodeType":"FunctionDefinition","parameters":{"id":6992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6985,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":7007,"src":"775:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6984,"name":"address","nodeType":"ElementaryTypeName","src":"775:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6987,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":7007,"src":"800:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6986,"name":"address","nodeType":"ElementaryTypeName","src":"800:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6989,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":7007,"src":"824:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6988,"name":"address","nodeType":"ElementaryTypeName","src":"824:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6991,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":7007,"src":"848:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":6990,"name":"uint24","nodeType":"ElementaryTypeName","src":"848:6:49","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"765:99:49"},"returnParameters":{"id":6995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6994,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":7007,"src":"888:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":6993,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"888:12:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"src":"887:19:49"},"scope":7039,"src":"742:257:49","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7037,"nodeType":"Block","src":"1389:128:49","statements":[{"expression":{"id":7025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7017,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"1399:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":7021,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7010,"src":"1446:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7022,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7012,"src":"1455:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":7019,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"1419:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$7483_$","typeString":"type(library PoolAddress)"}},"id":7020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":7482,"src":"1419:26:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$7404_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":7023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1419:44:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7018,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1406:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":7024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1406:58:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"src":"1399:65:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":7026,"nodeType":"ExpressionStatement","src":"1399:65:49"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7028,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1482:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1482:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":7032,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"1504:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}],"id":7031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1496:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7030,"name":"address","nodeType":"ElementaryTypeName","src":"1496:7:49","typeDescriptions":{}}},"id":7033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1496:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1482:27:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7027,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1474:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1474:36:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7036,"nodeType":"ExpressionStatement","src":"1474:36:49"}]},"documentation":{"id":7008,"nodeType":"StructuredDocumentation","src":"1005:238:49","text":"@notice Returns the address of a valid AstraDEX CL Pool\n @param factory The contract address of the AstraDEX CL factory\n @param poolKey The identifying key of the CL pool\n @return pool The CL pool contract address"},"id":7038,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallback","nodeType":"FunctionDefinition","parameters":{"id":7013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7010,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":7038,"src":"1281:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7009,"name":"address","nodeType":"ElementaryTypeName","src":"1281:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7012,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":7038,"src":"1306:34:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":7011,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"1306:19:49","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"1271:75:49"},"returnParameters":{"id":7016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7015,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":7038,"src":"1370:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":7014,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"1370:12:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"src":"1369:19:49"},"scope":7039,"src":"1248:269:49","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7040,"src":"291:1228:49"}],"src":"45:1475:49"},"id":49},"contracts/libraries/ChainId.sol":{"ast":{"absolutePath":"contracts/libraries/ChainId.sol","exportedSymbols":{"ChainId":[7051]},"id":7052,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7041,"literals":["solidity",">=","0.7",".0"],"nodeType":"PragmaDirective","src":"45:24:50"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7042,"nodeType":"StructuredDocumentation","src":"71:53:50","text":"@title Function for getting the current chain ID"},"fullyImplemented":true,"id":7051,"linearizedBaseContracts":[7051],"name":"ChainId","nodeType":"ContractDefinition","nodes":[{"body":{"id":7049,"nodeType":"Block","src":"285:69:50","statements":[{"AST":{"nodeType":"YulBlock","src":"304:44:50","statements":[{"nodeType":"YulAssignment","src":"318:20:50","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"329:7:50"},"nodeType":"YulFunctionCall","src":"329:9:50"},"variableNames":[{"name":"chainId","nodeType":"YulIdentifier","src":"318:7:50"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7046,"isOffset":false,"isSlot":false,"src":"318:7:50","valueSize":1}],"id":7048,"nodeType":"InlineAssembly","src":"295:53:50"}]},"documentation":{"id":7043,"nodeType":"StructuredDocumentation","src":"146:79:50","text":"@dev Gets the current chain ID\n @return chainId The current chain ID"},"id":7050,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":7044,"nodeType":"ParameterList","parameters":[],"src":"242:2:50"},"returnParameters":{"id":7047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7046,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":7050,"src":"268:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7045,"name":"uint256","nodeType":"ElementaryTypeName","src":"268:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"267:17:50"},"scope":7051,"src":"230:124:50","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7052,"src":"124:232:50"}],"src":"45:312:50"},"id":50},"contracts/libraries/LiquidityAmounts.sol":{"ast":{"absolutePath":"contracts/libraries/LiquidityAmounts.sol","exportedSymbols":{"FixedPoint96":[561],"FullMath":[734],"LiquidityAmounts":[7391]},"id":7392,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7053,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:51"},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","id":7054,"nodeType":"ImportDirective","scope":7392,"sourceUnit":735,"src":"124:64:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol","file":"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol","id":7055,"nodeType":"ImportDirective","scope":7392,"sourceUnit":562,"src":"242:68:51","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7056,"nodeType":"StructuredDocumentation","src":"312:131:51","text":"@title Liquidity amount functions\n @notice Provides functions for computing liquidity amounts from token amounts and prices"},"fullyImplemented":true,"id":7391,"linearizedBaseContracts":[7391],"name":"LiquidityAmounts","nodeType":"ContractDefinition","nodes":[{"body":{"id":7076,"nodeType":"Block","src":"686:47:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":7070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7065,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"705:1:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7068,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"717:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"709:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":7066,"name":"uint128","nodeType":"ElementaryTypeName","src":"709:7:51","typeDescriptions":{}}},"id":7069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"709:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"705:14:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":7071,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"704:16:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7072,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"724:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"704:21:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7064,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"696:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"696:30:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7075,"nodeType":"ExpressionStatement","src":"696:30:51"}]},"documentation":{"id":7057,"nodeType":"StructuredDocumentation","src":"474:144:51","text":"@notice Downcasts uint256 to uint128\n @param x The uint258 to be downcasted\n @return y The passed value, downcasted to uint128"},"id":7077,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nodeType":"FunctionDefinition","parameters":{"id":7060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7059,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":7077,"src":"642:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7058,"name":"uint256","nodeType":"ElementaryTypeName","src":"642:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"641:11:51"},"returnParameters":{"id":7063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7062,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":7077,"src":"675:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7061,"name":"uint128","nodeType":"ElementaryTypeName","src":"675:7:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"674:11:51"},"scope":7391,"src":"623:110:51","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":7122,"nodeType":"Block","src":"1368:308:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7089,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7080,"src":"1382:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7090,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7082,"src":"1398:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1382:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7100,"nodeType":"IfStatement","src":"1378:98:51","trueBody":{"expression":{"id":7098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7092,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7080,"src":"1414:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7093,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7082,"src":"1429:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7094,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1413:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":7095,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7082,"src":"1447:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7096,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7080,"src":"1462:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7097,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1446:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"1413:63:51","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7099,"nodeType":"ExpressionStatement","src":"1413:63:51"}},{"assignments":[7102],"declarations":[{"constant":false,"id":7102,"mutability":"mutable","name":"intermediate","nodeType":"VariableDeclaration","scope":7122,"src":"1486:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7101,"name":"uint256","nodeType":"ElementaryTypeName","src":"1486:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7110,"initialValue":{"arguments":[{"id":7105,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7080,"src":"1525:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7106,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7082,"src":"1540:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":7107,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"1555:12:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$561_$","typeString":"type(library FixedPoint96)"}},"id":7108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":560,"src":"1555:16:51","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":7103,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"1509:8:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":7104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"1509:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1509:63:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1486:86:51"},{"expression":{"arguments":[{"arguments":[{"id":7114,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7084,"src":"1615:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7115,"name":"intermediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7102,"src":"1624:12:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7116,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7082,"src":"1638:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7117,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7080,"src":"1654:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1638:29:51","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":7112,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"1599:8:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":7113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"1599:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1599:69:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7111,"name":"toUint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7077,"src":"1589:9:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint256) pure returns (uint128)"}},"id":7120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1589:80:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":7088,"id":7121,"nodeType":"Return","src":"1582:87:51"}]},"documentation":{"id":7078,"nodeType":"StructuredDocumentation","src":"739:457:51","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":7123,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount0","nodeType":"FunctionDefinition","parameters":{"id":7085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7080,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":7123,"src":"1242:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7079,"name":"uint160","nodeType":"ElementaryTypeName","src":"1242:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7082,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":7123,"src":"1273:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7081,"name":"uint160","nodeType":"ElementaryTypeName","src":"1273:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7084,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":7123,"src":"1304:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7083,"name":"uint256","nodeType":"ElementaryTypeName","src":"1304:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1232:93:51"},"returnParameters":{"id":7088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7087,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":7123,"src":"1349:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7086,"name":"uint128","nodeType":"ElementaryTypeName","src":"1349:7:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1348:19:51"},"scope":7391,"src":"1201:475:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7159,"nodeType":"Block","src":"2282:216:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7135,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7126,"src":"2296:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7136,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7128,"src":"2312:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2296:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7146,"nodeType":"IfStatement","src":"2292:98:51","trueBody":{"expression":{"id":7144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7138,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7126,"src":"2328:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7139,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7128,"src":"2343:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7140,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2327:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":7141,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7128,"src":"2361:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7142,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7126,"src":"2376:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2360:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"2327:63:51","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7145,"nodeType":"ExpressionStatement","src":"2327:63:51"}},{"expression":{"arguments":[{"arguments":[{"id":7150,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7130,"src":"2433:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7151,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"2442:12:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$561_$","typeString":"type(library FixedPoint96)"}},"id":7152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":560,"src":"2442:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7153,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7128,"src":"2460:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7154,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7126,"src":"2476:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2460:29:51","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":7148,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"2417:8:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":7149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"2417:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2417:73:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7147,"name":"toUint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7077,"src":"2407:9:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint256) pure returns (uint128)"}},"id":7157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2407:84:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":7134,"id":7158,"nodeType":"Return","src":"2400:91:51"}]},"documentation":{"id":7124,"nodeType":"StructuredDocumentation","src":"1682:428:51","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":7160,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount1","nodeType":"FunctionDefinition","parameters":{"id":7131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7126,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":7160,"src":"2156:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7125,"name":"uint160","nodeType":"ElementaryTypeName","src":"2156:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7128,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":7160,"src":"2187:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7127,"name":"uint160","nodeType":"ElementaryTypeName","src":"2187:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7130,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":7160,"src":"2218:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7129,"name":"uint256","nodeType":"ElementaryTypeName","src":"2218:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2146:93:51"},"returnParameters":{"id":7134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7133,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":7160,"src":"2263:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7132,"name":"uint128","nodeType":"ElementaryTypeName","src":"2263:7:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2262:19:51"},"scope":7391,"src":"2115:383:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7240,"nodeType":"Block","src":"3320:679:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7176,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"3334:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7177,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"3350:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3334:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7187,"nodeType":"IfStatement","src":"3330:98:51","trueBody":{"expression":{"id":7185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7179,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"3366:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7180,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"3381:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7181,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3365:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":7182,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"3399:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7183,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"3414:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7184,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3398:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"3365:63:51","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7186,"nodeType":"ExpressionStatement","src":"3365:63:51"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7188,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7163,"src":"3443:12:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":7189,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"3459:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3443:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7200,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7163,"src":"3582:12:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7201,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"3597:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3582:28:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7237,"nodeType":"Block","src":"3895:98:51","statements":[{"expression":{"id":7235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7229,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7174,"src":"3909:9:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7231,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"3944:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7232,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"3959:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7233,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"3974:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7230,"name":"getLiquidityForAmount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"3921:22:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":7234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3921:61:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3909:73:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":7236,"nodeType":"ExpressionStatement","src":"3909:73:51"}]},"id":7238,"nodeType":"IfStatement","src":"3578:415:51","trueBody":{"id":7228,"nodeType":"Block","src":"3612:277:51","statements":[{"assignments":[7204],"declarations":[{"constant":false,"id":7204,"mutability":"mutable","name":"liquidity0","nodeType":"VariableDeclaration","scope":7228,"src":"3626:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7203,"name":"uint128","nodeType":"ElementaryTypeName","src":"3626:7:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":7210,"initialValue":{"arguments":[{"id":7206,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7163,"src":"3670:12:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7207,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"3684:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7208,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7169,"src":"3699:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7205,"name":"getLiquidityForAmount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7123,"src":"3647:22:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":7209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3647:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"3626:81:51"},{"assignments":[7212],"declarations":[{"constant":false,"id":7212,"mutability":"mutable","name":"liquidity1","nodeType":"VariableDeclaration","scope":7228,"src":"3721:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7211,"name":"uint128","nodeType":"ElementaryTypeName","src":"3721:7:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":7218,"initialValue":{"arguments":[{"id":7214,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"3765:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7215,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7163,"src":"3780:12:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7216,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"3794:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7213,"name":"getLiquidityForAmount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"3742:22:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":7217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3742:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"3721:81:51"},{"expression":{"id":7226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7219,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7174,"src":"3817:9:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":7222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7220,"name":"liquidity0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7204,"src":"3829:10:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7221,"name":"liquidity1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7212,"src":"3842:10:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3829:23:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7224,"name":"liquidity1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7212,"src":"3868:10:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":7225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3829:49:51","trueExpression":{"id":7223,"name":"liquidity0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7204,"src":"3855:10:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3817:61:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":7227,"nodeType":"ExpressionStatement","src":"3817:61:51"}]}},"id":7239,"nodeType":"IfStatement","src":"3439:554:51","trueBody":{"id":7199,"nodeType":"Block","src":"3474:98:51","statements":[{"expression":{"id":7197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7191,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7174,"src":"3488:9:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7193,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"3523:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7194,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"3538:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7195,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7169,"src":"3553:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7192,"name":"getLiquidityForAmount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7123,"src":"3500:22:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":7196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3500:61:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3488:73:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":7198,"nodeType":"ExpressionStatement","src":"3488:73:51"}]}}]},"documentation":{"id":7161,"nodeType":"StructuredDocumentation","src":"2504:589:51","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":7241,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmounts","nodeType":"FunctionDefinition","parameters":{"id":7172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7163,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":7241,"src":"3139:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7162,"name":"uint160","nodeType":"ElementaryTypeName","src":"3139:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7165,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":7241,"src":"3169:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7164,"name":"uint160","nodeType":"ElementaryTypeName","src":"3169:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7167,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":7241,"src":"3200:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7166,"name":"uint160","nodeType":"ElementaryTypeName","src":"3200:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7169,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":7241,"src":"3231:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7168,"name":"uint256","nodeType":"ElementaryTypeName","src":"3231:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7171,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":7241,"src":"3256:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7170,"name":"uint256","nodeType":"ElementaryTypeName","src":"3256:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3129:148:51"},"returnParameters":{"id":7175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7174,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":7241,"src":"3301:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7173,"name":"uint128","nodeType":"ElementaryTypeName","src":"3301:7:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3300:19:51"},"scope":7391,"src":"3098:901:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7282,"nodeType":"Block","src":"4524:331:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7253,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7244,"src":"4538:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7254,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"4554:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4538:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7264,"nodeType":"IfStatement","src":"4534:98:51","trueBody":{"expression":{"id":7262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7256,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7244,"src":"4570:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7257,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"4585:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7258,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4569:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":7259,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"4603:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7260,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7244,"src":"4618:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7261,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4602:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"4569:63:51","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7263,"nodeType":"ExpressionStatement","src":"4569:63:51"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7269,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7248,"src":"4703:9:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":7268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4695:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7267,"name":"uint256","nodeType":"ElementaryTypeName","src":"4695:7:51","typeDescriptions":{}}},"id":7270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4695:18:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":7271,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"4717:12:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$561_$","typeString":"type(library FixedPoint96)"}},"id":7272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":557,"src":"4717:23:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4695:45:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7274,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"4758:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7275,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7244,"src":"4774:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4758:29:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7277,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"4805:13:51","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":7265,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"4662:8:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":7266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"4662:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4662:170:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7279,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7244,"src":"4835:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4662:186:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7252,"id":7281,"nodeType":"Return","src":"4643:205:51"}]},"documentation":{"id":7242,"nodeType":"StructuredDocumentation","src":"4005:347:51","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":7283,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":7249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7244,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":7283,"src":"4398:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7243,"name":"uint160","nodeType":"ElementaryTypeName","src":"4398:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7246,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":7283,"src":"4429:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7245,"name":"uint160","nodeType":"ElementaryTypeName","src":"4429:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7248,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":7283,"src":"4460:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7247,"name":"uint128","nodeType":"ElementaryTypeName","src":"4460:7:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4388:95:51"},"returnParameters":{"id":7252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7251,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":7283,"src":"4507:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7250,"name":"uint256","nodeType":"ElementaryTypeName","src":"4507:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4506:17:51"},"scope":7391,"src":"4357:498:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7317,"nodeType":"Block","src":"5380:208:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7295,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7286,"src":"5394:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7296,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"5410:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5394:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7306,"nodeType":"IfStatement","src":"5390:98:51","trueBody":{"expression":{"id":7304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7298,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7286,"src":"5426:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7299,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"5441:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7300,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5425:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":7301,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"5459:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7302,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7286,"src":"5474:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7303,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5458:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"5425:63:51","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7305,"nodeType":"ExpressionStatement","src":"5425:63:51"}},{"expression":{"arguments":[{"id":7309,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7290,"src":"5522:9:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7310,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"5533:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7311,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7286,"src":"5549:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5533:29:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":7313,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"5564:12:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$561_$","typeString":"type(library FixedPoint96)"}},"id":7314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":560,"src":"5564:16:51","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":7307,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"5506:8:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$734_$","typeString":"type(library FullMath)"}},"id":7308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":690,"src":"5506:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5506:75:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7294,"id":7316,"nodeType":"Return","src":"5499:82:51"}]},"documentation":{"id":7284,"nodeType":"StructuredDocumentation","src":"4861:347:51","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":7318,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":7291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7286,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":7318,"src":"5254:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7285,"name":"uint160","nodeType":"ElementaryTypeName","src":"5254:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7288,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":7318,"src":"5285:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7287,"name":"uint160","nodeType":"ElementaryTypeName","src":"5285:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7290,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":7318,"src":"5316:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7289,"name":"uint128","nodeType":"ElementaryTypeName","src":"5316:7:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5244:95:51"},"returnParameters":{"id":7294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7293,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":7318,"src":"5363:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7292,"name":"uint256","nodeType":"ElementaryTypeName","src":"5363:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5362:17:51"},"scope":7391,"src":"5213:375:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7389,"nodeType":"Block","src":"6343:585:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7334,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"6357:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7335,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"6373:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6357:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7345,"nodeType":"IfStatement","src":"6353:98:51","trueBody":{"expression":{"id":7343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7337,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"6389:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7338,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"6404:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7339,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6388:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":7340,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"6422:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7341,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"6437:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7342,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6421:30:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"6388:63:51","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7344,"nodeType":"ExpressionStatement","src":"6388:63:51"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7346,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7321,"src":"6466:12:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":7347,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"6482:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6466:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7358,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7321,"src":"6605:12:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7359,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"6620:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6605:28:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7386,"nodeType":"Block","src":"6824:98:51","statements":[{"expression":{"id":7384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7378,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7332,"src":"6838:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7380,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"6871:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7381,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"6886:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7382,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7327,"src":"6901:9:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":7379,"name":"getAmount1ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7318,"src":"6848:22:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":7383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6848:63:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6838:73:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7385,"nodeType":"ExpressionStatement","src":"6838:73:51"}]},"id":7387,"nodeType":"IfStatement","src":"6601:321:51","trueBody":{"id":7377,"nodeType":"Block","src":"6635:183:51","statements":[{"expression":{"id":7367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7361,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7330,"src":"6649:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7363,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7321,"src":"6682:12:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7364,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"6696:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7365,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7327,"src":"6711:9:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":7362,"name":"getAmount0ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"6659:22:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":7366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6659:62:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6649:72:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7368,"nodeType":"ExpressionStatement","src":"6649:72:51"},{"expression":{"id":7375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7369,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7332,"src":"6735:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7371,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"6768:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7372,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7321,"src":"6783:12:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7373,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7327,"src":"6797:9:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":7370,"name":"getAmount1ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7318,"src":"6745:22:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":7374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6745:62:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6735:72:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7376,"nodeType":"ExpressionStatement","src":"6735:72:51"}]}},"id":7388,"nodeType":"IfStatement","src":"6462:460:51","trueBody":{"id":7357,"nodeType":"Block","src":"6497:98:51","statements":[{"expression":{"id":7355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7349,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7330,"src":"6511:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7351,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"6544:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7352,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"6559:13:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7353,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7327,"src":"6574:9:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":7350,"name":"getAmount0ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"6521:22:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":7354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6521:63:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6511:73:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7356,"nodeType":"ExpressionStatement","src":"6511:73:51"}]}}]},"documentation":{"id":7319,"nodeType":"StructuredDocumentation","src":"5594:530:51","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":7390,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":7328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7321,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":7390,"src":"6170:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7320,"name":"uint160","nodeType":"ElementaryTypeName","src":"6170:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7323,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":7390,"src":"6200:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7322,"name":"uint160","nodeType":"ElementaryTypeName","src":"6200:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7325,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":7390,"src":"6231:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7324,"name":"uint160","nodeType":"ElementaryTypeName","src":"6231:7:51","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7327,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":7390,"src":"6262:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7326,"name":"uint128","nodeType":"ElementaryTypeName","src":"6262:7:51","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6160:125:51"},"returnParameters":{"id":7333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7330,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":7390,"src":"6309:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7329,"name":"uint256","nodeType":"ElementaryTypeName","src":"6309:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7332,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":7390,"src":"6326:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7331,"name":"uint256","nodeType":"ElementaryTypeName","src":"6326:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6308:34:51"},"scope":7391,"src":"6129:799:51","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7392,"src":"443:6487:51"}],"src":"45:6886:51"},"id":51},"contracts/libraries/PoolAddress.sol":{"ast":{"absolutePath":"contracts/libraries/PoolAddress.sol","exportedSymbols":{"PoolAddress":[7483]},"id":7484,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7393,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:52"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7394,"nodeType":"StructuredDocumentation","src":"71:96:52","text":"@title Provides functions for deriving a pool address from the factory, tokens, and the fee"},"fullyImplemented":true,"id":7483,"linearizedBaseContracts":[7483],"name":"PoolAddress","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":7397,"mutability":"constant","name":"POOL_INIT_CODE_HASH","nodeType":"VariableDeclaration","scope":7483,"src":"193:114:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"193:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307832303363386563363439623233623766616639623733636361646662316136376166353261303937313139633832383031663439343765633564656236633034","id":7396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"241:66:52","typeDescriptions":{"typeIdentifier":"t_rational_14581007372363029699053742918615039622153709847727207857928092248886097964036_by_1","typeString":"int_const 1458...(69 digits omitted)...4036"},"value":"0x203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c04"},"visibility":"internal"},{"canonicalName":"PoolAddress.PoolKey","id":7404,"members":[{"constant":false,"id":7399,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":7404,"src":"387:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7398,"name":"address","nodeType":"ElementaryTypeName","src":"387:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7401,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":7404,"src":"411:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7400,"name":"address","nodeType":"ElementaryTypeName","src":"411:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7403,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":7404,"src":"435:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7402,"name":"uint24","nodeType":"ElementaryTypeName","src":"435:6:52","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"name":"PoolKey","nodeType":"StructDefinition","scope":7483,"src":"362:90:52","visibility":"public"},{"body":{"id":7434,"nodeType":"Block","src":"887:141:52","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7416,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7407,"src":"901:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7417,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"910:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"901:15:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7427,"nodeType":"IfStatement","src":"897:56:52","trueBody":{"expression":{"id":7425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7419,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7407,"src":"919:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7420,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"927:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":7421,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"918:16:52","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":7422,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"938:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7423,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7407,"src":"946:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":7424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"937:16:52","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"918:35:52","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7426,"nodeType":"ExpressionStatement","src":"918:35:52"}},{"expression":{"arguments":[{"id":7429,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7407,"src":"987:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7430,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"1003:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7431,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7411,"src":"1016:3:52","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":7428,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7404,"src":"970:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$7404_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":7432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"970:51:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"functionReturnParameters":7415,"id":7433,"nodeType":"Return","src":"963:58:52"}]},"documentation":{"id":7405,"nodeType":"StructuredDocumentation","src":"458:321:52","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":7435,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolKey","nodeType":"FunctionDefinition","parameters":{"id":7412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7407,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":7435,"src":"804:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7406,"name":"address","nodeType":"ElementaryTypeName","src":"804:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7409,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":7435,"src":"820:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7408,"name":"address","nodeType":"ElementaryTypeName","src":"820:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7411,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":7435,"src":"836:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7410,"name":"uint24","nodeType":"ElementaryTypeName","src":"836:6:52","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"803:44:52"},"returnParameters":{"id":7415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7414,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7435,"src":"871:14:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":7413,"name":"PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"871:7:52","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"870:16:52"},"scope":7483,"src":"784:244:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7481,"nodeType":"Block","src":"1374:414:52","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7446,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7440,"src":"1392:3:52","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":7447,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":7399,"src":"1392:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7448,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7440,"src":"1405:3:52","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":7449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":7401,"src":"1405:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1392:23:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7445,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1384:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1384:32:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7452,"nodeType":"ExpressionStatement","src":"1384:32:52"},{"expression":{"id":7479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7453,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7443,"src":"1426:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"ff","id":7461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"1552:7:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""}},{"id":7462,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7438,"src":"1585:7:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"expression":{"id":7466,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7440,"src":"1639:3:52","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":7467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":7399,"src":"1639:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7468,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7440,"src":"1651:3:52","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":7469,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":7401,"src":"1651:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7470,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7440,"src":"1663:3:52","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":7471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":7403,"src":"1663:7:52","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":7464,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1628:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1628:10:52","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1628:43:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7463,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1618:9:52","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1618:54:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7474,"name":"POOL_INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7397,"src":"1698:19:52","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":7459,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1510:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1510:16:52","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1510:229:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7458,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1479:9:52","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1479:278:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1454:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7456,"name":"uint256","nodeType":"ElementaryTypeName","src":"1454:7:52","typeDescriptions":{}}},"id":7477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1454:317:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1433:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7454,"name":"address","nodeType":"ElementaryTypeName","src":"1433:7:52","typeDescriptions":{}}},"id":7478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1433:348:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1426:355:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7480,"nodeType":"ExpressionStatement","src":"1426:355:52"}]},"documentation":{"id":7436,"nodeType":"StructuredDocumentation","src":"1034:237:52","text":"@notice Deterministically computes the pool address given the factory and PoolKey\n @param factory The AstraDEX CL factory contract address\n @param key The PoolKey\n @return pool The contract address of the CL pool"},"id":7482,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddress","nodeType":"FunctionDefinition","parameters":{"id":7441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7438,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":7482,"src":"1300:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7437,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7440,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":7482,"src":"1317:18:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":7439,"name":"PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":7404,"src":"1317:7:52","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$7404_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"1299:37:52"},"returnParameters":{"id":7444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7443,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":7482,"src":"1360:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7442,"name":"address","nodeType":"ElementaryTypeName","src":"1360:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1359:14:52"},"scope":7483,"src":"1276:512:52","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7484,"src":"167:1623:52"}],"src":"45:1746:52"},"id":52},"contracts/libraries/PositionKey.sol":{"ast":{"absolutePath":"contracts/libraries/PositionKey.sol","exportedSymbols":{"PositionKey":[7508]},"id":7509,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7485,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:53"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":7508,"linearizedBaseContracts":[7508],"name":"PositionKey","nodeType":"ContractDefinition","nodes":[{"body":{"id":7506,"nodeType":"Block","src":"260:80:53","statements":[{"expression":{"arguments":[{"arguments":[{"id":7500,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"304:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7501,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7490,"src":"311:9:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":7502,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7492,"src":"322:9:53","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":7498,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"287:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"287:16:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"287:45:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7497,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"277:9:53","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"277:56:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7496,"id":7505,"nodeType":"Return","src":"270:63:53"}]},"documentation":{"id":7486,"nodeType":"StructuredDocumentation","src":"97:60:53","text":"@dev Returns the key of the position in the core library"},"id":7507,"implemented":true,"kind":"function","modifiers":[],"name":"compute","nodeType":"FunctionDefinition","parameters":{"id":7493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7488,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":7507,"src":"179:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7487,"name":"address","nodeType":"ElementaryTypeName","src":"179:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7490,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":7507,"src":"194:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":7489,"name":"int24","nodeType":"ElementaryTypeName","src":"194:5:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":7492,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":7507,"src":"211:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":7491,"name":"int24","nodeType":"ElementaryTypeName","src":"211:5:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"178:49:53"},"returnParameters":{"id":7496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7495,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7507,"src":"251:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7494,"name":"bytes32","nodeType":"ElementaryTypeName","src":"251:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"250:9:53"},"scope":7508,"src":"162:178:53","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7509,"src":"71:271:53"}],"src":"45:298:53"},"id":53},"contracts/libraries/TransferHelper.sol":{"ast":{"absolutePath":"contracts/libraries/TransferHelper.sol","exportedSymbols":{"IERC20":[1807],"TransferHelper":[7679]},"id":7680,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7510,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"45:24:54"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":7511,"nodeType":"ImportDirective","scope":7680,"sourceUnit":1808,"src":"71:56:54","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":7679,"linearizedBaseContracts":[7679],"name":"TransferHelper","nodeType":"ContractDefinition","nodes":[{"body":{"id":7559,"nodeType":"Block","src":"652:239:54","statements":[{"assignments":[7524,7526],"declarations":[{"constant":false,"id":7524,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7559,"src":"663:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7523,"name":"bool","nodeType":"ElementaryTypeName","src":"663:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7526,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7559,"src":"677:17:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7525,"name":"bytes","nodeType":"ElementaryTypeName","src":"677:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7539,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":7531,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"745:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1807_$","typeString":"type(contract IERC20)"}},"id":7532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1788,"src":"745:19:54","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":7533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"745:28:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7534,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7516,"src":"775:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7535,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7518,"src":"781:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7536,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7520,"src":"785:5:54","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":7529,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"722:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"722:22:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"722:69:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7527,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7514,"src":"698:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"698:10:54","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"698:103:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"662:139:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7541,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7524,"src":"819:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7542,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7526,"src":"831:4:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"831:11:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"846:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"831:16:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":7548,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7526,"src":"862:4:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":7550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"869:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":7549,"name":"bool","nodeType":"ElementaryTypeName","src":"869:4:54","typeDescriptions":{}}}],"id":7551,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"868:6:54","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":7546,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"851:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"851:10:54","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"851:24:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"831:44:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7554,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"830:46:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"819:57:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"535446","id":7556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"878:5:54","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":7540,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"811:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"811:73:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7558,"nodeType":"ExpressionStatement","src":"811:73:54"}]},"documentation":{"id":7512,"nodeType":"StructuredDocumentation","src":"158:398:54","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":7560,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":7521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7514,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7560,"src":"587:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7513,"name":"address","nodeType":"ElementaryTypeName","src":"587:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7516,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":7560,"src":"602:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7515,"name":"address","nodeType":"ElementaryTypeName","src":"602:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7518,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7560,"src":"616:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7517,"name":"address","nodeType":"ElementaryTypeName","src":"616:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7520,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7560,"src":"628:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7519,"name":"uint256","nodeType":"ElementaryTypeName","src":"628:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"586:56:54"},"returnParameters":{"id":7522,"nodeType":"ParameterList","parameters":[],"src":"652:0:54"},"scope":7679,"src":"561:330:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7605,"nodeType":"Block","src":"1256:206:54","statements":[{"assignments":[7571,7573],"declarations":[{"constant":false,"id":7571,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7605,"src":"1267:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7570,"name":"bool","nodeType":"ElementaryTypeName","src":"1267:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7573,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7605,"src":"1281:17:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7572,"name":"bytes","nodeType":"ElementaryTypeName","src":"1281:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7585,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":7578,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"1336:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1807_$","typeString":"type(contract IERC20)"}},"id":7579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1756,"src":"1336:15:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transfer(address,uint256) returns (bool)"}},"id":7580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1336:24:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7581,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"1362:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7582,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"1366:5:54","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":7576,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1313:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1313:22:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1313:59:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7574,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"1302:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"1302:10:54","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1302:71:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1266:107:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7587,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7571,"src":"1391:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7588,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7573,"src":"1403:4:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1403:11:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1418:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1403:16:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":7594,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7573,"src":"1434:4:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":7596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1441:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":7595,"name":"bool","nodeType":"ElementaryTypeName","src":"1441:4:54","typeDescriptions":{}}}],"id":7597,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1440:6:54","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":7592,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1423:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1423:10:54","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1423:24:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1403:44:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7600,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1402:46:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1391:57:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5354","id":7602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1450:4:54","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":7586,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1383:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1383:72:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7604,"nodeType":"ExpressionStatement","src":"1383:72:54"}]},"documentation":{"id":7561,"nodeType":"StructuredDocumentation","src":"897:281:54","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":7606,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":7568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7563,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7606,"src":"1205:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7562,"name":"address","nodeType":"ElementaryTypeName","src":"1205:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7565,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7606,"src":"1220:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7564,"name":"address","nodeType":"ElementaryTypeName","src":"1220:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7567,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7606,"src":"1232:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7566,"name":"uint256","nodeType":"ElementaryTypeName","src":"1232:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1204:42:54"},"returnParameters":{"id":7569,"nodeType":"ParameterList","parameters":[],"src":"1256:0:54"},"scope":7679,"src":"1183:279:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7651,"nodeType":"Block","src":"1887:205:54","statements":[{"assignments":[7617,7619],"declarations":[{"constant":false,"id":7617,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7651,"src":"1898:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7616,"name":"bool","nodeType":"ElementaryTypeName","src":"1898:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7619,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7651,"src":"1912:17:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7618,"name":"bytes","nodeType":"ElementaryTypeName","src":"1912:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7631,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":7624,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"1967:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1807_$","typeString":"type(contract IERC20)"}},"id":7625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1776,"src":"1967:14:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.approve(address,uint256) returns (bool)"}},"id":7626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1967:23:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7627,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7611,"src":"1992:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7628,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7613,"src":"1996:5:54","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":7622,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1944:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1944:22:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1944:58:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7620,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7609,"src":"1933:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"1933:10:54","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1933:70:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1897:106:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7633,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"2021:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7634,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7619,"src":"2033:4:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2033:11:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2048:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2033:16:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":7640,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7619,"src":"2064:4:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":7642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2071:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":7641,"name":"bool","nodeType":"ElementaryTypeName","src":"2071:4:54","typeDescriptions":{}}}],"id":7643,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2070:6:54","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":7638,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2053:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2053:10:54","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2053:24:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2033:44:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7646,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2032:46:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2021:57:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5341","id":7648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2080:4:54","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":7632,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2013:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2013:72:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7650,"nodeType":"ExpressionStatement","src":"2013:72:54"}]},"documentation":{"id":7607,"nodeType":"StructuredDocumentation","src":"1468:342:54","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":7652,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":7614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7609,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7652,"src":"1836:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7608,"name":"address","nodeType":"ElementaryTypeName","src":"1836:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7611,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7652,"src":"1851:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7610,"name":"address","nodeType":"ElementaryTypeName","src":"1851:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7613,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7652,"src":"1863:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7612,"name":"uint256","nodeType":"ElementaryTypeName","src":"1863:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1835:42:54"},"returnParameters":{"id":7615,"nodeType":"ParameterList","parameters":[],"src":"1887:0:54"},"scope":7679,"src":"1815:277:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7677,"nodeType":"Block","src":"2343:104:54","statements":[{"assignments":[7661,null],"declarations":[{"constant":false,"id":7661,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7677,"src":"2354:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7660,"name":"bool","nodeType":"ElementaryTypeName","src":"2354:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":7671,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":7668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2404:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2394:9:54","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":7666,"name":"bytes","nodeType":"ElementaryTypeName","src":"2398:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":7669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2394:12:54","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":7662,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7655,"src":"2372:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2372:7:54","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":7664,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7657,"src":"2387:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2372:21:54","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":7670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2372:35:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2353:54:54"},{"expression":{"arguments":[{"id":7673,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7661,"src":"2425:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"535445","id":7674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2434:5:54","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":7672,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2417:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2417:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7676,"nodeType":"ExpressionStatement","src":"2417:23:54"}]},"documentation":{"id":7653,"nodeType":"StructuredDocumentation","src":"2098:179:54","text":"@notice Transfers AMB 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":7678,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferAMB","nodeType":"FunctionDefinition","parameters":{"id":7658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7655,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7678,"src":"2307:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7654,"name":"address","nodeType":"ElementaryTypeName","src":"2307:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7657,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7678,"src":"2319:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7656,"name":"uint256","nodeType":"ElementaryTypeName","src":"2319:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2306:27:54"},"returnParameters":{"id":7659,"nodeType":"ParameterList","parameters":[],"src":"2343:0:54"},"scope":7679,"src":"2282:165:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":7680,"src":"129:2320:54"}],"src":"45:2405:54"},"id":54},"contracts/test/MockTimeNonfungiblePositionManager.sol":{"ast":{"absolutePath":"contracts/test/MockTimeNonfungiblePositionManager.sol","exportedSymbols":{"Address":[3239],"BlockTimestamp":[5504],"CallbackValidation":[7039],"ChainId":[7051],"Context":[3262],"ERC165":[1362],"ERC721":[2751],"ERC721Permit":[5714],"EnumerableMap":[3822],"EnumerableSet":[4314],"FixedPoint128":[551],"FixedPoint96":[561],"FullMath":[734],"IAstraCLFactory":[82],"IAstraCLMintCallback":[124],"IAstraCLPool":[110],"IAstraCLPoolActions":[220],"IAstraCLPoolDerivedState":[251],"IAstraCLPoolEvents":[370],"IAstraCLPoolImmutables":[410],"IAstraCLPoolOwnerActions":[436],"IAstraCLPoolState":[544],"IERC1271":[6936],"IERC165":[1374],"IERC20":[1807],"IERC20Permit":[1305],"IERC20PermitAllowed":[6960],"IERC721":[2867],"IERC721Enumerable":[2898],"IERC721Metadata":[2925],"IERC721Permit":[6569],"IERC721Receiver":[2943],"IMulticall":[6584],"INonfungiblePositionManager":[6778],"INonfungibleTokenPositionDescriptor":[6793],"IPeripheryImmutableState":[6809],"IPeripheryPayments":[6835],"IPoolInitializer":[6854],"ISAMB":[6977],"ISelfPermit":[6922],"LiquidityAmounts":[7391],"LiquidityManagement":[5929],"MockTimeNonfungiblePositionManager":[7722],"Multicall":[6014],"NonfungiblePositionManager":[5490],"PeripheryImmutableState":[6045],"PeripheryPayments":[6255],"PeripheryValidation":[6275],"PoolAddress":[7483],"PoolInitializer":[6367],"PositionKey":[7508],"SafeMath":[1729],"SelfPermit":[6534],"Strings":[4401],"TickMath":[1269],"TransferHelper":[7679]},"id":7723,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":7681,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:55"},{"id":7682,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"63:19:55"},{"absolutePath":"contracts/NonfungiblePositionManager.sol","file":"../NonfungiblePositionManager.sol","id":7683,"nodeType":"ImportDirective","scope":7723,"sourceUnit":5491,"src":"84:43:55","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7684,"name":"NonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":5490,"src":"176:26:55","typeDescriptions":{"typeIdentifier":"t_contract$_NonfungiblePositionManager_$5490","typeString":"contract NonfungiblePositionManager"}},"id":7685,"nodeType":"InheritanceSpecifier","src":"176:26:55"}],"contractDependencies":[124,1362,1374,2751,2867,2898,2925,3262,5490,5504,5714,5929,6014,6045,6255,6275,6367,6534,6569,6584,6778,6809,6835,6854,6922],"contractKind":"contract","fullyImplemented":true,"id":7722,"linearizedBaseContracts":[7722,5490,6534,6922,6275,5929,6255,6367,6045,5714,6014,6584,6778,6569,2751,2898,2925,2867,1362,1374,6809,6835,124,6854,3262,5504],"name":"MockTimeNonfungiblePositionManager","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7687,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":7722,"src":"209:12:55","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7686,"name":"uint256","nodeType":"ElementaryTypeName","src":"209:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"body":{"id":7701,"nodeType":"Block","src":"391:2:55","statements":[]},"id":7702,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7696,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7689,"src":"356:8:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7697,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7691,"src":"366:5:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7698,"name":"_tokenDescriptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7693,"src":"373:16:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":7699,"modifierName":{"id":7695,"name":"NonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5490,"src":"329:26:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_NonfungiblePositionManager_$5490_$","typeString":"type(contract NonfungiblePositionManager)"}},"nodeType":"ModifierInvocation","src":"329:61:55"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7689,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":7702,"src":"249:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7688,"name":"address","nodeType":"ElementaryTypeName","src":"249:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7691,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":7702,"src":"275:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7690,"name":"address","nodeType":"ElementaryTypeName","src":"275:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7693,"mutability":"mutable","name":"_tokenDescriptor","nodeType":"VariableDeclaration","scope":7702,"src":"298:24:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7692,"name":"address","nodeType":"ElementaryTypeName","src":"298:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"239:89:55"},"returnParameters":{"id":7700,"nodeType":"ParameterList","parameters":[],"src":"391:0:55"},"scope":7722,"src":"228:165:55","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[5503],"body":{"id":7710,"nodeType":"Block","src":"467:28:55","statements":[{"expression":{"id":7708,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7687,"src":"484:4:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7707,"id":7709,"nodeType":"Return","src":"477:11:55"}]},"id":7711,"implemented":true,"kind":"function","modifiers":[],"name":"_blockTimestamp","nodeType":"FunctionDefinition","overrides":{"id":7704,"nodeType":"OverrideSpecifier","overrides":[],"src":"440:8:55"},"parameters":{"id":7703,"nodeType":"ParameterList","parameters":[],"src":"423:2:55"},"returnParameters":{"id":7707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7706,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7711,"src":"458:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7705,"name":"uint256","nodeType":"ElementaryTypeName","src":"458:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"457:9:55"},"scope":7722,"src":"399:96:55","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7720,"nodeType":"Block","src":"542:29:55","statements":[{"expression":{"id":7718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7716,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7687,"src":"552:4:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7717,"name":"_time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"559:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"552:12:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7719,"nodeType":"ExpressionStatement","src":"552:12:55"}]},"functionSelector":"3beb26c4","id":7721,"implemented":true,"kind":"function","modifiers":[],"name":"setTime","nodeType":"FunctionDefinition","parameters":{"id":7714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7713,"mutability":"mutable","name":"_time","nodeType":"VariableDeclaration","scope":7721,"src":"518:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7712,"name":"uint256","nodeType":"ElementaryTypeName","src":"518:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"517:15:55"},"returnParameters":{"id":7715,"nodeType":"ParameterList","parameters":[],"src":"542:0:55"},"scope":7722,"src":"501:70:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7723,"src":"129:444:55"}],"src":"39:535:55"},"id":55}},"contracts":{"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol":{"IAstraCLFactory":{"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":"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","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\":\"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\"}},\"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 Astra CL 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\"},\"owner()\":{\"notice\":\"Returns the current owner of the factory\"},\"setOwner(address)\":{\"notice\":\"Updates the owner of the factory\"}},\"notice\":\"The Astra CL Factory facilitates creation of Astra CL pools and control over the protocol fees\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":\"IAstraCLFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":{\"keccak256\":\"0x380f33c6cac2893f4e290a3c1a63f9f0bb9d42aff4a74c9b0fe9eebceb5721c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4cfd26554cf5fd3f7391e73ba4559fb1df2b8f3028c7f27d694b698250371c6c\",\"dweb:/ipfs/QmepfyejMAZbpJETuMC9naUwXLVihfXLXvCQsyMwYq1hy6\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol":{"IAstraCLPool":{"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":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":"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"}],"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[]"}],"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":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","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"}],"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"}],"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(uint160)":"f637731d","liquidity()":"1a686502","maxLiquidityPerTick()":"70cf754a","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","observations(uint256)":"252c09d7","observe(uint32[])":"883bdbfd","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","setFeeProtocol(uint8,uint8)":"8206a4d1","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\":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\":\"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\"}],\"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[]\"}],\"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\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"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\"}],\"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\"}],\"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 IAstraCLFlashCallback.sol#astraCLFlashCallbackCan 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\"}},\"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 IAstraCLMintCallback.sol#astraCLMintCallback 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\"}},\"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\"},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"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 IAstraCLSwapCallback.sol#astraCLSwapCallback\",\"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 Astra CL 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\"},\"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 IAstraCLFactory 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(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\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"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\":\"An Astra pool facilitates swapping and automated market making between any two assets that strictly conform to the ERC20 specification\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":\"IAstraCLPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol":{"IAstraCLMintCallback":{"abi":[{"inputs":[{"internalType":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"astraCLMintCallback(uint256,uint256,bytes)":"4cb42d2d"}},"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\":\"astraCLMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLMintCallback(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 AstraCLPool deployed by the canonical AstraCLFactory.\",\"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 IAstraCLPoolActions#mint call\"}}},\"title\":\"Callback for IAstraCLPoolActions#mint\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IAstraCLPool#mint.\"}},\"notice\":\"Any contract that calls IAstraCLPoolActions#mint must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol\":\"IAstraCLMintCallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol\":{\"keccak256\":\"0x85fb78c4f58adb7d5f6e37a1657cd94a050815c7e1ddbbcf8364062cb38b515c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bce55c098b04edf1f75fedeba5ff323eac20e546ff7f8041d13aba9a3c7188e\",\"dweb:/ipfs/QmXFrKKyPhyvLdyyWRcafSMF6zD3tRjkPcVuPzZ7NU69E4\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol":{"IAstraCLPoolActions":{"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 IAstraCLFlashCallback.sol#astraCLFlashCallbackCan 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 IAstraCLMintCallback.sol#astraCLMintCallback 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 IAstraCLSwapCallback.sol#astraCLSwapCallback\",\"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\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":\"IAstraCLPoolActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol":{"IAstraCLPoolDerivedState":{"abi":[{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"}],"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"}],"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[]\"}],\"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\"}],\"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\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":\"IAstraCLPoolDerivedState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol":{"IAstraCLPoolEvents":{"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":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\":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\"}},\"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\"},\"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\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":\"IAstraCLPoolEvents\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol":{"IAstraCLPoolImmutables":{"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 IAstraCLFactory 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\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":\"IAstraCLPoolImmutables\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol":{"IAstraCLPoolOwnerActions":{"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":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","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","setFeeProtocol(uint8,uint8)":"8206a4d1"}},"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\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"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\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}}},\"title\":\"Permissioned pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"}},\"notice\":\"Contains pool methods that may only be called by the factory owner\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":\"IAstraCLPoolOwnerActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol":{"IAstraCLPoolState":{"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"}],"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":"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"}],"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","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\"}],\"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\":\"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\"}],\"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\"}},\"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\"},\"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\"},\"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\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":\"IAstraCLPoolState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol":{"FixedPoint128":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"211:99:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"211:99: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\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol\":\"FixedPoint128\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x2d1f4f73ae0d8f0a210b8d30084659b57c56ac8f2f96011fca36f00a6d417178\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2ba88933f16cd2df398e19c6ad227268f83c03081b70d243c97116d2ed9bc241\",\"dweb:/ipfs/QmTUGxdh8snzEM9VrTSS47StCg9VVWvvLJtJeNnMTFY4xb\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol":{"FixedPoint96":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"245:134:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"245:134: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\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":\"FixedPoint96\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/FullMath.sol":{"FullMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"362:4702:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"362:4702: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\":{\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":\"FullMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/TickMath.sol":{"TickMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"313:8387:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"313:8387: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\":{\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":\"TickMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]}},\"version\":1}"}},"@openzeppelin/contracts/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/drafts/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]}},\"version\":1}"}},"@openzeppelin/contracts/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/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]}},\"version\":1}"}},"@openzeppelin/contracts/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/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]}},\"version\":1}"}},"@openzeppelin/contracts/math/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"622:6594:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"622:6594:16:-: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/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"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/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"@openzeppelin/contracts/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":"60806040523480156200001157600080fd5b5060405162001de338038062001de3833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250620001b391506301ffc9a760e01b90506200021d565b8151620001c8906006906020850190620002a2565b508051620001de906007906020840190620002a2565b50620001f16380ac58cd60e01b6200021d565b62000203635b5e139f60e01b6200021d565b6200021563780e9d6360e01b6200021d565b50506200034e565b6001600160e01b031980821614156200027d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002da576000855562000325565b82601f10620002f557805160ff191683800117855562000325565b8280016001018555821562000325579182015b828111156200032557825182559160200191906001019062000308565b506200033392915062000337565b5090565b5b8082111562000333576000815560010162000338565b611a85806200035e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde146103a7578063c87b56dd1461046d578063e985e9c51461048a5761011b565b806395d89b4114610371578063a22cb465146103795761011b565b80634f6ccce7146103095780636352211e146103265780636c0360eb1461034357806370a082311461034b5761011b565b806318160ddd116100ee57806318160ddd1461025757806323b872dd146102715780632f745c59146102a757806342842e0e146102d35761011b565b806301ffc9a71461012057806306fdde0314610173578063081812fc146101f0578063095ea7b314610229575b600080fd5b61015f6004803603602081101561013657600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166104b8565b604080519115158252519081900360200190f35b61017b6104f3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b557818101518382015260200161019d565b50505050905090810190601f1680156101e25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020d6004803603602081101561020657600080fd5b5035610589565b604080516001600160a01b039092168252519081900360200190f35b6102556004803603604081101561023f57600080fd5b506001600160a01b0381351690602001356105eb565b005b61025f6106c6565b60408051918252519081900360200190f35b6102556004803603606081101561028757600080fd5b506001600160a01b038135811691602081013590911690604001356106d7565b61025f600480360360408110156102bd57600080fd5b506001600160a01b03813516906020013561072e565b610255600480360360608110156102e957600080fd5b506001600160a01b03813581169160208101359091169060400135610759565b61025f6004803603602081101561031f57600080fd5b5035610774565b61020d6004803603602081101561033c57600080fd5b503561078a565b61017b6107b2565b61025f6004803603602081101561036157600080fd5b50356001600160a01b0316610813565b61017b61087b565b6102556004803603604081101561038f57600080fd5b506001600160a01b03813516906020013515156108dc565b610255600480360360808110156103bd57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103f857600080fd5b82018360208201111561040a57600080fd5b8035906020019184600183028401116401000000008311171561042c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109ff945050505050565b61017b6004803603602081101561048357600080fd5b5035610a5d565b61015f600480360360408110156104a057600080fd5b506001600160a01b0381358116916020013516610cde565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905090565b600061059482610d0c565b6105cf5760405162461bcd60e51b815260040180806020018281038252602c8152602001806119a3602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105f68261078a565b9050806001600160a01b0316836001600160a01b031614156106495760405162461bcd60e51b8152600401808060200182810382526021815260200180611a276021913960400191505060405180910390fd5b806001600160a01b031661065b610d19565b6001600160a01b0316148061067c575061067c81610677610d19565b610cde565b6106b75760405162461bcd60e51b81526004018080602001828103825260388152602001806118f66038913960400191505060405180910390fd5b6106c18383610d1d565b505050565b60006106d26002610da3565b905090565b6106e86106e2610d19565b82610dae565b6107235760405162461bcd60e51b8152600401808060200182810382526031815260200180611a486031913960400191505060405180910390fd5b6106c1838383610e52565b6001600160a01b03821660009081526001602052604081206107509083610f9e565b90505b92915050565b6106c1838383604051806020016040528060008152506109ff565b600080610782600284610faa565b509392505050565b6000610753826040518060600160405280602981526020016119586029913960029190610fc6565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561057f5780601f106105545761010080835404028352916020019161057f565b60006001600160a01b03821661085a5760405162461bcd60e51b815260040180806020018281038252602a81526020018061192e602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061075390610da3565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561057f5780601f106105545761010080835404028352916020019161057f565b6108e4610d19565b6001600160a01b0316826001600160a01b0316141561094a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610957610d19565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092179091556109b9610d19565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b610a10610a0a610d19565b83610dae565b610a4b5760405162461bcd60e51b8152600401808060200182810382526031815260200180611a486031913960400191505060405180910390fd5b610a5784848484610fdd565b50505050565b6060610a6882610d0c565b610aa35760405162461bcd60e51b815260040180806020018281038252602f8152602001806119f8602f913960400191505060405180910390fd5b60008281526008602090815260408083208054825160026001831615610100026000190190921691909104601f810185900485028201850190935282815292909190830182828015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b505050505090506000610b476107b2565b9050805160001415610b5b575090506104ee565b815115610c1c5780826040516020018083805190602001908083835b60208310610b965780518252601f199092019160209182019101610b77565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610bde5780518252601f199092019160209182019101610bbf565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ee565b80610c268561102f565b6040516020018083805190602001908083835b60208310610c585780518252601f199092019160209182019101610c39565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610ca05780518252601f199092019160209182019101610c81565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061075360028361113e565b3390565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190610d6a8261078a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006107538261114a565b6000610db982610d0c565b610df45760405162461bcd60e51b815260040180806020018281038252602c8152602001806118ca602c913960400191505060405180910390fd5b6000610dff8361078a565b9050806001600160a01b0316846001600160a01b03161480610e3a5750836001600160a01b0316610e2f84610589565b6001600160a01b0316145b80610e4a5750610e4a8185610cde565b949350505050565b826001600160a01b0316610e658261078a565b6001600160a01b031614610eaa5760405162461bcd60e51b81526004018080602001828103825260298152602001806119cf6029913960400191505060405180910390fd5b6001600160a01b038216610eef5760405162461bcd60e51b81526004018080602001828103825260248152602001806118a66024913960400191505060405180910390fd5b610efa8383836106c1565b610f05600082610d1d565b6001600160a01b0383166000908152600160205260409020610f27908261114e565b506001600160a01b0382166000908152600160205260409020610f4a908261115a565b50610f5760028284611166565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610750838361117c565b6000808080610fb986866111e0565b9097909650945050505050565b6000610fd384848461125b565b90505b9392505050565b610fe8848484610e52565b610ff484848484611325565b610a575760405162461bcd60e51b81526004018080602001828103825260328152602001806118746032913960400191505060405180910390fd5b606081611070575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526104ee565b8160005b811561108857600101600a82049150611074565b60008167ffffffffffffffff811180156110a157600080fd5b506040519080825280601f01601f1916602001820160405280156110cc576020820181803683370190505b50859350905060001982015b831561113557600a840660300160f81b828280600190039350815181106110fb57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506110d8565b50949350505050565b60006107508383611501565b5490565b60006107508383611519565b600061075083836115df565b6000610fd384846001600160a01b038516611629565b815460009082106111be5760405162461bcd60e51b81526004018080602001828103825260228152602001806118526022913960400191505060405180910390fd5b8260000182815481106111cd57fe5b9060005260206000200154905092915050565b8154600090819083106112245760405162461bcd60e51b81526004018080602001828103825260228152602001806119816022913960400191505060405180910390fd5b600084600001848154811061123557fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816112f65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112bb5781810151838201526020016112a3565b50505050905090810190601f1680156112e85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061130957fe5b9060005260206000209060020201600101549150509392505050565b6000611339846001600160a01b03166116c0565b61134557506001610e4a565b60006114967f150b7a0200000000000000000000000000000000000000000000000000000000611373610d19565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113da5781810151838201526020016113c2565b50505050905090810190601f1680156114075780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001611874603291396001600160a01b03881691906116c6565b905060008180602001905160208110156114af57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156115d5578354600019808301919081019060009087908390811061154c57fe5b906000526020600020015490508087600001848154811061156957fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061159957fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610753565b6000915050610753565b60006115eb8383611501565b61162157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610753565b506000610753565b60008281526001840160205260408120548061168e575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610fd6565b828560000160018303815481106116a157fe5b9060005260206000209060020201600101819055506000915050610fd6565b3b151590565b6060610fd38484600085856116da856116c0565b61172b576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106117695780518252601f19909201916020918201910161174a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146117cb576040519150601f19603f3d011682016040523d82523d6000602084013e6117d0565b606091505b50915091506117e08282866117eb565b979650505050505050565b606083156117fa575081610fd6565b82511561180a5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156112bb5781810151838201526020016112a356fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1DE3 CODESIZE SUB DUP1 PUSH3 0x1DE3 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 0x1A85 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 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x46D JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x48A JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x379 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x34B JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x257 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x2D3 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x173 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x229 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x4B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17B PUSH2 0x4F3 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 0x1B5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1E2 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 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x589 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 0x255 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25F PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x255 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x287 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 0x6D7 JUMP JUMPDEST PUSH2 0x25F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x72E JUMP JUMPDEST PUSH2 0x255 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2E9 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 0x759 JUMP JUMPDEST PUSH2 0x25F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x774 JUMP JUMPDEST PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x78A JUMP JUMPDEST PUSH2 0x17B PUSH2 0x7B2 JUMP JUMPDEST PUSH2 0x25F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x813 JUMP JUMPDEST PUSH2 0x17B PUSH2 0x87B JUMP JUMPDEST PUSH2 0x255 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x38F 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 0x8DC JUMP JUMPDEST PUSH2 0x255 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3BD 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 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x42C 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 0x9FF SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA5D JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4A0 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 0xCDE JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 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 0x57F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x554 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57F 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 0x562 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x594 DUP3 PUSH2 0xD0C JUMP JUMPDEST PUSH2 0x5CF 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 0x19A3 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 0x5F6 DUP3 PUSH2 0x78A 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 0x649 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 0x1A27 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 0x65B PUSH2 0xD19 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x67C JUMPI POP PUSH2 0x67C DUP2 PUSH2 0x677 PUSH2 0xD19 JUMP JUMPDEST PUSH2 0xCDE JUMP JUMPDEST PUSH2 0x6B7 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 0x18F6 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6C1 DUP4 DUP4 PUSH2 0xD1D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D2 PUSH1 0x2 PUSH2 0xDA3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6E8 PUSH2 0x6E2 PUSH2 0xD19 JUMP JUMPDEST DUP3 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x723 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 0x1A48 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6C1 DUP4 DUP4 DUP4 PUSH2 0xE52 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 0x750 SWAP1 DUP4 PUSH2 0xF9E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6C1 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x782 PUSH1 0x2 DUP5 PUSH2 0xFAA JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x753 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1958 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xFC6 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 0x57F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x554 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x85A 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 0x192E 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 0x753 SWAP1 PUSH2 0xDA3 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 0x57F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x554 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57F JUMP JUMPDEST PUSH2 0x8E4 PUSH2 0xD19 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x94A 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 PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x957 PUSH2 0xD19 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 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x9B9 PUSH2 0xD19 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 0xA10 PUSH2 0xA0A PUSH2 0xD19 JUMP JUMPDEST DUP4 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0xA4B 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 0x1A48 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA57 DUP5 DUP5 DUP5 DUP5 PUSH2 0xFDD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA68 DUP3 PUSH2 0xD0C JUMP JUMPDEST PUSH2 0xAA3 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 0x19F8 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 0xB36 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB0B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB36 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 0xB19 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xB47 PUSH2 0x7B2 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xB5B JUMPI POP SWAP1 POP PUSH2 0x4EE JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xC1C 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 0xB96 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB77 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 0xBDE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBBF 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 0x4EE JUMP JUMPDEST DUP1 PUSH2 0xC26 DUP6 PUSH2 0x102F 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 0xC58 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC39 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 0xCA0 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC81 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 0x753 PUSH1 0x2 DUP4 PUSH2 0x113E JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xD6A DUP3 PUSH2 0x78A 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 0x753 DUP3 PUSH2 0x114A JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB9 DUP3 PUSH2 0xD0C JUMP JUMPDEST PUSH2 0xDF4 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 0x18CA PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDFF DUP4 PUSH2 0x78A 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 0xE3A JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE2F DUP5 PUSH2 0x589 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0xE4A JUMPI POP PUSH2 0xE4A DUP2 DUP6 PUSH2 0xCDE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE65 DUP3 PUSH2 0x78A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEAA 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 0x19CF 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 0xEEF 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 0x18A6 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEFA DUP4 DUP4 DUP4 PUSH2 0x6C1 JUMP JUMPDEST PUSH2 0xF05 PUSH1 0x0 DUP3 PUSH2 0xD1D 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 0xF27 SWAP1 DUP3 PUSH2 0x114E 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 0xF4A SWAP1 DUP3 PUSH2 0x115A JUMP JUMPDEST POP PUSH2 0xF57 PUSH1 0x2 DUP3 DUP5 PUSH2 0x1166 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 0x750 DUP4 DUP4 PUSH2 0x117C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xFB9 DUP7 DUP7 PUSH2 0x11E0 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFD3 DUP5 DUP5 DUP5 PUSH2 0x125B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFE8 DUP5 DUP5 DUP5 PUSH2 0xE52 JUMP JUMPDEST PUSH2 0xFF4 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1325 JUMP JUMPDEST PUSH2 0xA57 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 0x1874 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x1070 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x4EE JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1088 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x1074 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x10A1 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 0x10CC 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 0x1135 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 0x10FB JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x10D8 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 DUP4 DUP4 PUSH2 0x1501 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 DUP4 DUP4 PUSH2 0x1519 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 DUP4 DUP4 PUSH2 0x15DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFD3 DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x1629 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x11BE 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 0x1852 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 0x11CD 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 0x1224 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 0x1981 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 0x1235 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 0x12F6 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 0x12BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12A3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12E8 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 0x1309 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 0x1339 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16C0 JUMP JUMPDEST PUSH2 0x1345 JUMPI POP PUSH1 0x1 PUSH2 0xE4A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1496 PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x1373 PUSH2 0xD19 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 0x13DA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13C2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1407 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x1874 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x16C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 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 0x15D5 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x154C 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 0x1569 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 0x1599 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 0x753 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x753 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15EB DUP4 DUP4 PUSH2 0x1501 JUMP JUMPDEST PUSH2 0x1621 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 0x753 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x753 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x168E 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 0xFD6 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x16A1 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 0xFD6 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xFD3 DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x16DA DUP6 PUSH2 0x16C0 JUMP JUMPDEST PUSH2 0x172B 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 0x1769 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x174A 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 0x17CB 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 0x17D0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x17E0 DUP3 DUP3 DUP7 PUSH2 0x17EB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x17FA JUMPI POP DUP2 PUSH2 0xFD6 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x180A 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 0x12BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12A3 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 0xA164736F6C PUSH4 0x43000706 STOP EXP ","sourceMap":"563:16527:18:-:0;;;3569:362;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:18;;;;;;;;;;-1:-1:-1;3569:362:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:18;;;;;;;;;;-1:-1:-1;3569:362:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:18;;-1:-1:-1;751:40:14;;-1:-1:-1;;;;770:20:14;-1:-1:-1;751:18:14;:40::i;:::-;3636:13:18;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3659:17:18;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3764:40:18;-1:-1:-1;;;3764:18:18;:40::i;:::-;3814:49;-1:-1:-1;;;3814:18:18;:49::i;:::-;3873:51;-1:-1:-1;;;3873:18:18;:51::i;:::-;3569:362;;563:16527;;1490:198:14;-1:-1:-1;;;;;;1573:25:14;;;;;1565:66;;;;;-1:-1:-1;;;1565:66:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1641:33:14;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1641:40:14;1677:4;1641:40;;;1490:198::o;563:16527:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;563:16527:18;;;-1:-1:-1;563:16527:18;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde146103a7578063c87b56dd1461046d578063e985e9c51461048a5761011b565b806395d89b4114610371578063a22cb465146103795761011b565b80634f6ccce7146103095780636352211e146103265780636c0360eb1461034357806370a082311461034b5761011b565b806318160ddd116100ee57806318160ddd1461025757806323b872dd146102715780632f745c59146102a757806342842e0e146102d35761011b565b806301ffc9a71461012057806306fdde0314610173578063081812fc146101f0578063095ea7b314610229575b600080fd5b61015f6004803603602081101561013657600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166104b8565b604080519115158252519081900360200190f35b61017b6104f3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b557818101518382015260200161019d565b50505050905090810190601f1680156101e25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020d6004803603602081101561020657600080fd5b5035610589565b604080516001600160a01b039092168252519081900360200190f35b6102556004803603604081101561023f57600080fd5b506001600160a01b0381351690602001356105eb565b005b61025f6106c6565b60408051918252519081900360200190f35b6102556004803603606081101561028757600080fd5b506001600160a01b038135811691602081013590911690604001356106d7565b61025f600480360360408110156102bd57600080fd5b506001600160a01b03813516906020013561072e565b610255600480360360608110156102e957600080fd5b506001600160a01b03813581169160208101359091169060400135610759565b61025f6004803603602081101561031f57600080fd5b5035610774565b61020d6004803603602081101561033c57600080fd5b503561078a565b61017b6107b2565b61025f6004803603602081101561036157600080fd5b50356001600160a01b0316610813565b61017b61087b565b6102556004803603604081101561038f57600080fd5b506001600160a01b03813516906020013515156108dc565b610255600480360360808110156103bd57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103f857600080fd5b82018360208201111561040a57600080fd5b8035906020019184600183028401116401000000008311171561042c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109ff945050505050565b61017b6004803603602081101561048357600080fd5b5035610a5d565b61015f600480360360408110156104a057600080fd5b506001600160a01b0381358116916020013516610cde565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905090565b600061059482610d0c565b6105cf5760405162461bcd60e51b815260040180806020018281038252602c8152602001806119a3602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105f68261078a565b9050806001600160a01b0316836001600160a01b031614156106495760405162461bcd60e51b8152600401808060200182810382526021815260200180611a276021913960400191505060405180910390fd5b806001600160a01b031661065b610d19565b6001600160a01b0316148061067c575061067c81610677610d19565b610cde565b6106b75760405162461bcd60e51b81526004018080602001828103825260388152602001806118f66038913960400191505060405180910390fd5b6106c18383610d1d565b505050565b60006106d26002610da3565b905090565b6106e86106e2610d19565b82610dae565b6107235760405162461bcd60e51b8152600401808060200182810382526031815260200180611a486031913960400191505060405180910390fd5b6106c1838383610e52565b6001600160a01b03821660009081526001602052604081206107509083610f9e565b90505b92915050565b6106c1838383604051806020016040528060008152506109ff565b600080610782600284610faa565b509392505050565b6000610753826040518060600160405280602981526020016119586029913960029190610fc6565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561057f5780601f106105545761010080835404028352916020019161057f565b60006001600160a01b03821661085a5760405162461bcd60e51b815260040180806020018281038252602a81526020018061192e602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061075390610da3565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561057f5780601f106105545761010080835404028352916020019161057f565b6108e4610d19565b6001600160a01b0316826001600160a01b0316141561094a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610957610d19565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092179091556109b9610d19565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b610a10610a0a610d19565b83610dae565b610a4b5760405162461bcd60e51b8152600401808060200182810382526031815260200180611a486031913960400191505060405180910390fd5b610a5784848484610fdd565b50505050565b6060610a6882610d0c565b610aa35760405162461bcd60e51b815260040180806020018281038252602f8152602001806119f8602f913960400191505060405180910390fd5b60008281526008602090815260408083208054825160026001831615610100026000190190921691909104601f810185900485028201850190935282815292909190830182828015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b505050505090506000610b476107b2565b9050805160001415610b5b575090506104ee565b815115610c1c5780826040516020018083805190602001908083835b60208310610b965780518252601f199092019160209182019101610b77565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610bde5780518252601f199092019160209182019101610bbf565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ee565b80610c268561102f565b6040516020018083805190602001908083835b60208310610c585780518252601f199092019160209182019101610c39565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610ca05780518252601f199092019160209182019101610c81565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061075360028361113e565b3390565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190610d6a8261078a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006107538261114a565b6000610db982610d0c565b610df45760405162461bcd60e51b815260040180806020018281038252602c8152602001806118ca602c913960400191505060405180910390fd5b6000610dff8361078a565b9050806001600160a01b0316846001600160a01b03161480610e3a5750836001600160a01b0316610e2f84610589565b6001600160a01b0316145b80610e4a5750610e4a8185610cde565b949350505050565b826001600160a01b0316610e658261078a565b6001600160a01b031614610eaa5760405162461bcd60e51b81526004018080602001828103825260298152602001806119cf6029913960400191505060405180910390fd5b6001600160a01b038216610eef5760405162461bcd60e51b81526004018080602001828103825260248152602001806118a66024913960400191505060405180910390fd5b610efa8383836106c1565b610f05600082610d1d565b6001600160a01b0383166000908152600160205260409020610f27908261114e565b506001600160a01b0382166000908152600160205260409020610f4a908261115a565b50610f5760028284611166565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610750838361117c565b6000808080610fb986866111e0565b9097909650945050505050565b6000610fd384848461125b565b90505b9392505050565b610fe8848484610e52565b610ff484848484611325565b610a575760405162461bcd60e51b81526004018080602001828103825260328152602001806118746032913960400191505060405180910390fd5b606081611070575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526104ee565b8160005b811561108857600101600a82049150611074565b60008167ffffffffffffffff811180156110a157600080fd5b506040519080825280601f01601f1916602001820160405280156110cc576020820181803683370190505b50859350905060001982015b831561113557600a840660300160f81b828280600190039350815181106110fb57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506110d8565b50949350505050565b60006107508383611501565b5490565b60006107508383611519565b600061075083836115df565b6000610fd384846001600160a01b038516611629565b815460009082106111be5760405162461bcd60e51b81526004018080602001828103825260228152602001806118526022913960400191505060405180910390fd5b8260000182815481106111cd57fe5b9060005260206000200154905092915050565b8154600090819083106112245760405162461bcd60e51b81526004018080602001828103825260228152602001806119816022913960400191505060405180910390fd5b600084600001848154811061123557fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816112f65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112bb5781810151838201526020016112a3565b50505050905090810190601f1680156112e85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061130957fe5b9060005260206000209060020201600101549150509392505050565b6000611339846001600160a01b03166116c0565b61134557506001610e4a565b60006114967f150b7a0200000000000000000000000000000000000000000000000000000000611373610d19565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113da5781810151838201526020016113c2565b50505050905090810190601f1680156114075780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001611874603291396001600160a01b03881691906116c6565b905060008180602001905160208110156114af57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156115d5578354600019808301919081019060009087908390811061154c57fe5b906000526020600020015490508087600001848154811061156957fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061159957fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610753565b6000915050610753565b60006115eb8383611501565b61162157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610753565b506000610753565b60008281526001840160205260408120548061168e575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610fd6565b828560000160018303815481106116a157fe5b9060005260206000209060020201600101819055506000915050610fd6565b3b151590565b6060610fd38484600085856116da856116c0565b61172b576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106117695780518252601f19909201916020918201910161174a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146117cb576040519150601f19603f3d011682016040523d82523d6000602084013e6117d0565b606091505b50915091506117e08282866117eb565b979650505050505050565b606083156117fa575081610fd6565b82511561180a5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156112bb5781810151838201526020016112a356fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x46D JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x48A JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x379 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x34B JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x257 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x2D3 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x173 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x229 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x4B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17B PUSH2 0x4F3 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 0x1B5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1E2 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 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x589 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 0x255 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25F PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x255 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x287 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 0x6D7 JUMP JUMPDEST PUSH2 0x25F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x72E JUMP JUMPDEST PUSH2 0x255 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2E9 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 0x759 JUMP JUMPDEST PUSH2 0x25F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x774 JUMP JUMPDEST PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x78A JUMP JUMPDEST PUSH2 0x17B PUSH2 0x7B2 JUMP JUMPDEST PUSH2 0x25F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x813 JUMP JUMPDEST PUSH2 0x17B PUSH2 0x87B JUMP JUMPDEST PUSH2 0x255 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x38F 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 0x8DC JUMP JUMPDEST PUSH2 0x255 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3BD 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 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x42C 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 0x9FF SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA5D JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4A0 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 0xCDE JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 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 0x57F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x554 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57F 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 0x562 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x594 DUP3 PUSH2 0xD0C JUMP JUMPDEST PUSH2 0x5CF 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 0x19A3 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 0x5F6 DUP3 PUSH2 0x78A 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 0x649 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 0x1A27 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 0x65B PUSH2 0xD19 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x67C JUMPI POP PUSH2 0x67C DUP2 PUSH2 0x677 PUSH2 0xD19 JUMP JUMPDEST PUSH2 0xCDE JUMP JUMPDEST PUSH2 0x6B7 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 0x18F6 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6C1 DUP4 DUP4 PUSH2 0xD1D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D2 PUSH1 0x2 PUSH2 0xDA3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6E8 PUSH2 0x6E2 PUSH2 0xD19 JUMP JUMPDEST DUP3 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x723 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 0x1A48 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6C1 DUP4 DUP4 DUP4 PUSH2 0xE52 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 0x750 SWAP1 DUP4 PUSH2 0xF9E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6C1 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x782 PUSH1 0x2 DUP5 PUSH2 0xFAA JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x753 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1958 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xFC6 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 0x57F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x554 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x85A 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 0x192E 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 0x753 SWAP1 PUSH2 0xDA3 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 0x57F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x554 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57F JUMP JUMPDEST PUSH2 0x8E4 PUSH2 0xD19 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x94A 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 PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x957 PUSH2 0xD19 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 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x9B9 PUSH2 0xD19 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 0xA10 PUSH2 0xA0A PUSH2 0xD19 JUMP JUMPDEST DUP4 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0xA4B 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 0x1A48 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA57 DUP5 DUP5 DUP5 DUP5 PUSH2 0xFDD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA68 DUP3 PUSH2 0xD0C JUMP JUMPDEST PUSH2 0xAA3 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 0x19F8 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 0xB36 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB0B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB36 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 0xB19 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xB47 PUSH2 0x7B2 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xB5B JUMPI POP SWAP1 POP PUSH2 0x4EE JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xC1C 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 0xB96 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB77 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 0xBDE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBBF 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 0x4EE JUMP JUMPDEST DUP1 PUSH2 0xC26 DUP6 PUSH2 0x102F 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 0xC58 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC39 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 0xCA0 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC81 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 0x753 PUSH1 0x2 DUP4 PUSH2 0x113E JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xD6A DUP3 PUSH2 0x78A 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 0x753 DUP3 PUSH2 0x114A JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB9 DUP3 PUSH2 0xD0C JUMP JUMPDEST PUSH2 0xDF4 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 0x18CA PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDFF DUP4 PUSH2 0x78A 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 0xE3A JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE2F DUP5 PUSH2 0x589 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0xE4A JUMPI POP PUSH2 0xE4A DUP2 DUP6 PUSH2 0xCDE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE65 DUP3 PUSH2 0x78A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEAA 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 0x19CF 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 0xEEF 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 0x18A6 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEFA DUP4 DUP4 DUP4 PUSH2 0x6C1 JUMP JUMPDEST PUSH2 0xF05 PUSH1 0x0 DUP3 PUSH2 0xD1D 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 0xF27 SWAP1 DUP3 PUSH2 0x114E 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 0xF4A SWAP1 DUP3 PUSH2 0x115A JUMP JUMPDEST POP PUSH2 0xF57 PUSH1 0x2 DUP3 DUP5 PUSH2 0x1166 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 0x750 DUP4 DUP4 PUSH2 0x117C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xFB9 DUP7 DUP7 PUSH2 0x11E0 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFD3 DUP5 DUP5 DUP5 PUSH2 0x125B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFE8 DUP5 DUP5 DUP5 PUSH2 0xE52 JUMP JUMPDEST PUSH2 0xFF4 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1325 JUMP JUMPDEST PUSH2 0xA57 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 0x1874 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x1070 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x4EE JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1088 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x1074 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x10A1 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 0x10CC 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 0x1135 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 0x10FB JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x10D8 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 DUP4 DUP4 PUSH2 0x1501 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 DUP4 DUP4 PUSH2 0x1519 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 DUP4 DUP4 PUSH2 0x15DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFD3 DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x1629 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x11BE 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 0x1852 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 0x11CD 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 0x1224 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 0x1981 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 0x1235 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 0x12F6 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 0x12BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12A3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12E8 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 0x1309 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 0x1339 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16C0 JUMP JUMPDEST PUSH2 0x1345 JUMPI POP PUSH1 0x1 PUSH2 0xE4A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1496 PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x1373 PUSH2 0xD19 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 0x13DA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13C2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1407 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x1874 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x16C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 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 0x15D5 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x154C 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 0x1569 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 0x1599 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 0x753 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x753 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15EB DUP4 DUP4 PUSH2 0x1501 JUMP JUMPDEST PUSH2 0x1621 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 0x753 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x753 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x168E 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 0xFD6 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x16A1 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 0xFD6 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xFD3 DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x16DA DUP6 PUSH2 0x16C0 JUMP JUMPDEST PUSH2 0x172B 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 0x1769 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x174A 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 0x17CB 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 0x17D0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x17E0 DUP3 DUP3 DUP7 PUSH2 0x17EB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x17FA JUMPI POP DUP2 PUSH2 0xFD6 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x180A 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 0x12BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12A3 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 0xA164736F6C PUSH4 0x43000706 STOP EXP ","sourceMap":"563:16527:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:148:14;;;;;;;;;;;;;;;;-1:-1:-1;948:148:14;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4502:98:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7207:217;;;;;;;;;;;;;;;;-1:-1:-1;7207:217:18;;:::i;:::-;;;;-1:-1:-1;;;;;7207:217:18;;;;;;;;;;;;;;6751:395;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6751:395:18;;;;;;;;:::i;:::-;;6245:208;;;:::i;:::-;;;;;;;;;;;;;;;;8071:300;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8071:300:18;;;;;;;;;;;;;;;;;:::i;6014:160::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6014:160:18;;;;;;;;:::i;8437:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8437:149:18;;;;;;;;;;;;;;;;;:::i;6525:169::-;;;;;;;;;;;;;;;;-1:-1:-1;6525:169:18;;:::i;4265:175::-;;;;;;;;;;;;;;;;-1:-1:-1;4265:175:18;;:::i;5840:95::-;;;:::i;3990:218::-;;;;;;;;;;;;;;;;-1:-1:-1;3990:218:18;-1:-1:-1;;;;;3990:218:18;;:::i;4664:102::-;;;:::i;7491:290::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7491:290:18;;;;;;;;;;:::i;8652:282::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8652:282:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8652:282:18;;-1:-1:-1;8652:282:18;;-1:-1:-1;;;;;8652:282:18:i;4832:776::-;;;;;;;;;;;;;;;;-1:-1:-1;4832:776:18;;:::i;7847:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7847:162:18;;;;;;;;;;:::i;948:148:14:-;1056:33;;;1033:4;1056:33;;;;;;;;;;;;;948:148;;;;:::o;4502:98:18:-;4588:5;4581:12;;;;;;;;-1:-1:-1;;4581:12:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7393:24:18;;;;:15;:24;;;;;;-1:-1:-1;;;;;7393:24:18;;7207:217::o;6751:395::-;6831:13;6847:23;6862:7;6847:14;:23::i;:::-;6831:39;;6894:5;-1:-1:-1;;;;;6888:11:18;:2;-1:-1:-1;;;;;6888:11:18;;;6880:57;;;;-1:-1:-1;;;6880:57:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6972:5;-1:-1:-1;;;;;6956:21:18;:12;:10;:12::i;:::-;-1:-1:-1;;;;;6956:21:18;;:69;;;;6981:44;7005:5;7012:12;:10;:12::i;:::-;6981:23;:44::i;:::-;6948:159;;;;-1:-1:-1;;;6948:159:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8336:28;8346:4;8352:2;8356:7;8336:9;:28::i;6014:160::-;-1:-1:-1;;;;;6137:20:18;;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:18;6525:169;-1:-1:-1;;;6525:169:18: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:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5888:13;;5913:15;;5920:8;;5913:15;;5920:8;5913:15;;;;;;;;;;;;;;;;;;;;;;;;3990:218;4062:7;-1:-1:-1;;;;;4089:19:18;;4081:74;;;;-1:-1:-1;;;4081:74:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4172:20:18;;;;;;:13;:20;;;;;:29;;:27;:29::i;4664:102::-;4752:7;4745:14;;;;;;;;-1:-1:-1;;4745:14:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:13;;4745:14;;4752:7;;4745:14;;4752:7;4745:14;;;;;;;;;;;;;;;;;;;;;;;;7491:290;7605:12;:10;:12::i;:::-;-1:-1:-1;;;;;7593:24:18;:8;-1:-1:-1;;;;;7593:24:18;;;7585:62;;;;;-1:-1:-1;;;7585:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;7703:8;7658:18;:32;7677:12;:10;:12::i;:::-;-1:-1:-1;;;;;7658:32:18;;;;;;;;;;;;;;;;;-1:-1:-1;7658:32:18;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;;7741:12;:10;:12::i;:::-;-1:-1:-1;;;;;7726:48:18;;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:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5017:23;5043:19;;;:10;:19;;;;;;;;5017:45;;;;;;;;;;;-1:-1:-1;;5017:45:18;;;;;;;;;;;;;;;;;;;;;;;;;;;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:18;-1:-1:-1;5214:16:18;;5171:70;5343:23;;:27;5339:106;;5417:4;5423:9;5400:33;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5400:33:18;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5400:33:18;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5400:33:18;;;;;;;;;;;;;-1:-1:-1;;5400:33:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5386:48;;;;;;5339:106;5575:4;5581:18;:7;:16;:18::i;:::-;5558:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5558:42:18;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5558:42:18;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5558:42:18;;;;;;;;;;;;;-1:-1:-1;;5558:42:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5544:57;;;;4832:776;;;:::o;7847:162::-;-1:-1:-1;;;;;7967:25:18;;;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:24:-;685:10;598:104;:::o;16210:189:18:-;16284:24;;;;:15;:24;;;;;:29;;;;-1:-1:-1;;;;;16284:29:18;;;;;;;;:24;;16337:23;16284:24;16337:14;:23::i;:::-;-1:-1:-1;;;;;16328:46:18;;;;;;;;;;;16210:189;;:::o;7812:121:25:-;7881:7;7907:19;7915:3;7907:7;:19::i;10651:351:18:-;10744:4;10768:16;10776:7;10768;:16::i;:::-;10760:73;;;;-1:-1:-1;;;10760:73:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10843:13;10859:23;10874:7;10859:14;:23::i;:::-;10843:39;;10911:5;-1:-1:-1;;;;;10900:16:18;:7;-1:-1:-1;;;;;10900:16:18;;:51;;;;10944:7;-1:-1:-1;;;;;10920:31:18;:20;10932:7;10920:11;:20::i;:::-;-1:-1:-1;;;;;10920:31:18;;10900:51;:94;;;;10955:39;10979:5;10986:7;10955:23;:39::i;:::-;10892:103;10651:351;-1:-1:-1;;;;10651:351:18:o;13692:584::-;13816:4;-1:-1:-1;;;;;13789:31:18;:23;13804:7;13789:14;:23::i;:::-;-1:-1:-1;;;;;13789:31:18;;13781:85;;;;-1:-1:-1;;;13781:85:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13902:16:18;;13894:65;;;;-1:-1:-1;;;13894:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:18;;;;;;:13;:19;;;;;:35;;14138:7;14111:26;:35::i;:::-;-1:-1:-1;;;;;;14156:17:18;;;;;;:13;:17;;;;;:30;;14178:7;14156:21;:30::i;:::-;-1:-1:-1;14197:29:18;:12;14214:7;14223:2;14197:16;:29::i;:::-;;14261:7;14257:2;-1:-1:-1;;;;;14242:27:18;14251:4;-1:-1:-1;;;;;14242:27:18;;;;;;;;;;;13692:584;;;:::o;9242:135:26:-;9313:7;9347:22;9351:3;9363:5;9347:3;:22::i;8261:233:25:-;8341:7;;;;8400:22;8404:3;8416:5;8400:3;:22::i;:::-;8369:53;;;;-1:-1:-1;8261:233:25;-1:-1:-1;;;;;8261:233:25:o;9514:211::-;9621:7;9671:44;9676:3;9696;9702:12;9671:4;:44::i;:::-;9663:53;-1:-1:-1;9514:211:25;;;;;;:::o;9796:269:18:-;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:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:725:27;258:13;475:10;471:51;;-1:-1:-1;501:10:27;;;;;;;;;;;;;;;;;;;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:27;-1:-1:-1;761:5:27;;-1:-1:-1;669:39:27;-1:-1:-1;;;734:10:27;;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;877:2:27;869:10;;;;776:114;;;-1:-1:-1;913:6:27;202:725;-1:-1:-1;;;;202:725:27:o;7580:149:25:-;7664:4;7687:35;7697:3;7717;7687:9;:35::i;4483:108::-;4565:19;;4483:108::o;8357:135:26:-;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:25:-;7108:4;7131:64;7136:3;7156;-1:-1:-1;;;;;7170:23:25;;7131:4;:64::i;4444:201:26:-;4538:18;;4511:7;;4538:26;-1:-1:-1;4530:73:26;;;;-1:-1:-1;;;4530:73:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4620:3;:11;;4632:5;4620:18;;;;;;;;;;;;;;;;4613:25;;4444:201;;;;:::o;4934:274:25:-;5037:19;;5001:7;;;;5037:27;-1:-1:-1;5029:74:25;;;;-1:-1:-1;;;5029:74:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6643:3;:12;;6667:1;6656:8;:12;6643:26;;;;;;;;;;;;;;;;;;:33;;;6636:40;;;6395:315;;;;;:::o;15509:589:18:-;15629:4;15654:15;:2;-1:-1:-1;;;;;15654:13:18;;:15::i;:::-;15649:58;;-1:-1:-1;15692:4:18;15685:11;;15649:58;15716:23;15742:246;15794:45;15853:12;:10;:12::i;:::-;15879:4;15897:7;15918:5;15758:175;;;;;;-1:-1:-1;;;;;15758:175:18;;;;;;-1:-1:-1;;;;;15758:175:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15742:246;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15742:15:18;;;:246;:15;:246::i;:::-;15716:272;;15998:13;16025:10;16014:32;;;;;;;;;;;;;;;-1:-1:-1;16014:32:18;16064:26;;16074:16;16064:26;;-1:-1:-1;;;15509:589:18;;;;;;:::o;4270:123:25:-;4341:4;4364:17;;;:12;;;;;:17;;;;;;:22;;;4270:123::o;2204:1512:26:-;2270:4;2407:19;;;:12;;;:19;;;;;;2441:15;;2437:1273;;2870:18;;-1:-1:-1;;2822:14:26;;;;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:26;;;;;;;;:11;:23;;;;;;;;;;;;;1933:18;;1911:19;;;:12;;;:19;;;;;;:40;;;;1965:11;;1711:319;-1:-1:-1;2014:5:26;2007:12;;1828:678:25;1904:4;2037:17;;;:12;;;:17;;;;;;2069:13;2065:435;;-1:-1:-1;;2153:38:25;;;;;;;;;;;;;;;;;;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:23;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:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:12;4987:23;5014:6;-1:-1:-1;;;;;5014:11:23;5034:5;5042:4;5014:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5014:33:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:23:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:23;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:23;;;;;;;;;;;;;;;;;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/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"@openzeppelin/contracts/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/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]}},\"version\":1}"}},"@openzeppelin/contracts/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/token/ERC721/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]}},\"version\":1}"}},"@openzeppelin/contracts/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/token/ERC721/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"@openzeppelin/contracts/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/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"126:7684:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"126:7684:23:-: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/utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]}},\"version\":1}"}},"@openzeppelin/contracts/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/utils/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/EnumerableMap.sol":{"EnumerableMap":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"764:8963:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"764:8963:25:-: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/utils/EnumerableMap.sol\":\"EnumerableMap\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"745:8634:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"745:8634:26:-: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/utils/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"93:836:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"93:836:27:-: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/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"contracts/NonfungiblePositionManager.sol":{"NonfungiblePositionManager":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"},{"internalType":"address","name":"_tokenDescriptor_","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"},{"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":"SAMB","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":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLMintCallback","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":[{"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":"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":"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":"refundAMB","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":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:594: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":"313:279:56","statements":[{"body":{"nodeType":"YulBlock","src":"359:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"368:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"376:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"361:6:56"},"nodeType":"YulFunctionCall","src":"361:22:56"},"nodeType":"YulExpressionStatement","src":"361:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"334:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"343:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"330:3:56"},"nodeType":"YulFunctionCall","src":"330:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"355:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"326:3:56"},"nodeType":"YulFunctionCall","src":"326:32:56"},"nodeType":"YulIf","src":"323:2:56"},{"nodeType":"YulAssignment","src":"394:52:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"436:9:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"404:31:56"},"nodeType":"YulFunctionCall","src":"404:42:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"394:6:56"}]},{"nodeType":"YulAssignment","src":"455:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"501:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"512:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"497:3:56"},"nodeType":"YulFunctionCall","src":"497:18:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"465:31:56"},"nodeType":"YulFunctionCall","src":"465:51:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"455:6:56"}]},{"nodeType":"YulAssignment","src":"525:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"582:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"567:3:56"},"nodeType":"YulFunctionCall","src":"567:18:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"535:31:56"},"nodeType":"YulFunctionCall","src":"535:51:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"525:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"263:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"274:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"286:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"294:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"302:6:56","type":""}],"src":"198:394: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_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { 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    }\n}","id":56,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"610120604052600d80546001600160b01b0319166001176001600160b01b0316600160b01b1790553480156200003457600080fd5b50604051620062e9380380620062e98339810160408190526200005791620002db565b82826040518060400160405280601c81526020017f417374726144455820434c20506f736974696f6e73204e46542d5631000000008152506040518060400160405280600a8152602001694153542d434c2d504f5360b01b815250604051806040016040528060018152602001603160f81b8152508282620000e66301ffc9a760e01b6200018d60201b60201c565b8151620000fb90600690602085019062000212565b5080516200011190600790602084019062000212565b50620001246380ac58cd60e01b6200018d565b62000136635b5e139f60e01b6200018d565b6200014863780e9d6360e01b6200018d565b50508251602093840120608052805192019190912060a052506001600160601b0319606092831b811660c05290821b811660e05291901b166101005250620003249050565b6001600160e01b03198082161415620001ed576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200024a576000855562000295565b82601f106200026557805160ff191683800117855562000295565b8280016001018555821562000295579182015b828111156200029557825182559160200191906001019062000278565b50620002a3929150620002a7565b5090565b5b80821115620002a35760008155600101620002a8565b80516001600160a01b0381168114620002d657600080fd5b919050565b600080600060608486031215620002f0578283fd5b620002fb84620002be565b92506200030b60208501620002be565b91506200031b60408501620002be565b90509250925092565b60805160a05160c05160601c60e05160601c6101005160601c615f40620003a960003980612b01525080610299528061223a52806126c552806127bb5280613a145280613a5a5280613ace525080610aa75280610dcc5280610e9352806117175280612a895280612e4452806135d85250806114ed5250806114cc5250615f406000f3fe6080604052600436106102895760003560e01c806370a0823111610153578063ac9650d8116100cb578063c87b56dd1161007f578063e985e9c511610064578063e985e9c5146106f5578063f3995c6714610715578063fc6f7865146107285761030d565b8063c87b56dd146106c2578063df2ab5bb146106e25761030d565b8063c2e3140a116100b0578063c2e3140a14610692578063c45a0155146106a5578063c53af304146106ba5761030d565b8063ac9650d814610652578063b88d4fde146106725761030d565b806395d89b4111610122578063a22cb46511610107578063a22cb4651461060c578063a4a78f0c1461062c578063a98ce37f1461063f5761030d565b806395d89b41146105bf57806399fbab88146105d45761030d565b806370a08231146105545780637ac2ff7b14610574578063883164561461058757806390793ea8146105aa5761030d565b80632f745c59116102015780634659a494116101b55780634f6ccce71161019a5780634f6ccce7146104ff5780636352211e1461051f5780636c0360eb1461053f5761030d565b80634659a494146104cc5780634cb42d2d146104df5761030d565b80633644e515116101e65780633644e5151461048457806342842e0e1461049957806342966c68146104b95761030d565b80632f745c591461044f57806330adf81f1461046f5761030d565b80630c49ccbe1161025857806318160ddd1161023d57806318160ddd146103eb578063219f5d171461040d57806323b872dd1461042f5761030d565b80630c49ccbe146103b757806313ead562146103d85761030d565b806301ffc9a71461031257806306fdde0314610348578063081812fc1461036a578063095ea7b3146103975761030d565b3661030d57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461030b576040805162461bcd60e51b815260206004820152600860248201527f4e6f742053414d42000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561031e57600080fd5b5061033261032d3660046153a6565b61073b565b60405161033f919061591e565b60405180910390f35b34801561035457600080fd5b5061035d610776565b60405161033f9190615971565b34801561037657600080fd5b5061038a6103853660046156b8565b61080c565b60405161033f91906157e2565b3480156103a357600080fd5b5061030b6103b2366004615270565b610868565b6103ca6103c5366004615483565b61093e565b60405161033f929190615b42565b61038a6103e6366004615103565b610daa565b3480156103f757600080fd5b506104006110b7565b60405161033f9190615929565b61042061041b366004615494565b6110c8565b60405161033f93929190615afd565b34801561043b57600080fd5b5061030b61044a36600461515c565b611401565b34801561045b57600080fd5b5061040061046a366004615270565b611458565b34801561047b57600080fd5b50610400611483565b34801561049057600080fd5b506104006114a7565b3480156104a557600080fd5b5061030b6104b436600461515c565b611565565b61030b6104c73660046156b8565b611580565b61030b6104da3660046152dc565b61164f565b3480156104eb57600080fd5b5061030b6104fa366004615717565b611702565b34801561050b57600080fd5b5061040061051a3660046156b8565b611780565b34801561052b57600080fd5b5061038a61053a3660046156b8565b611796565b34801561054b57600080fd5b5061035d6117be565b34801561056057600080fd5b5061040061056f3660046150af565b6117c3565b61030b6105823660046152dc565b61182b565b61059a610595366004615550565b611cd7565b60405161033f9493929190615b1e565b3480156105b657600080fd5b5061038a612238565b3480156105cb57600080fd5b5061035d61225c565b3480156105e057600080fd5b506105f46105ef3660046156b8565b6122bd565b60405161033f9c9b9a99989796959493929190615b50565b34801561061857600080fd5b5061030b610627366004615243565b6124ec565b61030b61063a3660046152dc565b61260f565b61030b61064d3660046156d0565b6126c1565b610665610660366004615337565b612841565b60405161033f91906158a0565b34801561067e57600080fd5b5061030b61068d36600461519c565b612981565b61030b6106a03660046152dc565b6129df565b3480156106b157600080fd5b5061038a612a87565b61030b612aab565b3480156106ce57600080fd5b5061035d6106dd3660046156b8565b612abd565b61030b6106f036600461529b565b612b8c565b34801561070157600080fd5b506103326107103660046150cb565b612c6f565b61030b6107233660046152dc565b612c9d565b6103ca61073636600461546c565b612d28565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108025780601f106107d757610100808354040283529160200191610802565b820191906000526020600020905b8154815290600101906020018083116107e557829003601f168201915b5050505050905090565b600061081782613246565b61083c5760405162461bcd60e51b8152600401610833906159bb565b60405180910390fd5b506000908152600c60205260409020546c0100000000000000000000000090046001600160a01b031690565b600061087382611796565b9050806001600160a01b0316836001600160a01b031614156108c65760405162461bcd60e51b8152600401808060200182810382526021815260200180615ee26021913960400191505060405180910390fd5b806001600160a01b03166108d8613253565b6001600160a01b031614806108f457506108f481610710613253565b61092f5760405162461bcd60e51b8152600401808060200182810382526038815260200180615e0c6038913960400191505060405180910390fd5b6109398383613257565b505050565b600080823561094d33826132db565b6109695760405162461bcd60e51b815260040161083390615984565b836080013580610977613377565b11156109ca576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b60006109dc6040870160208801615562565b6001600160801b0316116109ef57600080fd5b84356000908152600c602090815260409182902060018101549092600160801b9091046001600160801b031691610a2a918901908901615562565b6001600160801b0316816001600160801b03161015610a4857600080fd5b60018281015469ffffffffffffffffffff166000908152600b60209081526040808320815160608101835281546001600160a01b039081168252919095015490811692850192909252600160a01b90910462ffffff1690830152610acc7f00000000000000000000000000000000000000000000000000000000000000008361337b565b60018501549091506001600160a01b0382169063a34123a7906a01000000000000000000008104600290810b91600160681b9004900b610b1260408e0160208f01615562565b6040518463ffffffff1660e01b8152600401610b309392919061594b565b6040805180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8191906156f4565b909850965060408901358810801590610b9e575088606001358710155b610bba5760405162461bcd60e51b815260040161083390615a18565b6001840154600090610bea9030906a01000000000000000000008104600290810b91600160681b9004900b613477565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610c1b9190615929565b60a06040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b91906155ac565b50509250925050610c9087600201548303876001600160801b0316600160801b6134d1565b6004880180546fffffffffffffffffffffffffffffffff198116928e016001600160801b039182160181169290921790556003880154610cda91908303908816600160801b6134d1565b6004880180546001600160801b03808216938e01600160801b9283900482160116029190911790556002870182905560038701819055610d2060408d0160208e01615562565b86038760010160106101000a8154816001600160801b0302191690836001600160801b031602179055508b600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48d6020016020810190610d839190615562565b8d8d604051610d9493929190615afd565b60405180910390a2505050505050505050915091565b6000836001600160a01b0316856001600160a01b031610610dca57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b158015610e5557600080fd5b505afa158015610e69573d6000803e3d6000fd5b505050506040513d6020811015610e7f57600080fd5b505190506001600160a01b038116610fce577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b505050506040513d6020811015610f4857600080fd5b5051604080517ff637731d0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b158015610fb157600080fd5b505af1158015610fc5573d6000803e3d6000fd5b505050506110af565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561100957600080fd5b505afa15801561101d573d6000803e3d6000fd5b505050506040513d60e081101561103357600080fd5b505190506001600160a01b0381166110ad57816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050505b505b949350505050565b60006110c36002613580565b905090565b60008060008360a00135806110db613377565b111561112e576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b84356000908152600c6020908152604080832060018082015469ffffffffffffffffffff81168652600b855283862084516060808201875282546001600160a01b039081168352929094015480831682890190815262ffffff600160a01b9092048216838901908152885161014081018a528451861681529151909416818a01529251168287015230828501526a01000000000000000000008304600290810b810b608080850191909152600160681b909404810b900b60a0830152958c013560c0820152938b013560e0850152908a0135610100840152890135610120830152929061121a9061358b565b6001870154939a50919850965091506000906112549030906a01000000000000000000008104600290810b91600160681b9004900b613477565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016112859190615929565b60a06040518083038186803b15801561129d57600080fd5b505afa1580156112b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d591906155ac565b50509250925050611311866002015483038760010160109054906101000a90046001600160801b03166001600160801b0316600160801b6134d1565b6004870180546001600160801b0380821690930183166fffffffffffffffffffffffffffffffff19909116179055600387015460018801546113619291840391600160801b9182900416906134d1565b6004870180546001600160801b03600160801b80830482169094018116840291811691909117909155600288018490556003880183905560018801805483810483168e018316909302929091169190911790556040518b35907f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f906113eb908d908d908d90615afd565b60405180910390a2505050505050509193909250565b61141261140c613253565b826132db565b61144d5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f036031913960400191505060405180910390fd5b6109398383836137c6565b6001600160a01b038216600090815260016020526040812061147a9083613912565b90505b92915050565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061151461391e565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b61093983838360405180602001604052806000815250612981565b8061158b33826132db565b6115a75760405162461bcd60e51b815260040161083390615984565b6000828152600c602052604090206001810154600160801b90046001600160801b03161580156115e2575060048101546001600160801b0316155b801561160057506004810154600160801b90046001600160801b0316155b61161c5760405162461bcd60e51b815260040161083390615a86565b6000838152600c602052604081208181556001810182905560028101829055600381018290556004015561093983613922565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156116e257600080fd5b505af11580156116f6573d6000803e3d6000fd5b50505050505050505050565b6000611710828401846154a5565b90506117407f000000000000000000000000000000000000000000000000000000000000000082600001516139ef565b50841561175b57805151602082015161175b91903388613a12565b83156117795761177981600001516020015182602001513387613a12565b5050505050565b60008061178e600284613ba2565b509392505050565b600061147d82604051806060016040528060298152602001615e6e6029913960029190613bc0565b606090565b60006001600160a01b03821661180a5760405162461bcd60e51b815260040180806020018281038252602a815260200180615e44602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061147d90613580565b83611834613377565b1115611887576040805162461bcd60e51b815260206004820152600e60248201527f5065726d69742065787069726564000000000000000000000000000000000000604482015290519081900360640190fd5b60006118916114a7565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad88886118bd81613bcd565b604080516020808201969096526001600160a01b03909416848201526060840192909252608083015260a08083018a90528151808403909101815260c0830182528051908401207f190100000000000000000000000000000000000000000000000000000000000060e084015260e28301949094526101028083019490945280518083039094018452610122909101905281519101209050600061196087611796565b9050806001600160a01b0316886001600160a01b031614156119b35760405162461bcd60e51b8152600401808060200182810382526027815260200180615d6f6027913960400191505060405180910390fd5b6119bc81613c0c565b15611b97576040805160208082018790528183018690527fff0000000000000000000000000000000000000000000000000000000000000060f889901b16606083015282516041818403018152606183018085527f1626ba7e0000000000000000000000000000000000000000000000000000000090526065830186815260858401948552815160a585015281516001600160a01b03871695631626ba7e958995919260c59091019185019080838360005b83811015611a86578181015183820152602001611a6e565b50505050905090810190601f168015611ab35780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015611ad157600080fd5b505afa158015611ae5573d6000803e3d6000fd5b505050506040513d6020811015611afb57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014611b92576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b611cc3565b600060018387878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611bf3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c5b576040805162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e6174757265000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316816001600160a01b031614611cc1576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b505b611ccd8888613257565b5050505050505050565b60008060008084610140013580611cec613377565b1115611d3f576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b604080516101408101909152600090611e0b9080611d6060208b018b6150af565b6001600160a01b03168152602001896020016020810190611d8191906150af565b6001600160a01b03168152602001611d9f60608b0160408c0161569e565b62ffffff168152306020820152604001611dbf60808b0160608c016153e6565b60020b8152602001611dd760a08b0160808c016153e6565b60020b81526020018960a0013581526020018960c0013581526020018960e00135815260200189610100013581525061358b565b92975090955093509050611e7f611e2a61014089016101208a016150af565b600d80547fffffffffffffffffffff000000000000000000000000000000000000000000008116600175ffffffffffffffffffffffffffffffffffffffffffff92831690810190921617909155975087613c12565b6000611eaa30611e9560808b0160608c016153e6565b611ea560a08c0160808d016153e6565b613477565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401611edb9190615929565b60a06040518083038186803b158015611ef357600080fd5b505afa158015611f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2b91906155ac565b505092509250506000611fa48560405180606001604052808e6000016020810190611f5691906150af565b6001600160a01b031681526020018e6020016020810190611f7791906150af565b6001600160a01b031681526020018e6040016020810190611f98919061569e565b62ffffff169052613d40565b905060405180610140016040528060006bffffffffffffffffffffffff16815260200160006001600160a01b031681526020018269ffffffffffffffffffff1681526020018c6060016020810190611ffc91906153e6565b60020b815260200161201460a08e0160808f016153e6565b60020b81526020018a6001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815250600c60008c815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b03160217905550905050897f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f8a8a8a60405161222393929190615afd565b60405180910390a25050505050509193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108025780601f106107d757610100808354040283529160200191610802565b6000818152600c6020908152604080832081516101408101835281546bffffffffffffffffffffffff811682526001600160a01b036c010000000000000000000000009091041693810193909352600181015469ffffffffffffffffffff81169284018390526a01000000000000000000008104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e0860152600490920154808316610100860152041661012083015282918291829182918291829182918291829182918291906123c65760405162461bcd60e51b815260040161083390615a4f565b6000600b6000836040015169ffffffffffffffffffff1669ffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681525050905081600001518260200151826000015183602001518460400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001519d509d509d509d509d509d509d509d509d509d509d509d50505091939597999b5091939597999b565b6124f4613253565b6001600160a01b0316826001600160a01b0316141561255a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000612567613253565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092179091556125c9613253565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561267957600080fd5b505afa15801561268d573d6000803e3d6000fd5b505050506040513d60208110156126a357600080fd5b505110156126b9576126b986868686868661164f565b505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561273057600080fd5b505afa158015612744573d6000803e3d6000fd5b505050506040513d602081101561275a57600080fd5b50519050828110156127b3576040805162461bcd60e51b815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b8015610939577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561281f57600080fd5b505af1158015612833573d6000803e3d6000fd5b505050506109398282613e90565b60608167ffffffffffffffff8111801561285a57600080fd5b5060405190808252806020026020018201604052801561288e57816020015b60608152602001906001900390816128795790505b50905060005b8281101561297a57600080308686858181106128ac57fe5b90506020028101906128be9190615bef565b6040516128cc9291906157d2565b600060405180830381855af49150503d8060008114612907576040519150601f19603f3d011682016040523d82523d6000602084013e61290c565b606091505b5091509150816129585760448151101561292557600080fd5b6004810190508080602001905181019061293f9190615402565b60405162461bcd60e51b81526004016108339190615971565b8084848151811061296557fe5b60209081029190910101525050600101612894565b5092915050565b61299261298c613253565b836132db565b6129cd5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f036031913960400191505060405180910390fd5b6129d984848484613f99565b50505050565b604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015612a4757600080fd5b505afa158015612a5b573d6000803e3d6000fd5b505050506040513d6020811015612a7157600080fd5b505110156126b9576126b9868686868686612c9d565b7f000000000000000000000000000000000000000000000000000000000000000081565b4715612abb57612abb3347613e90565b565b6060612ac882613246565b612ad157600080fd5b6040517fe9dc63750000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e9dc637590612b389030908690600401615932565b60006040518083038186803b158015612b5057600080fd5b505afa158015612b64573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261147d9190810190615402565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612bdb57600080fd5b505afa158015612bef573d6000803e3d6000fd5b505050506040513d6020811015612c0557600080fd5b5051905082811015612c5e576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156129d9576129d9848383613feb565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156116e257600080fd5b6000808235612d3733826132db565b612d535760405162461bcd60e51b815260040161083390615984565b6000612d656060860160408701615562565b6001600160801b03161180612d9257506000612d876080860160608701615562565b6001600160801b0316115b612d9b57600080fd5b600080612dae60408701602088016150af565b6001600160a01b031614612dd157612dcc60408601602087016150af565b612dd3565b305b85356000908152600c6020908152604080832060018082015469ffffffffffffffffffff168552600b8452828520835160608101855281546001600160a01b039081168252919092015490811694820194909452600160a01b90930462ffffff169183019190915292935090612e697f00000000000000000000000000000000000000000000000000000000000000008361337b565b600484015460018501549192506001600160801b0380821692600160801b92839004821692900416156130865760018501546040517fa34123a70000000000000000000000000000000000000000000000000000000081526001600160a01b0385169163a34123a791612f00916a01000000000000000000008104600290810b92600160681b909204900b9060009060040161594b565b6040805180830381600087803b158015612f1957600080fd5b505af1158015612f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5191906156f4565b5050600185015460009081906001600160a01b0386169063514ea4bf90612f969030906a01000000000000000000008104600290810b91600160681b9004900b613477565b6040518263ffffffff1660e01b8152600401612fb29190615929565b60a06040518083038186803b158015612fca57600080fd5b505afa158015612fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300291906155ac565b5050925092505061303e876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b6134d1565b84019350613077876003015482038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b6134d1565b60028801929092556003870155015b6000806001600160801b0384166130a360608e0160408f01615562565b6001600160801b0316116130c6576130c160608d0160408e01615562565b6130c8565b835b836001600160801b03168d60600160208101906130e59190615562565b6001600160801b0316116131085761310360808e0160608f01615562565b61310a565b835b60018901546040517f4f1eb3d80000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03871691634f1eb3d89161317d918c916a01000000000000000000008104600290810b92600160681b909204900b9088908890600401615839565b6040805180830381600087803b15801561319657600080fd5b505af11580156131aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ce919061557e565b6004890180546fffffffffffffffffffffffffffffffff196001600160801b03918216600160801b878a0384160217168689038216179091556040519281169d50169a508c35907f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f0190610d94908b9086908690615876565b600061147d60028361417b565b3390565b6000818152600c6020526040902080546bffffffffffffffffffffffff166c010000000000000000000000006001600160a01b0385169081029190911790915581906132a282611796565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006132e682613246565b6133215760405162461bcd60e51b815260040180806020018281038252602c815260200180615de0602c913960400191505060405180910390fd5b600061332c83611796565b9050806001600160a01b0316846001600160a01b031614806133675750836001600160a01b031661335c8461080c565b6001600160a01b0316145b806110af57506110af8185612c6f565b4290565b600081602001516001600160a01b031682600001516001600160a01b0316106133a357600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516bffffffffffffffffffffffff19606086901b16602080830191909152600285810b60e890811b60348501529085900b901b60378301528251601a818403018152603a90920190925280519101205b9392505050565b600080806000198587098686029250828110908390030390508061350757600084116134fc57600080fd5b5082900490506134ca565b80841161351357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600061147d82614187565b6000806000806000604051806060016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001876040015162ffffff1681525090506135fd7f00000000000000000000000000000000000000000000000000000000000000008261337b565b91506000826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561363a57600080fd5b505afa15801561364e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613672919061560d565b50505050505090506000613689886080015161418b565b9050600061369a8960a0015161418b565b90506136b18383838c60c001518d60e001516144d9565b9750505050816001600160a01b0316633c8a7d8d876060015188608001518960a00151896040518060400160405280888152602001336001600160a01b03168152506040516020016137039190615abd565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016137329594939291906157f6565b6040805180830381600087803b15801561374b57600080fd5b505af115801561375f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061378391906156f4565b610100880151919550935084108015906137a257508561012001518310155b6137be5760405162461bcd60e51b815260040161083390615a18565b509193509193565b826001600160a01b03166137d982611796565b6001600160a01b03161461381e5760405162461bcd60e51b8152600401808060200182810382526029815260200180615eb96029913960400191505060405180910390fd5b6001600160a01b0382166138635760405162461bcd60e51b8152600401808060200182810382526024815260200180615d966024913960400191505060405180910390fd5b61386e838383610939565b613879600082613257565b6001600160a01b038316600090815260016020526040902061389b908261459d565b506001600160a01b03821660009081526001602052604090206138be90826145a9565b506138cb600282846145b5565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061147a83836145cb565b4690565b600061392d82611796565b905061393b81600084610939565b613946600083613257565b60008281526008602052604090205460026000196101006001841615020190911604156139845760008281526008602052604081206139849161501f565b6001600160a01b03811660009081526001602052604090206139a6908361459d565b506139b260028361462f565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006139fb838361337b565b9050336001600160a01b0382161461147d57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015613a535750804710155b15613b75577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613ab357600080fd5b505af1158015613ac7573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613b4357600080fd5b505af1158015613b57573d6000803e3d6000fd5b505050506040513d6020811015613b6d57600080fd5b506129d99050565b6001600160a01b038316301415613b9657613b91848383613feb565b6129d9565b6129d98484848461463b565b6000808080613bb186866147d3565b909450925050505b9250929050565b60006110af84848461484e565b6000908152600c6020526040902080546bffffffffffffffffffffffff19811660016bffffffffffffffffffffffff9283169081019092161790915590565b3b151590565b6001600160a01b038216613c6d576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613c7681613246565b15613cc8576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b613cd460008383610939565b6001600160a01b0382166000908152600160205260409020613cf690826145a9565b50613d03600282846145b5565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0382166000908152600a602052604090205469ffffffffffffffffffff168061147d5750600d8054600169ffffffffffffffffffff76010000000000000000000000000000000000000000000080840482168381019092160275ffffffffffffffffffffffffffffffffffffffffffff909316929092179092556001600160a01b038085166000908152600a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffff000000000000000000001686179055848352600b825291829020865181549085167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825591870151950180549287015162ffffff16600160a01b027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff969094169290911691909117939093161790915592915050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613edc5780518252601f199092019160209182019101613ebd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f3e576040519150601f19603f3d011682016040523d82523d6000602084013e613f43565b606091505b5050905080610939576040805162461bcd60e51b815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b613fa48484846137c6565b613fb084848484614918565b6129d95760405162461bcd60e51b8152600401808060200182810382526032815260200180615d3d6032913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b602083106140955780518252601f199092019160209182019101614076565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146140f7576040519150601f19603f3d011682016040523d82523d6000602084013e6140fc565b606091505b509150915081801561412a57508051158061412a575080806020019051602081101561412757600080fd5b50515b611779576040805162461bcd60e51b815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600061147a8383614af4565b5490565b60008060008360020b126141a2578260020b6141aa565b8260020b6000035b9050620d89e8811115614204576040805162461bcd60e51b815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006001821661421857600160801b61422a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561425e576ffff97272373d413259a46990580e213a0260801c5b600482161561427d576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561429c576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156142bb576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156142da576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156142f9576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614318576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614338576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614358576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614378576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614398576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156143b8576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156143d8576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156143f8576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614418576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614439576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614459576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614478576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614495576b048a170391f7dc42444e8fa20260801c5b60008460020b13156144b05780600019816144ac57fe5b0490505b6401000000008106156144c45760016144c7565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b031611156144f9579293925b846001600160a01b0316866001600160a01b0316116145245761451d858585614b0c565b9050614594565b836001600160a01b0316866001600160a01b0316101561458657600061454b878686614b0c565b9050600061455a878986614b78565b9050806001600160801b0316826001600160801b03161061457b578061457d565b815b92505050614594565b614591858584614b78565b90505b95945050505050565b600061147a8383614bbe565b600061147a8383614c84565b60006110af84846001600160a01b038516614cce565b8154600090821061460d5760405162461bcd60e51b8152600401808060200182810382526022815260200180615d1b6022913960400191505060405180910390fd5b82600001828154811061461c57fe5b9060005260206000200154905092915050565b600061147a8383614d65565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b602083106146ed5780518252601f1990920191602091820191016146ce565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461474f576040519150601f19603f3d011682016040523d82523d6000602084013e614754565b606091505b5091509150818015614782575080511580614782575080806020019051602081101561477f57600080fd5b50515b6126b9576040805162461bcd60e51b815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8154600090819083106148175760405162461bcd60e51b8152600401808060200182810382526022815260200180615e976022913960400191505060405180910390fd5b600084600001848154811061482857fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816148e95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156148ae578181015183820152602001614896565b50505050905090810190601f1680156148db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106148fc57fe5b9060005260206000209060020201600101549150509392505050565b600061492c846001600160a01b0316613c0c565b614938575060016110af565b6000614a897f150b7a0200000000000000000000000000000000000000000000000000000000614966613253565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156149cd5781810151838201526020016149b5565b50505050905090810190601f1680156149fa5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001615d3d603291396001600160a01b0388169190614e39565b90506000818060200190516020811015614aa257600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b60009081526001919091016020526040902054151590565b6000826001600160a01b0316846001600160a01b03161115614b2c579192915b6000614b58856001600160a01b0316856001600160a01b03166c010000000000000000000000006134d1565b9050614594614b7384838888036001600160a01b03166134d1565b614e48565b6000826001600160a01b0316846001600160a01b03161115614b98579192915b6110af614b73836c010000000000000000000000008787036001600160a01b03166134d1565b60008181526001830160205260408120548015614c7a5783546000198083019190810190600090879083908110614bf157fe5b9060005260206000200154905080876000018481548110614c0e57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614c3e57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061147d565b600091505061147d565b6000614c908383614af4565b614cc65750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561147d565b50600061147d565b600082815260018401602052604081205480614d335750506040805180820182528381526020808201848152865460018181018955600089815284812095516002909302909501918255915190820155865486845281880190925292909120556134ca565b82856000016001830381548110614d4657fe5b90600052602060002090600202016001018190555060009150506134ca565b60008181526001830160205260408120548015614c7a5783546000198083019190810190600090879083908110614d9857fe5b9060005260206000209060020201905080876000018481548110614db857fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614df757fe5b600082815260208082206002600019909401938402018281556001908101839055929093558881528982019092526040822091909155945061147d9350505050565b60606110af8484600085614e5e565b806001600160801b038116811461077157600080fd5b606082471015614e9f5760405162461bcd60e51b8152600401808060200182810382526026815260200180615dba6026913960400191505060405180910390fd5b614ea885613c0c565b614ef9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614f375780518252601f199092019160209182019101614f18565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614f99576040519150601f19603f3d011682016040523d82523d6000602084013e614f9e565b606091505b5091509150614fae828286614fb9565b979650505050505050565b60608315614fc85750816134ca565b825115614fd85782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156148ae578181015183820152602001614896565b50805460018160011615610100020316600290046000825580601f106150455750615063565b601f0160209004906000526020600020908101906150639190615066565b50565b5b8082111561507b5760008155600101615067565b5090565b803561077181615cc4565b805161ffff8116811461077157600080fd5b803562ffffff8116811461077157600080fd5b6000602082840312156150c0578081fd5b81356134ca81615cc4565b600080604083850312156150dd578081fd5b82356150e881615cc4565b915060208301356150f881615cc4565b809150509250929050565b60008060008060808587031215615118578182fd5b843561512381615cc4565b9350602085013561513381615cc4565b92506151416040860161509c565b9150606085013561515181615cc4565b939692955090935050565b600080600060608486031215615170578081fd5b833561517b81615cc4565b9250602084013561518b81615cc4565b929592945050506040919091013590565b600080600080608085870312156151b1578182fd5b84356151bc81615cc4565b935060208501356151cc81615cc4565b925060408501359150606085013567ffffffffffffffff8111156151ee578182fd5b8501601f810187136151fe578182fd5b803561521161520c82615c76565b615c52565b818152886020838501011115615225578384fd5b81602084016020830137908101602001929092525092959194509250565b60008060408385031215615255578182fd5b823561526081615cc4565b915060208301356150f881615cd9565b60008060408385031215615282578182fd5b823561528d81615cc4565b946020939093013593505050565b6000806000606084860312156152af578081fd5b83356152ba81615cc4565b92506020840135915060408401356152d181615cc4565b809150509250925092565b60008060008060008060c087890312156152f4578384fd5b86356152ff81615cc4565b95506020870135945060408701359350606087013561531d81615d0b565b9598949750929560808101359460a0909101359350915050565b60008060208385031215615349578182fd5b823567ffffffffffffffff80821115615360578384fd5b818501915085601f830112615373578384fd5b813581811115615381578485fd5b8660208083028501011115615394578485fd5b60209290920196919550909350505050565b6000602082840312156153b7578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146134ca578182fd5b6000602082840312156153f7578081fd5b81356134ca81615ce7565b600060208284031215615413578081fd5b815167ffffffffffffffff811115615429578182fd5b8201601f81018413615439578182fd5b805161544761520c82615c76565b81815285602083850101111561545b578384fd5b614594826020830160208601615c98565b60006080828403121561547d578081fd5b50919050565b600060a0828403121561547d578081fd5b600060c0828403121561547d578081fd5b600081830360808112156154b7578182fd5b6040516040810167ffffffffffffffff82821081831117156154d557fe5b8160405260608412156154e6578485fd5b60a08301935081841081851117156154fa57fe5b50826040528435925061550c83615cc4565b91825260208401359161551e83615cc4565b8260608301526155306040860161509c565b608083015281526155436060850161507f565b6020820152949350505050565b6000610160828403121561547d578081fd5b600060208284031215615573578081fd5b81356134ca81615cf6565b60008060408385031215615590578182fd5b825161559b81615cf6565b60208401519092506150f881615cf6565b600080600080600060a086880312156155c3578283fd5b85516155ce81615cf6565b80955050602086015193506040860151925060608601516155ee81615cf6565b60808701519092506155ff81615cf6565b809150509295509295909350565b600080600080600080600060e0888a031215615627578485fd5b875161563281615cc4565b602089015190975061564381615ce7565b95506156516040890161508a565b945061565f6060890161508a565b935061566d6080890161508a565b925060a088015161567d81615d0b565b60c089015190925061568e81615cd9565b8091505092959891949750929550565b6000602082840312156156af578081fd5b61147a8261509c565b6000602082840312156156c9578081fd5b5035919050565b600080604083850312156156e2578182fd5b8235915060208301356150f881615cc4565b60008060408385031215615706578182fd5b505080516020909101519092909150565b6000806000806060858703121561572c578182fd5b8435935060208501359250604085013567ffffffffffffffff80821115615751578384fd5b818701915087601f830112615764578384fd5b813581811115615772578485fd5b886020828501011115615783578485fd5b95989497505060200194505050565b600081518084526157aa816020860160208601615c98565b601f01601f19169290920160200192915050565b60020b9052565b6001600160801b03169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b03871682528560020b60208301528460020b60408301526001600160801b038416606083015260a06080830152614fae60a0830184615792565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039390931683526001600160801b03918216602084015216604082015260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015615911577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526158ff858351615792565b945092850192908501906001016158c5565b5092979650505050505050565b901515815260200190565b90815260200190565b6001600160a01b03929092168252602082015260400190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b60006020825261147a6020830184615792565b6020808252600c908201527f4e6f7420617070726f7665640000000000000000000000000000000000000000604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f507269636520736c69707061676520636865636b000000000000000000000000604082015260600190565b60208082526010908201527f496e76616c696420746f6b656e20494400000000000000000000000000000000604082015260600190565b6020808252600b908201527f4e6f7420636c6561726564000000000000000000000000000000000000000000604082015260600190565b815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b6001600160801b039390931683526020830191909152604082015260600190565b9384526001600160801b039290921660208401526040830152606082015260800190565b918252602082015260400190565b6bffffffffffffffffffffffff8d1681526001600160a01b038c811660208301528b811660408301528a16606082015262ffffff89166080820152600288900b60a08201526101808101615ba760c08301896157be565b615bb460e08301886157c5565b8561010083015284610120830152615bd06101408301856157c5565b615bde6101608301846157c5565b9d9c50505050505050505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615c23578283fd5b83018035915067ffffffffffffffff821115615c3d578283fd5b602001915036819003821315613bb957600080fd5b60405181810167ffffffffffffffff81118282101715615c6e57fe5b604052919050565b600067ffffffffffffffff821115615c8a57fe5b50601f01601f191660200190565b60005b83811015615cb3578181015183820152602001615c9b565b838111156129d95750506000910152565b6001600160a01b038116811461506357600080fd5b801515811461506357600080fd5b8060020b811461506357600080fd5b6001600160801b038116811461506357600080fd5b60ff8116811461506357600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732315065726d69743a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a164736f6c6343000706000a","opcodes":"PUSH2 0x120 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 0x62E9 CODESIZE SUB DUP1 PUSH3 0x62E9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x57 SWAP2 PUSH3 0x2DB JUMP JUMPDEST DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x417374726144455820434C20506F736974696F6E73204E46542D563100000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH10 0x4153542D434C2D504F53 PUSH1 0xB0 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 0xE6 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH3 0x18D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 MLOAD PUSH3 0xFB SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x212 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x111 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x212 JUMP JUMPDEST POP PUSH3 0x124 PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH3 0x18D JUMP JUMPDEST PUSH3 0x136 PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH3 0x18D JUMP JUMPDEST PUSH3 0x148 PUSH4 0x780E9D63 PUSH1 0xE0 SHL PUSH3 0x18D 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 SWAP1 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP2 SWAP1 SHL AND PUSH2 0x100 MSTORE POP PUSH3 0x324 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x1ED 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 0x24A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x295 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x265 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x295 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x295 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x295 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x278 JUMP JUMPDEST POP PUSH3 0x2A3 SWAP3 SWAP2 POP PUSH3 0x2A7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2A3 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2A8 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x2F0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH3 0x2FB DUP5 PUSH3 0x2BE JUMP JUMPDEST SWAP3 POP PUSH3 0x30B PUSH1 0x20 DUP6 ADD PUSH3 0x2BE JUMP JUMPDEST SWAP2 POP PUSH3 0x31B PUSH1 0x40 DUP6 ADD PUSH3 0x2BE JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x5F40 PUSH3 0x3A9 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2B01 MSTORE POP DUP1 PUSH2 0x299 MSTORE DUP1 PUSH2 0x223A MSTORE DUP1 PUSH2 0x26C5 MSTORE DUP1 PUSH2 0x27BB MSTORE DUP1 PUSH2 0x3A14 MSTORE DUP1 PUSH2 0x3A5A MSTORE DUP1 PUSH2 0x3ACE MSTORE POP DUP1 PUSH2 0xAA7 MSTORE DUP1 PUSH2 0xDCC MSTORE DUP1 PUSH2 0xE93 MSTORE DUP1 PUSH2 0x1717 MSTORE DUP1 PUSH2 0x2A89 MSTORE DUP1 PUSH2 0x2E44 MSTORE DUP1 PUSH2 0x35D8 MSTORE POP DUP1 PUSH2 0x14ED MSTORE POP DUP1 PUSH2 0x14CC MSTORE POP PUSH2 0x5F40 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x289 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x153 JUMPI DUP1 PUSH4 0xAC9650D8 GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6F5 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x715 JUMPI DUP1 PUSH4 0xFC6F7865 EQ PUSH2 0x728 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x6C2 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x6E2 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0xC2E3140A GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x6A5 JUMPI DUP1 PUSH4 0xC53AF304 EQ PUSH2 0x6BA JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x672 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x122 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x62C JUMPI DUP1 PUSH4 0xA98CE37F EQ PUSH2 0x63F JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5BF JUMPI DUP1 PUSH4 0x99FBAB88 EQ PUSH2 0x5D4 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x7AC2FF7B EQ PUSH2 0x574 JUMPI DUP1 PUSH4 0x88316456 EQ PUSH2 0x587 JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x5AA JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x2F745C59 GT PUSH2 0x201 JUMPI DUP1 PUSH4 0x4659A494 GT PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0x19A JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x51F JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x53F JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x4659A494 EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0x4CB42D2D EQ PUSH2 0x4DF JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x484 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x4B9 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x44F JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x46F JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0xC49CCBE GT PUSH2 0x258 JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x23D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3EB JUMPI DUP1 PUSH4 0x219F5D17 EQ PUSH2 0x40D JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x42F JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0xC49CCBE EQ PUSH2 0x3B7 JUMPI DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x3D8 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x312 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x397 JUMPI PUSH2 0x30D JUMP JUMPDEST CALLDATASIZE PUSH2 0x30D JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x30B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 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 0x31E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x332 PUSH2 0x32D CALLDATASIZE PUSH1 0x4 PUSH2 0x53A6 JUMP JUMPDEST PUSH2 0x73B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x591E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35D PUSH2 0x776 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x5971 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38A PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x80C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x57E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x3B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5270 JUMP JUMPDEST PUSH2 0x868 JUMP JUMPDEST PUSH2 0x3CA PUSH2 0x3C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5483 JUMP JUMPDEST PUSH2 0x93E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP3 SWAP2 SWAP1 PUSH2 0x5B42 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x3E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x5103 JUMP JUMPDEST PUSH2 0xDAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x10B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH2 0x420 PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x5494 JUMP JUMPDEST PUSH2 0x10C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x44A CALLDATASIZE PUSH1 0x4 PUSH2 0x515C JUMP JUMPDEST PUSH2 0x1401 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x46A CALLDATASIZE PUSH1 0x4 PUSH2 0x5270 JUMP JUMPDEST PUSH2 0x1458 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x1483 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x14A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x4B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x515C JUMP JUMPDEST PUSH2 0x1565 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x4C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x1580 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x4DA CALLDATASIZE PUSH1 0x4 PUSH2 0x52DC JUMP JUMPDEST PUSH2 0x164F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x4FA CALLDATASIZE PUSH1 0x4 PUSH2 0x5717 JUMP JUMPDEST PUSH2 0x1702 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x51A CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x1780 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38A PUSH2 0x53A CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x1796 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35D PUSH2 0x17BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x56F CALLDATASIZE PUSH1 0x4 PUSH2 0x50AF JUMP JUMPDEST PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x582 CALLDATASIZE PUSH1 0x4 PUSH2 0x52DC JUMP JUMPDEST PUSH2 0x182B JUMP JUMPDEST PUSH2 0x59A PUSH2 0x595 CALLDATASIZE PUSH1 0x4 PUSH2 0x5550 JUMP JUMPDEST PUSH2 0x1CD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38A PUSH2 0x2238 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35D PUSH2 0x225C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F4 PUSH2 0x5EF CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x22BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B50 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x627 CALLDATASIZE PUSH1 0x4 PUSH2 0x5243 JUMP JUMPDEST PUSH2 0x24EC JUMP JUMPDEST PUSH2 0x30B PUSH2 0x63A CALLDATASIZE PUSH1 0x4 PUSH2 0x52DC JUMP JUMPDEST PUSH2 0x260F JUMP JUMPDEST PUSH2 0x30B PUSH2 0x64D CALLDATASIZE PUSH1 0x4 PUSH2 0x56D0 JUMP JUMPDEST PUSH2 0x26C1 JUMP JUMPDEST PUSH2 0x665 PUSH2 0x660 CALLDATASIZE PUSH1 0x4 PUSH2 0x5337 JUMP JUMPDEST PUSH2 0x2841 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x58A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x68D CALLDATASIZE PUSH1 0x4 PUSH2 0x519C JUMP JUMPDEST PUSH2 0x2981 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x6A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x52DC JUMP JUMPDEST PUSH2 0x29DF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38A PUSH2 0x2A87 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x2AAB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35D PUSH2 0x6DD CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x30B PUSH2 0x6F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x529B JUMP JUMPDEST PUSH2 0x2B8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x332 PUSH2 0x710 CALLDATASIZE PUSH1 0x4 PUSH2 0x50CB JUMP JUMPDEST PUSH2 0x2C6F JUMP JUMPDEST PUSH2 0x30B PUSH2 0x723 CALLDATASIZE PUSH1 0x4 PUSH2 0x52DC JUMP JUMPDEST PUSH2 0x2C9D JUMP JUMPDEST PUSH2 0x3CA PUSH2 0x736 CALLDATASIZE PUSH1 0x4 PUSH2 0x546C JUMP JUMPDEST PUSH2 0x2D28 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 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 0x802 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x802 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 0x7E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x817 DUP3 PUSH2 0x3246 JUMP JUMPDEST PUSH2 0x83C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x59BB 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 PUSH13 0x1000000000000000000000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x873 DUP3 PUSH2 0x1796 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 0x8C6 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 0x5EE2 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 0x8D8 PUSH2 0x3253 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x8F4 JUMPI POP PUSH2 0x8F4 DUP2 PUSH2 0x710 PUSH2 0x3253 JUMP JUMPDEST PUSH2 0x92F 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 0x5E0C PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x939 DUP4 DUP4 PUSH2 0x3257 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x94D CALLER DUP3 PUSH2 0x32DB JUMP JUMPDEST PUSH2 0x969 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5984 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0x977 PUSH2 0x3377 JUMP JUMPDEST GT ISZERO PUSH2 0x9CA 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9DC PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x9EF 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 0xA2A SWAP2 DUP10 ADD SWAP1 DUP10 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0xA48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP3 DUP2 ADD SLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0xACC PUSH32 0x0 DUP4 PUSH2 0x337B JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA34123A7 SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0xB12 PUSH1 0x40 DUP15 ADD PUSH1 0x20 DUP16 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB30 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x594B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB5D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB81 SWAP2 SWAP1 PUSH2 0x56F4 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD DUP9 LT DUP1 ISZERO SWAP1 PUSH2 0xB9E JUMPI POP DUP9 PUSH1 0x60 ADD CALLDATALOAD DUP8 LT ISZERO JUMPDEST PUSH2 0xBBA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5A18 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0xBEA SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x3477 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 0xC1B SWAP2 SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC6B SWAP2 SWAP1 PUSH2 0x55AC JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0xC90 DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x34D1 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xCDA SWAP2 SWAP1 DUP4 SUB SWAP1 DUP9 AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x34D1 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 0xD20 PUSH1 0x40 DUP14 ADD PUSH1 0x20 DUP15 ADD PUSH2 0x5562 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 0xD83 SWAP2 SWAP1 PUSH2 0x5562 JUMP JUMPDEST DUP14 DUP14 PUSH1 0x40 MLOAD PUSH2 0xD94 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP SWAP2 POP SWAP2 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 0xDCA 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 0xE55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE69 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 0xE7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xFCE 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 0xF1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF32 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 0xF48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF637731D00000000000000000000000000000000000000000000000000000000 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 0xFB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x10AF 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 0x1009 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x101D 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 0x1033 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x10AD 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 0x1094 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10A8 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 0x10C3 PUSH1 0x2 PUSH2 0x3580 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0xA0 ADD CALLDATALOAD DUP1 PUSH2 0x10DB PUSH2 0x3377 JUMP JUMPDEST GT ISZERO PUSH2 0x112E 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 PUSH11 0x100000000000000000000 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 0x121A SWAP1 PUSH2 0x358B JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD SWAP4 SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1254 SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x3477 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 0x1285 SWAP2 SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x129D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12D5 SWAP2 SWAP1 PUSH2 0x55AC JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x1311 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 0x34D1 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP1 SWAP4 ADD DUP4 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x1361 SWAP3 SWAP2 DUP5 SUB SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV AND SWAP1 PUSH2 0x34D1 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 DUP5 MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP9 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 DUP9 ADD DUP4 SWAP1 SSTORE PUSH1 0x1 DUP9 ADD DUP1 SLOAD DUP4 DUP2 DIV DUP4 AND DUP15 ADD DUP4 AND SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP12 CALLDATALOAD SWAP1 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F SWAP1 PUSH2 0x13EB SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH2 0x5AFD 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 0x1412 PUSH2 0x140C PUSH2 0x3253 JUMP JUMPDEST DUP3 PUSH2 0x32DB JUMP JUMPDEST PUSH2 0x144D 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 0x5F03 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x939 DUP4 DUP4 DUP4 PUSH2 0x37C6 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 0x147A SWAP1 DUP4 PUSH2 0x3912 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 0x1514 PUSH2 0x391E 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 0x939 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2981 JUMP JUMPDEST DUP1 PUSH2 0x158B CALLER DUP3 PUSH2 0x32DB JUMP JUMPDEST PUSH2 0x15A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5984 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 0x15E2 JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1600 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 PUSH2 0x161C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5A86 JUMP 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 ADD SSTORE PUSH2 0x939 DUP4 PUSH2 0x3922 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 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 0x16E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16F6 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 PUSH2 0x1710 DUP3 DUP5 ADD DUP5 PUSH2 0x54A5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1740 PUSH32 0x0 DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x39EF JUMP JUMPDEST POP DUP5 ISZERO PUSH2 0x175B JUMPI DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x175B SWAP2 SWAP1 CALLER DUP9 PUSH2 0x3A12 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x1779 JUMPI PUSH2 0x1779 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x3A12 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x178E PUSH1 0x2 DUP5 PUSH2 0x3BA2 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147D DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5E6E PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0x3BC0 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x180A 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 0x5E44 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 0x147D SWAP1 PUSH2 0x3580 JUMP JUMPDEST DUP4 PUSH2 0x1834 PUSH2 0x3377 JUMP JUMPDEST GT ISZERO PUSH2 0x1887 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5065726D69742065787069726564000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1891 PUSH2 0x14A7 JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP9 DUP9 PUSH2 0x18BD DUP2 PUSH2 0x3BCD 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 DUP11 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 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 0x1960 DUP8 PUSH2 0x1796 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x19B3 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 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D6F PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19BC DUP2 PUSH2 0x3C0C JUMP JUMPDEST ISZERO PUSH2 0x1B97 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP10 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 PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 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 0x1A86 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1A6E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AB3 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 0x1AD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AE5 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 0x1AFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1B92 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 PUSH32 0x556E617574686F72697A65640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1CC3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP8 DUP8 DUP8 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 0x1BF3 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 PUSH2 0x1C5B 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 PUSH32 0x496E76616C6964207369676E6174757265000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1CC1 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 PUSH32 0x556E617574686F72697A65640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x1CCD DUP9 DUP9 PUSH2 0x3257 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH2 0x140 ADD CALLDATALOAD DUP1 PUSH2 0x1CEC PUSH2 0x3377 JUMP JUMPDEST GT ISZERO PUSH2 0x1D3F 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1E0B SWAP1 DUP1 PUSH2 0x1D60 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x50AF 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 0x1D81 SWAP2 SWAP1 PUSH2 0x50AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D9F PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x569E JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x1DBF PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x53E6 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DD7 PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x53E6 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 0x358B JUMP JUMPDEST SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH2 0x1E7F PUSH2 0x1E2A PUSH2 0x140 DUP10 ADD PUSH2 0x120 DUP11 ADD PUSH2 0x50AF JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 DUP2 AND PUSH1 0x1 PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP8 POP DUP8 PUSH2 0x3C12 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EAA ADDRESS PUSH2 0x1E95 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x53E6 JUMP JUMPDEST PUSH2 0x1EA5 PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x53E6 JUMP JUMPDEST PUSH2 0x3477 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 0x1EDB SWAP2 SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F2B SWAP2 SWAP1 PUSH2 0x55AC JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0x1FA4 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP15 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1F56 SWAP2 SWAP1 PUSH2 0x50AF 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 0x1F77 SWAP2 SWAP1 PUSH2 0x50AF 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 0x1F98 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE PUSH2 0x3D40 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1FFC SWAP2 SWAP1 PUSH2 0x53E6 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2014 PUSH1 0xA0 DUP15 ADD PUSH1 0x80 DUP16 ADD PUSH2 0x53E6 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 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 SWAP1 POP POP DUP10 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x2223 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH32 0x0 DUP2 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 0x802 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x802 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x140 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH13 0x1000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH11 0x100000000000000000000 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 SWAP1 SWAP3 ADD SLOAD DUP1 DUP4 AND PUSH2 0x100 DUP7 ADD MSTORE DIV AND PUSH2 0x120 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 0x23C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5A4F JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0x24F4 PUSH2 0x3253 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x255A 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 PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x2567 PUSH2 0x3253 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 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x25C9 PUSH2 0x3253 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 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 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 0x2679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x268D 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 0x26A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x26B9 JUMPI PUSH2 0x26B9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x164F JUMP JUMPDEST 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 0x2730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2744 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 0x275A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x27B3 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 PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x939 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 0x281F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2833 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x939 DUP3 DUP3 PUSH2 0x3E90 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x285A 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 0x288E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x2879 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x297A JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x28AC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x28BE SWAP2 SWAP1 PUSH2 0x5BEF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28CC SWAP3 SWAP2 SWAP1 PUSH2 0x57D2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2907 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 0x290C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2958 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x2925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x293F SWAP2 SWAP1 PUSH2 0x5402 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP2 SWAP1 PUSH2 0x5971 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2965 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x2894 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2992 PUSH2 0x298C PUSH2 0x3253 JUMP JUMPDEST DUP4 PUSH2 0x32DB JUMP JUMPDEST PUSH2 0x29CD 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 0x5F03 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29D9 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3F99 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 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 0x2A47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A5B 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 0x2A71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x26B9 JUMPI PUSH2 0x26B9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2C9D JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0x2ABB JUMPI PUSH2 0x2ABB CALLER SELFBALANCE PUSH2 0x3E90 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2AC8 DUP3 PUSH2 0x3246 JUMP JUMPDEST PUSH2 0x2AD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE9DC637500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE9DC6375 SWAP1 PUSH2 0x2B38 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5932 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B64 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 0x147D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5402 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 0x2BDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BEF 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 0x2C05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x2C5E 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 PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x29D9 JUMPI PUSH2 0x29D9 DUP5 DUP4 DUP4 PUSH2 0x3FEB 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 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 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 0x16E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x2D37 CALLER DUP3 PUSH2 0x32DB JUMP JUMPDEST PUSH2 0x2D53 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5984 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D65 PUSH1 0x60 DUP7 ADD PUSH1 0x40 DUP8 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT DUP1 PUSH2 0x2D92 JUMPI POP PUSH1 0x0 PUSH2 0x2D87 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST PUSH2 0x2D9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DAE PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x50AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2DD1 JUMPI PUSH2 0x2DCC PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x50AF JUMP JUMPDEST PUSH2 0x2DD3 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0x2E69 PUSH32 0x0 DUP4 PUSH2 0x337B 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 0x3086 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0xA34123A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xA34123A7 SWAP2 PUSH2 0x2F00 SWAP2 PUSH11 0x100000000000000000000 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 0x594B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F51 SWAP2 SWAP1 PUSH2 0x56F4 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 0x2F96 SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x3477 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FB2 SWAP2 SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FDE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3002 SWAP2 SWAP1 PUSH2 0x55AC JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x303E 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 0x34D1 JUMP JUMPDEST DUP5 ADD SWAP4 POP PUSH2 0x3077 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 0x34D1 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 0x30A3 PUSH1 0x60 DUP15 ADD PUSH1 0x40 DUP16 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x30C6 JUMPI PUSH2 0x30C1 PUSH1 0x60 DUP14 ADD PUSH1 0x40 DUP15 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH2 0x30C8 JUMP JUMPDEST DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP14 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x30E5 SWAP2 SWAP1 PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x3108 JUMPI PUSH2 0x3103 PUSH1 0x80 DUP15 ADD PUSH1 0x60 DUP16 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH2 0x310A JUMP JUMPDEST DUP4 JUMPDEST PUSH1 0x1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0x4F1EB3D800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0x4F1EB3D8 SWAP2 PUSH2 0x317D SWAP2 DUP13 SWAP2 PUSH11 0x100000000000000000000 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 0x5839 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31CE SWAP2 SWAP1 PUSH2 0x557E JUMP JUMPDEST PUSH1 0x4 DUP10 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xD94 SWAP1 DUP12 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH2 0x5876 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147D PUSH1 0x2 DUP4 PUSH2 0x417B JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x32A2 DUP3 PUSH2 0x1796 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 0x32E6 DUP3 PUSH2 0x3246 JUMP JUMPDEST PUSH2 0x3321 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 0x5DE0 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x332C DUP4 PUSH2 0x1796 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 0x3367 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x335C DUP5 PUSH2 0x80C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x10AF JUMPI POP PUSH2 0x10AF DUP2 DUP6 PUSH2 0x2C6F JUMP JUMPDEST TIMESTAMP SWAP1 JUMP 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 0x33A3 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 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 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 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3507 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x34FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x34CA JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147D DUP3 PUSH2 0x4187 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 0x35FD PUSH32 0x0 DUP3 PUSH2 0x337B 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 0x363A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x364E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3672 SWAP2 SWAP1 PUSH2 0x560D JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x3689 DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x418B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x369A DUP10 PUSH1 0xA0 ADD MLOAD PUSH2 0x418B JUMP JUMPDEST SWAP1 POP PUSH2 0x36B1 DUP4 DUP4 DUP4 DUP13 PUSH1 0xC0 ADD MLOAD DUP14 PUSH1 0xE0 ADD MLOAD PUSH2 0x44D9 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 0x3703 SWAP2 SWAP1 PUSH2 0x5ABD 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 0x3732 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x57F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x374B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x375F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3783 SWAP2 SWAP1 PUSH2 0x56F4 JUMP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP DUP5 LT DUP1 ISZERO SWAP1 PUSH2 0x37A2 JUMPI POP DUP6 PUSH2 0x120 ADD MLOAD DUP4 LT ISZERO JUMPDEST PUSH2 0x37BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5A18 JUMP JUMPDEST POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x37D9 DUP3 PUSH2 0x1796 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x381E 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 0x5EB9 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 0x3863 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 0x5D96 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x386E DUP4 DUP4 DUP4 PUSH2 0x939 JUMP JUMPDEST PUSH2 0x3879 PUSH1 0x0 DUP3 PUSH2 0x3257 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 0x389B SWAP1 DUP3 PUSH2 0x459D 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 0x38BE SWAP1 DUP3 PUSH2 0x45A9 JUMP JUMPDEST POP PUSH2 0x38CB PUSH1 0x2 DUP3 DUP5 PUSH2 0x45B5 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 0x147A DUP4 DUP4 PUSH2 0x45CB JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x392D DUP3 PUSH2 0x1796 JUMP JUMPDEST SWAP1 POP PUSH2 0x393B DUP2 PUSH1 0x0 DUP5 PUSH2 0x939 JUMP JUMPDEST PUSH2 0x3946 PUSH1 0x0 DUP4 PUSH2 0x3257 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 0x3984 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3984 SWAP2 PUSH2 0x501F 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 0x39A6 SWAP1 DUP4 PUSH2 0x459D JUMP JUMPDEST POP PUSH2 0x39B2 PUSH1 0x2 DUP4 PUSH2 0x462F JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39FB DUP4 DUP4 PUSH2 0x337B JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x147D 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 0x3A53 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x3B75 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 0x3AB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AC7 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 0x3B43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B57 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 0x3B6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29D9 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x3B96 JUMPI PUSH2 0x3B91 DUP5 DUP4 DUP4 PUSH2 0x3FEB JUMP JUMPDEST PUSH2 0x29D9 JUMP JUMPDEST PUSH2 0x29D9 DUP5 DUP5 DUP5 DUP5 PUSH2 0x463B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x3BB1 DUP7 DUP7 PUSH2 0x47D3 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10AF DUP5 DUP5 DUP5 PUSH2 0x484E JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3C6D 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 0x3C76 DUP2 PUSH2 0x3246 JUMP JUMPDEST ISZERO PUSH2 0x3CC8 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 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3CD4 PUSH1 0x0 DUP4 DUP4 PUSH2 0x939 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 0x3CF6 SWAP1 DUP3 PUSH2 0x45A9 JUMP JUMPDEST POP PUSH2 0x3D03 PUSH1 0x2 DUP3 DUP5 PUSH2 0x45B5 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x147D JUMPI POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH10 0xFFFFFFFFFFFFFFFFFFFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP5 DIV DUP3 AND DUP4 DUP2 ADD SWAP1 SWAP3 AND MUL PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000 AND DUP7 OR SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD SWAP1 DUP6 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 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 PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 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 0x3EDC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3EBD 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 0x3F3E 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 0x3F43 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x939 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 PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FA4 DUP5 DUP5 DUP5 PUSH2 0x37C6 JUMP JUMPDEST PUSH2 0x3FB0 DUP5 DUP5 DUP5 DUP5 PUSH2 0x4918 JUMP JUMPDEST PUSH2 0x29D9 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 0x5D3D 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 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 0x4095 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4076 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 0x40F7 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 0x40FC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x412A JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x412A JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1779 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 PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x147A DUP4 DUP4 PUSH2 0x4AF4 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x41A2 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x41AA JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x4204 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 PUSH32 0x5400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x4218 JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x422A JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x425E JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x427D JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x429C JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x42BB JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x42DA JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x42F9 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x4318 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x4338 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x4358 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x4378 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x4398 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x43B8 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x43D8 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x43F8 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x4418 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x4439 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x4459 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x4478 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x4495 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x44B0 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x44AC JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x44C4 JUMPI PUSH1 0x1 PUSH2 0x44C7 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 0x44F9 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 0x4524 JUMPI PUSH2 0x451D DUP6 DUP6 DUP6 PUSH2 0x4B0C JUMP JUMPDEST SWAP1 POP PUSH2 0x4594 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 0x4586 JUMPI PUSH1 0x0 PUSH2 0x454B DUP8 DUP7 DUP7 PUSH2 0x4B0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x455A DUP8 DUP10 DUP7 PUSH2 0x4B78 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 0x457B JUMPI DUP1 PUSH2 0x457D JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x4594 JUMP JUMPDEST PUSH2 0x4591 DUP6 DUP6 DUP5 PUSH2 0x4B78 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147A DUP4 DUP4 PUSH2 0x4BBE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147A DUP4 DUP4 PUSH2 0x4C84 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10AF DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x4CCE JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x460D 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 0x5D1B 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 0x461C 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 0x147A DUP4 DUP4 PUSH2 0x4D65 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 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 0x46ED JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x46CE 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 0x474F 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 0x4754 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4782 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4782 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x477F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x26B9 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 PUSH32 0x5354460000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x4817 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 0x5E97 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 0x4828 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 0x48E9 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 0x48AE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4896 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x48DB 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 0x48FC 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 0x492C DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C0C JUMP JUMPDEST PUSH2 0x4938 JUMPI POP PUSH1 0x1 PUSH2 0x10AF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A89 PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x4966 PUSH2 0x3253 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 0x49CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x49B5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x49FA 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x5D3D PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x4E39 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 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 0x4B2C JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x4B58 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH13 0x1000000000000000000000000 PUSH2 0x34D1 JUMP JUMPDEST SWAP1 POP PUSH2 0x4594 PUSH2 0x4B73 DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x34D1 JUMP JUMPDEST PUSH2 0x4E48 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 0x4B98 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x10AF PUSH2 0x4B73 DUP4 PUSH13 0x1000000000000000000000000 DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x34D1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4C7A JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4BF1 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 0x4C0E 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 0x4C3E 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 0x147D JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x147D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C90 DUP4 DUP4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0x4CC6 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 0x147D JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x147D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x4D33 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 0x34CA JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x4D46 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 0x34CA JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4C7A JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4D98 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 0x4DB8 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 0x4DF7 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 0x147D SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x10AF DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x4E5E JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4E9F 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 0x5DBA PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4EA8 DUP6 PUSH2 0x3C0C JUMP JUMPDEST PUSH2 0x4EF9 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 0x4F37 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4F18 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 0x4F99 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 0x4F9E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4FAE DUP3 DUP3 DUP7 PUSH2 0x4FB9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x4FC8 JUMPI POP DUP2 PUSH2 0x34CA JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x4FD8 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 0x48AE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4896 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 0x5045 JUMPI POP PUSH2 0x5063 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5063 SWAP2 SWAP1 PUSH2 0x5066 JUMP JUMPDEST POP JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x507B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5067 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x771 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50C0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34CA DUP2 PUSH2 0x5CC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x50DD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x50E8 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x50F8 DUP2 PUSH2 0x5CC4 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 0x5118 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5123 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x5133 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP3 POP PUSH2 0x5141 PUSH1 0x40 DUP7 ADD PUSH2 0x509C JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x5151 DUP2 PUSH2 0x5CC4 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 0x5170 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x517B DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x518B DUP2 PUSH2 0x5CC4 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 0x51B1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x51BC DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x51CC DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51EE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x51FE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x5211 PUSH2 0x520C DUP3 PUSH2 0x5C76 JUMP JUMPDEST PUSH2 0x5C52 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x5225 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 0x5255 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5260 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x50F8 DUP2 PUSH2 0x5CD9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5282 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x528D DUP2 PUSH2 0x5CC4 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 0x52AF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x52BA DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x52D1 DUP2 PUSH2 0x5CC4 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 0x52F4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x52FF DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x531D DUP2 PUSH2 0x5D0B 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 0x5349 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5360 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5373 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5381 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x5394 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 0x53B7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x34CA JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53F7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34CA DUP2 PUSH2 0x5CE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5413 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5429 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x5439 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5447 PUSH2 0x520C DUP3 PUSH2 0x5C76 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x545B JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x4594 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5C98 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x547D JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x547D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x547D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x54B7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x54D5 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE PUSH1 0x60 DUP5 SLT ISZERO PUSH2 0x54E6 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP4 POP DUP2 DUP5 LT DUP2 DUP6 GT OR ISZERO PUSH2 0x54FA JUMPI INVALID JUMPDEST POP DUP3 PUSH1 0x40 MSTORE DUP5 CALLDATALOAD SWAP3 POP PUSH2 0x550C DUP4 PUSH2 0x5CC4 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 PUSH2 0x551E DUP4 PUSH2 0x5CC4 JUMP JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x5530 PUSH1 0x40 DUP7 ADD PUSH2 0x509C JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x5543 PUSH1 0x60 DUP6 ADD PUSH2 0x507F 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 0x547D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5573 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34CA DUP2 PUSH2 0x5CF6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5590 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x559B DUP2 PUSH2 0x5CF6 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x50F8 DUP2 PUSH2 0x5CF6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x55C3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x55CE DUP2 PUSH2 0x5CF6 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 0x55EE DUP2 PUSH2 0x5CF6 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x55FF DUP2 PUSH2 0x5CF6 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 0x5627 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x5632 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH2 0x5643 DUP2 PUSH2 0x5CE7 JUMP JUMPDEST SWAP6 POP PUSH2 0x5651 PUSH1 0x40 DUP10 ADD PUSH2 0x508A JUMP JUMPDEST SWAP5 POP PUSH2 0x565F PUSH1 0x60 DUP10 ADD PUSH2 0x508A JUMP JUMPDEST SWAP4 POP PUSH2 0x566D PUSH1 0x80 DUP10 ADD PUSH2 0x508A JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH2 0x567D DUP2 PUSH2 0x5D0B JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x568E DUP2 PUSH2 0x5CD9 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 0x56AF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x147A DUP3 PUSH2 0x509C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56C9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x56E2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x50F8 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5706 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 0x572C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5751 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5764 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5772 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5783 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 0x57AA DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5C98 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 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x2 SIGNEXTEND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x4FAE PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x5792 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 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 0x5911 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x58FF DUP6 DUP4 MLOAD PUSH2 0x5792 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x58C5 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 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 0x147A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5792 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F7420617070726F7665640000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x507269636520736C69707061676520636865636B000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420746F6B656E20494400000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F7420636C6561726564000000000000000000000000000000000000000000 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 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x5BA7 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x57BE JUMP JUMPDEST PUSH2 0x5BB4 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x57C5 JUMP JUMPDEST DUP6 PUSH2 0x100 DUP4 ADD MSTORE DUP5 PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x5BD0 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x57C5 JUMP JUMPDEST PUSH2 0x5BDE PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x57C5 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5C23 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5C3D JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3BB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5C6E JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5C8A 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 0x5CB3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C9B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x29D9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x5063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x5063 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 POP PUSH6 0x726D69743A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 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 0x73206E6F74206F776E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA164736F6C PUSH4 0x43000706 STOP EXP ","sourceMap":"1019:14154:28:-:0;;;2447:27;;;-1:-1:-1;;;;;;2447:27:28;2473:1;2447:27;-1:-1:-1;;;;;2558:30:28;-1:-1:-1;;;2558:30:28;;;2759:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2949:8;2959:5;1020:204:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1020:204:30;;;;;;;;;;;;;;;;-1:-1:-1;;;1020:204:30;;;1107:5;1114:7;751:40:14;427:10;770:20;;751:18;;;:40;;:::i;:::-;3636:13:18;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3659:17:18;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3764:40:18;-1:-1:-1;;;3764:18:18;:40::i;:::-;3814:49;-1:-1:-1;;;3814:18:18;:49::i;:::-;3873:51;-1:-1:-1;;;3873:18:18;:51::i;:::-;-1:-1:-1;;1144:23:30;;::::1;::::0;;::::1;::::0;1133:34:::1;::::0;1191:26;;;::::1;::::0;;;;1177:40:::1;::::0;-1:-1:-1;;;;;;;520:18:33;;;;;;;;548:12;;;;;;;2976:36:28;;;;::::2;::::0;-1:-1:-1;1019:14154:28;;-1:-1:-1;1019:14154:28;1490:198:14;-1:-1:-1;;;;;;1573:25:14;;;;;1565:66;;;;;-1:-1:-1;;;1565:66:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1641:33:14;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1641:40:14;1677:4;1641:40;;;1490:198::o;1019:14154:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1019:14154:28;;;-1:-1:-1;1019:14154:28;:::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:394::-;;;;355:2;343:9;334:7;330:23;326:32;323:2;;;376:6;368;361:22;323:2;404:42;436:9;404:42;:::i;:::-;394:52;;465:51;512:2;501:9;497:18;465:51;:::i;:::-;455:61;;535:51;582:2;571:9;567:18;535:51;:::i;:::-;525:61;;313:279;;;;;:::o;:::-;1019:14154:28;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:25340: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":"846:315:56","statements":[{"body":{"nodeType":"YulBlock","src":"892:26:56","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"901:6:56"},{"name":"value1","nodeType":"YulIdentifier","src":"909:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"894:6:56"},"nodeType":"YulFunctionCall","src":"894:22:56"},"nodeType":"YulExpressionStatement","src":"894:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"867:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"876:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"863:3:56"},"nodeType":"YulFunctionCall","src":"863:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"888:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"859:3:56"},"nodeType":"YulFunctionCall","src":"859:32:56"},"nodeType":"YulIf","src":"856:2:56"},{"nodeType":"YulVariableDeclaration","src":"927:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"953:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"940:12:56"},"nodeType":"YulFunctionCall","src":"940:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"931:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"999:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"972:26:56"},"nodeType":"YulFunctionCall","src":"972:33:56"},"nodeType":"YulExpressionStatement","src":"972:33:56"},{"nodeType":"YulAssignment","src":"1014:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"1024:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1014:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1038:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1070:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1081:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1066:3:56"},"nodeType":"YulFunctionCall","src":"1066:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1053:12:56"},"nodeType":"YulFunctionCall","src":"1053:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1042:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1121:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1094:26:56"},"nodeType":"YulFunctionCall","src":"1094:35:56"},"nodeType":"YulExpressionStatement","src":"1094:35:56"},{"nodeType":"YulAssignment","src":"1138:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1148:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1138:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"804:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"815:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"827:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"835:6:56","type":""}],"src":"759:402:56"},{"body":{"nodeType":"YulBlock","src":"1286:500:56","statements":[{"body":{"nodeType":"YulBlock","src":"1333:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1342:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"1350:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1335:6:56"},"nodeType":"YulFunctionCall","src":"1335:22:56"},"nodeType":"YulExpressionStatement","src":"1335:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1307:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"1316:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1303:3:56"},"nodeType":"YulFunctionCall","src":"1303:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"1328:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1299:3:56"},"nodeType":"YulFunctionCall","src":"1299:33:56"},"nodeType":"YulIf","src":"1296:2:56"},{"nodeType":"YulVariableDeclaration","src":"1368:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1394:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1381:12:56"},"nodeType":"YulFunctionCall","src":"1381:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1372:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1440:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1413:26:56"},"nodeType":"YulFunctionCall","src":"1413:33:56"},"nodeType":"YulExpressionStatement","src":"1413:33:56"},{"nodeType":"YulAssignment","src":"1455:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"1465:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1455:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1479:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1511:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1522:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1507:3:56"},"nodeType":"YulFunctionCall","src":"1507:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1494:12:56"},"nodeType":"YulFunctionCall","src":"1494:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1483:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1562:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1535:26:56"},"nodeType":"YulFunctionCall","src":"1535:35:56"},"nodeType":"YulExpressionStatement","src":"1535:35:56"},{"nodeType":"YulAssignment","src":"1579:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1589:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1579:6:56"}]},{"nodeType":"YulAssignment","src":"1605:49:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1639:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1650:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1635:3:56"},"nodeType":"YulFunctionCall","src":"1635:18:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"1615:19:56"},"nodeType":"YulFunctionCall","src":"1615:39:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1605:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1663:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1695:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1706:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1691:3:56"},"nodeType":"YulFunctionCall","src":"1691:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1678:12:56"},"nodeType":"YulFunctionCall","src":"1678:32:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"1667:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"1746:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1719:26:56"},"nodeType":"YulFunctionCall","src":"1719:35:56"},"nodeType":"YulExpressionStatement","src":"1719:35:56"},{"nodeType":"YulAssignment","src":"1763:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"1773:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1763:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint24t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1228:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1239:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1251:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1259:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1267:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1275:6:56","type":""}],"src":"1166:620:56"},{"body":{"nodeType":"YulBlock","src":"1895:366:56","statements":[{"body":{"nodeType":"YulBlock","src":"1941:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1950:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"1958:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1943:6:56"},"nodeType":"YulFunctionCall","src":"1943:22:56"},"nodeType":"YulExpressionStatement","src":"1943:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1916:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"1925:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1912:3:56"},"nodeType":"YulFunctionCall","src":"1912:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"1937:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1908:3:56"},"nodeType":"YulFunctionCall","src":"1908:32:56"},"nodeType":"YulIf","src":"1905:2:56"},{"nodeType":"YulVariableDeclaration","src":"1976:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2002:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1989:12:56"},"nodeType":"YulFunctionCall","src":"1989:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1980:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2048:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2021:26:56"},"nodeType":"YulFunctionCall","src":"2021:33:56"},"nodeType":"YulExpressionStatement","src":"2021:33:56"},{"nodeType":"YulAssignment","src":"2063:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"2073:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2063:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"2087:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2119:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2130:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2115:3:56"},"nodeType":"YulFunctionCall","src":"2115:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2102:12:56"},"nodeType":"YulFunctionCall","src":"2102:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2091:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2170:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2143:26:56"},"nodeType":"YulFunctionCall","src":"2143:35:56"},"nodeType":"YulExpressionStatement","src":"2143:35:56"},{"nodeType":"YulAssignment","src":"2187:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2197:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2187:6:56"}]},{"nodeType":"YulAssignment","src":"2213:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2240:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2251:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2236:3:56"},"nodeType":"YulFunctionCall","src":"2236:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2223:12:56"},"nodeType":"YulFunctionCall","src":"2223:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2213:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1845:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1856:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1868:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1876:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1884:6:56","type":""}],"src":"1791:470:56"},{"body":{"nodeType":"YulBlock","src":"2396:936:56","statements":[{"body":{"nodeType":"YulBlock","src":"2443:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2452:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"2460:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2445:6:56"},"nodeType":"YulFunctionCall","src":"2445:22:56"},"nodeType":"YulExpressionStatement","src":"2445:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2417:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"2426:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2413:3:56"},"nodeType":"YulFunctionCall","src":"2413:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"2438:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2409:3:56"},"nodeType":"YulFunctionCall","src":"2409:33:56"},"nodeType":"YulIf","src":"2406:2:56"},{"nodeType":"YulVariableDeclaration","src":"2478:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2504:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2491:12:56"},"nodeType":"YulFunctionCall","src":"2491:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2482:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2550:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2523:26:56"},"nodeType":"YulFunctionCall","src":"2523:33:56"},"nodeType":"YulExpressionStatement","src":"2523:33:56"},{"nodeType":"YulAssignment","src":"2565:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"2575:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2565:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"2589:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2621:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2632:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2617:3:56"},"nodeType":"YulFunctionCall","src":"2617:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2604:12:56"},"nodeType":"YulFunctionCall","src":"2604:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2593:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2672:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2645:26:56"},"nodeType":"YulFunctionCall","src":"2645:35:56"},"nodeType":"YulExpressionStatement","src":"2645:35:56"},{"nodeType":"YulAssignment","src":"2689:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2699:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2689:6:56"}]},{"nodeType":"YulAssignment","src":"2715:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2742:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2753:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2738:3:56"},"nodeType":"YulFunctionCall","src":"2738:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2725:12:56"},"nodeType":"YulFunctionCall","src":"2725:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2715:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"2766:46:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2797:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2808:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2793:3:56"},"nodeType":"YulFunctionCall","src":"2793:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2780:12:56"},"nodeType":"YulFunctionCall","src":"2780:32:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2770:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"2855:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"2864:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"2872:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2857:6:56"},"nodeType":"YulFunctionCall","src":"2857:22:56"},"nodeType":"YulExpressionStatement","src":"2857:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2827:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"2835:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2824:2:56"},"nodeType":"YulFunctionCall","src":"2824:30:56"},"nodeType":"YulIf","src":"2821:2:56"},{"nodeType":"YulVariableDeclaration","src":"2890:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2904:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"2915:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2900:3:56"},"nodeType":"YulFunctionCall","src":"2900:22:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2894:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"2970:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"2979:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"2987:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2972:6:56"},"nodeType":"YulFunctionCall","src":"2972:22:56"},"nodeType":"YulExpressionStatement","src":"2972:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2949:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"2953:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2945:3:56"},"nodeType":"YulFunctionCall","src":"2945:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2960:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2941:3:56"},"nodeType":"YulFunctionCall","src":"2941:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2934:6:56"},"nodeType":"YulFunctionCall","src":"2934:35:56"},"nodeType":"YulIf","src":"2931:2:56"},{"nodeType":"YulVariableDeclaration","src":"3005:26:56","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3028:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3015:12:56"},"nodeType":"YulFunctionCall","src":"3015:16:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3009:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3040:62:56","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3098:2:56"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"3068:29:56"},"nodeType":"YulFunctionCall","src":"3068:33:56"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"3053:14:56"},"nodeType":"YulFunctionCall","src":"3053:49:56"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"3044:5:56","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3118:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3125:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3111:6:56"},"nodeType":"YulFunctionCall","src":"3111:17:56"},"nodeType":"YulExpressionStatement","src":"3111:17:56"},{"body":{"nodeType":"YulBlock","src":"3174:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"3183:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3191:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3176:6:56"},"nodeType":"YulFunctionCall","src":"3176:22:56"},"nodeType":"YulExpressionStatement","src":"3176:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3151:2:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3155:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3147:3:56"},"nodeType":"YulFunctionCall","src":"3147:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"3160:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3143:3:56"},"nodeType":"YulFunctionCall","src":"3143:20:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3165:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3140:2:56"},"nodeType":"YulFunctionCall","src":"3140:33:56"},"nodeType":"YulIf","src":"3137:2:56"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3226:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"3233:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3222:3:56"},"nodeType":"YulFunctionCall","src":"3222:14:56"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3242:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"3246:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3238:3:56"},"nodeType":"YulFunctionCall","src":"3238:11:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3251:2:56"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3209:12:56"},"nodeType":"YulFunctionCall","src":"3209:45:56"},"nodeType":"YulExpressionStatement","src":"3209:45:56"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3278:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3285:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3274:3:56"},"nodeType":"YulFunctionCall","src":"3274:14:56"},{"kind":"number","nodeType":"YulLiteral","src":"3290:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3270:3:56"},"nodeType":"YulFunctionCall","src":"3270:23:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3295:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3263:6:56"},"nodeType":"YulFunctionCall","src":"3263:39:56"},"nodeType":"YulExpressionStatement","src":"3263:39:56"},{"nodeType":"YulAssignment","src":"3311:15:56","value":{"name":"array","nodeType":"YulIdentifier","src":"3321:5:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3311:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2338:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2349:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2361:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2369:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2377:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2385:6:56","type":""}],"src":"2266:1066:56"},{"body":{"nodeType":"YulBlock","src":"3421:312:56","statements":[{"body":{"nodeType":"YulBlock","src":"3467:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3476:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"3484:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3469:6:56"},"nodeType":"YulFunctionCall","src":"3469:22:56"},"nodeType":"YulExpressionStatement","src":"3469:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3442:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"3451:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3438:3:56"},"nodeType":"YulFunctionCall","src":"3438:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"3463:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3434:3:56"},"nodeType":"YulFunctionCall","src":"3434:32:56"},"nodeType":"YulIf","src":"3431:2:56"},{"nodeType":"YulVariableDeclaration","src":"3502:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3528:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3515:12:56"},"nodeType":"YulFunctionCall","src":"3515:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3506:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3574:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"3547:26:56"},"nodeType":"YulFunctionCall","src":"3547:33:56"},"nodeType":"YulExpressionStatement","src":"3547:33:56"},{"nodeType":"YulAssignment","src":"3589:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"3599:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3589:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"3613:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3645:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"3656:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3641:3:56"},"nodeType":"YulFunctionCall","src":"3641:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3628:12:56"},"nodeType":"YulFunctionCall","src":"3628:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3617:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3693:7:56"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"3669:23:56"},"nodeType":"YulFunctionCall","src":"3669:32:56"},"nodeType":"YulExpressionStatement","src":"3669:32:56"},{"nodeType":"YulAssignment","src":"3710:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3720:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3710:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3379:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3390:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3402:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3410:6:56","type":""}],"src":"3337:396:56"},{"body":{"nodeType":"YulBlock","src":"3825:240:56","statements":[{"body":{"nodeType":"YulBlock","src":"3871:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3880:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"3888:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3873:6:56"},"nodeType":"YulFunctionCall","src":"3873:22:56"},"nodeType":"YulExpressionStatement","src":"3873:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3846:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"3855:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3842:3:56"},"nodeType":"YulFunctionCall","src":"3842:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"3867:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3838:3:56"},"nodeType":"YulFunctionCall","src":"3838:32:56"},"nodeType":"YulIf","src":"3835:2:56"},{"nodeType":"YulVariableDeclaration","src":"3906:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3932:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3919:12:56"},"nodeType":"YulFunctionCall","src":"3919:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3910:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3978:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"3951:26:56"},"nodeType":"YulFunctionCall","src":"3951:33:56"},"nodeType":"YulExpressionStatement","src":"3951:33:56"},{"nodeType":"YulAssignment","src":"3993:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"4003:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3993:6:56"}]},{"nodeType":"YulAssignment","src":"4017:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:56"},"nodeType":"YulFunctionCall","src":"4040:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:56"},"nodeType":"YulFunctionCall","src":"4027:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4017:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3783:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3794:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3806:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3814:6:56","type":""}],"src":"3738:327:56"},{"body":{"nodeType":"YulBlock","src":"4174:366:56","statements":[{"body":{"nodeType":"YulBlock","src":"4220:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4229:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"4237:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4222:6:56"},"nodeType":"YulFunctionCall","src":"4222:22:56"},"nodeType":"YulExpressionStatement","src":"4222:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4195:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"4204:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4191:3:56"},"nodeType":"YulFunctionCall","src":"4191:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"4216:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4187:3:56"},"nodeType":"YulFunctionCall","src":"4187:32:56"},"nodeType":"YulIf","src":"4184:2:56"},{"nodeType":"YulVariableDeclaration","src":"4255:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4281:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4268:12:56"},"nodeType":"YulFunctionCall","src":"4268:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4259:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4327:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4300:26:56"},"nodeType":"YulFunctionCall","src":"4300:33:56"},"nodeType":"YulExpressionStatement","src":"4300:33:56"},{"nodeType":"YulAssignment","src":"4342:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"4352:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4342:6:56"}]},{"nodeType":"YulAssignment","src":"4366:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4393:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4404:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4389:3:56"},"nodeType":"YulFunctionCall","src":"4389:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4376:12:56"},"nodeType":"YulFunctionCall","src":"4376:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4366:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"4417:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4449:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4460:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:56"},"nodeType":"YulFunctionCall","src":"4445:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4432:12:56"},"nodeType":"YulFunctionCall","src":"4432:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4421:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"4500:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4473:26:56"},"nodeType":"YulFunctionCall","src":"4473:35:56"},"nodeType":"YulExpressionStatement","src":"4473:35:56"},{"nodeType":"YulAssignment","src":"4517:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"4527:7:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4517:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4124:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4135:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4147:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4155:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4163:6:56","type":""}],"src":"4070:470:56"},{"body":{"nodeType":"YulBlock","src":"4698:520:56","statements":[{"body":{"nodeType":"YulBlock","src":"4745:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4754:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"4762:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4747:6:56"},"nodeType":"YulFunctionCall","src":"4747:22:56"},"nodeType":"YulExpressionStatement","src":"4747:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4719:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"4728:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4715:3:56"},"nodeType":"YulFunctionCall","src":"4715:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"4740:3:56","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4711:3:56"},"nodeType":"YulFunctionCall","src":"4711:33:56"},"nodeType":"YulIf","src":"4708:2:56"},{"nodeType":"YulVariableDeclaration","src":"4780:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4806:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4793:12:56"},"nodeType":"YulFunctionCall","src":"4793:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4784:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4852:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4825:26:56"},"nodeType":"YulFunctionCall","src":"4825:33:56"},"nodeType":"YulExpressionStatement","src":"4825:33:56"},{"nodeType":"YulAssignment","src":"4867:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"4877:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4867:6:56"}]},{"nodeType":"YulAssignment","src":"4891:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4918:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4929:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4914:3:56"},"nodeType":"YulFunctionCall","src":"4914:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4901:12:56"},"nodeType":"YulFunctionCall","src":"4901:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4891:6:56"}]},{"nodeType":"YulAssignment","src":"4942:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4969:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4980:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4965:3:56"},"nodeType":"YulFunctionCall","src":"4965:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4952:12:56"},"nodeType":"YulFunctionCall","src":"4952:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4942:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"4993:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5025:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5036:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5021:3:56"},"nodeType":"YulFunctionCall","src":"5021:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5008:12:56"},"nodeType":"YulFunctionCall","src":"5008:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4997:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5074:7:56"}],"functionName":{"name":"validator_revert_t_uint8","nodeType":"YulIdentifier","src":"5049:24:56"},"nodeType":"YulFunctionCall","src":"5049:33:56"},"nodeType":"YulExpressionStatement","src":"5049:33:56"},{"nodeType":"YulAssignment","src":"5091:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"5101:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5091:6:56"}]},{"nodeType":"YulAssignment","src":"5117:43:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5144:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5155:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5140:3:56"},"nodeType":"YulFunctionCall","src":"5140:19:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5127:12:56"},"nodeType":"YulFunctionCall","src":"5127:33:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5117:6:56"}]},{"nodeType":"YulAssignment","src":"5169:43:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5196:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5207:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5192:3:56"},"nodeType":"YulFunctionCall","src":"5192:19:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5179:12:56"},"nodeType":"YulFunctionCall","src":"5179:33:56"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"5169:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4624:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4635:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4647:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4655:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4663:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4671:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4679:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"4687:6:56","type":""}],"src":"4545:673:56"},{"body":{"nodeType":"YulBlock","src":"5339:561:56","statements":[{"body":{"nodeType":"YulBlock","src":"5385:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5394:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5402:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5387:6:56"},"nodeType":"YulFunctionCall","src":"5387:22:56"},"nodeType":"YulExpressionStatement","src":"5387:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5360:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"5369:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5356:3:56"},"nodeType":"YulFunctionCall","src":"5356:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"5381:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5352:3:56"},"nodeType":"YulFunctionCall","src":"5352:32:56"},"nodeType":"YulIf","src":"5349:2:56"},{"nodeType":"YulVariableDeclaration","src":"5420:37:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5447:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5434:12:56"},"nodeType":"YulFunctionCall","src":"5434:23:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5424:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5466:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"5476:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5470:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5521:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5530:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5538:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5523:6:56"},"nodeType":"YulFunctionCall","src":"5523:22:56"},"nodeType":"YulExpressionStatement","src":"5523:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5509:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"5517:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5506:2:56"},"nodeType":"YulFunctionCall","src":"5506:14:56"},"nodeType":"YulIf","src":"5503:2:56"},{"nodeType":"YulVariableDeclaration","src":"5556:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5570:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"5581:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5566:3:56"},"nodeType":"YulFunctionCall","src":"5566:22:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5560:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5636:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5645:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5653:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5638:6:56"},"nodeType":"YulFunctionCall","src":"5638:22:56"},"nodeType":"YulExpressionStatement","src":"5638:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5615:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"5619:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5611:3:56"},"nodeType":"YulFunctionCall","src":"5611:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5626:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5607:3:56"},"nodeType":"YulFunctionCall","src":"5607:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5600:6:56"},"nodeType":"YulFunctionCall","src":"5600:35:56"},"nodeType":"YulIf","src":"5597:2:56"},{"nodeType":"YulVariableDeclaration","src":"5671:30:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5698:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5685:12:56"},"nodeType":"YulFunctionCall","src":"5685:16:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5675:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5728:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5737:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5745:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5730:6:56"},"nodeType":"YulFunctionCall","src":"5730:22:56"},"nodeType":"YulExpressionStatement","src":"5730:22:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5716:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"5724:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5713:2:56"},"nodeType":"YulFunctionCall","src":"5713:14:56"},"nodeType":"YulIf","src":"5710:2:56"},{"body":{"nodeType":"YulBlock","src":"5813:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5822:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5830:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5815:6:56"},"nodeType":"YulFunctionCall","src":"5815:22:56"},"nodeType":"YulExpressionStatement","src":"5815:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5777:2:56"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5785:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"5793:2:56","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5781:3:56"},"nodeType":"YulFunctionCall","src":"5781:15:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5773:3:56"},"nodeType":"YulFunctionCall","src":"5773:24:56"},{"kind":"number","nodeType":"YulLiteral","src":"5799:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5769:3:56"},"nodeType":"YulFunctionCall","src":"5769:33:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5804:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5766:2:56"},"nodeType":"YulFunctionCall","src":"5766:46:56"},"nodeType":"YulIf","src":"5763:2:56"},{"nodeType":"YulAssignment","src":"5848:21:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5862:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"5866:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5858:3:56"},"nodeType":"YulFunctionCall","src":"5858:11:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5848:6:56"}]},{"nodeType":"YulAssignment","src":"5878:16:56","value":{"name":"length","nodeType":"YulIdentifier","src":"5888:6:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5878:6:56"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5297:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5308:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5320:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5328:6:56","type":""}],"src":"5223:677:56"},{"body":{"nodeType":"YulBlock","src":"5974:283:56","statements":[{"body":{"nodeType":"YulBlock","src":"6020:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6029:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6037:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6022:6:56"},"nodeType":"YulFunctionCall","src":"6022:22:56"},"nodeType":"YulExpressionStatement","src":"6022:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5995:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6004:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5991:3:56"},"nodeType":"YulFunctionCall","src":"5991:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6016:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5987:3:56"},"nodeType":"YulFunctionCall","src":"5987:32:56"},"nodeType":"YulIf","src":"5984:2:56"},{"nodeType":"YulVariableDeclaration","src":"6055:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6081:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6068:12:56"},"nodeType":"YulFunctionCall","src":"6068:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6059:5:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"6201:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6210:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6218:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6203:6:56"},"nodeType":"YulFunctionCall","src":"6203:22:56"},"nodeType":"YulExpressionStatement","src":"6203:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6113:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6124:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"6131:66:56","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6120:3:56"},"nodeType":"YulFunctionCall","src":"6120:78:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6110:2:56"},"nodeType":"YulFunctionCall","src":"6110:89:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6103:6:56"},"nodeType":"YulFunctionCall","src":"6103:97:56"},"nodeType":"YulIf","src":"6100:2:56"},{"nodeType":"YulAssignment","src":"6236:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"6246:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6236:6:56"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5940:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5951:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5963:6:56","type":""}],"src":"5905:352:56"},{"body":{"nodeType":"YulBlock","src":"6330:187:56","statements":[{"body":{"nodeType":"YulBlock","src":"6376:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6385:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6393:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6378:6:56"},"nodeType":"YulFunctionCall","src":"6378:22:56"},"nodeType":"YulExpressionStatement","src":"6378:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6351:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6360:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6347:3:56"},"nodeType":"YulFunctionCall","src":"6347:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6372:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6343:3:56"},"nodeType":"YulFunctionCall","src":"6343:32:56"},"nodeType":"YulIf","src":"6340:2:56"},{"nodeType":"YulVariableDeclaration","src":"6411:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6437:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6424:12:56"},"nodeType":"YulFunctionCall","src":"6424:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6415:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6481:5:56"}],"functionName":{"name":"validator_revert_t_int24","nodeType":"YulIdentifier","src":"6456:24:56"},"nodeType":"YulFunctionCall","src":"6456:31:56"},"nodeType":"YulExpressionStatement","src":"6456:31:56"},{"nodeType":"YulAssignment","src":"6496:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"6506:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6496:6:56"}]}]},"name":"abi_decode_tuple_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6296:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6307:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6319:6:56","type":""}],"src":"6262:255:56"},{"body":{"nodeType":"YulBlock","src":"6613:585:56","statements":[{"body":{"nodeType":"YulBlock","src":"6659:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6668:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6676:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6661:6:56"},"nodeType":"YulFunctionCall","src":"6661:22:56"},"nodeType":"YulExpressionStatement","src":"6661:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6634:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6643:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6630:3:56"},"nodeType":"YulFunctionCall","src":"6630:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6626:3:56"},"nodeType":"YulFunctionCall","src":"6626:32:56"},"nodeType":"YulIf","src":"6623:2:56"},{"nodeType":"YulVariableDeclaration","src":"6694:30:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6714:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6708:5:56"},"nodeType":"YulFunctionCall","src":"6708:16:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6698:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"6767:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6776:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6784:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6769:6:56"},"nodeType":"YulFunctionCall","src":"6769:22:56"},"nodeType":"YulExpressionStatement","src":"6769:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6739:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"6747:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6736:2:56"},"nodeType":"YulFunctionCall","src":"6736:30:56"},"nodeType":"YulIf","src":"6733:2:56"},{"nodeType":"YulVariableDeclaration","src":"6802:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6816:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"6827:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6812:3:56"},"nodeType":"YulFunctionCall","src":"6812:22:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6806:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"6882:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6891:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6899:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6884:6:56"},"nodeType":"YulFunctionCall","src":"6884:22:56"},"nodeType":"YulExpressionStatement","src":"6884:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6861:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"6865:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6857:3:56"},"nodeType":"YulFunctionCall","src":"6857:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6872:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6853:3:56"},"nodeType":"YulFunctionCall","src":"6853:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6846:6:56"},"nodeType":"YulFunctionCall","src":"6846:35:56"},"nodeType":"YulIf","src":"6843:2:56"},{"nodeType":"YulVariableDeclaration","src":"6917:19:56","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6933:2:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6927:5:56"},"nodeType":"YulFunctionCall","src":"6927:9:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6921:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6945:62:56","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7003:2:56"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"6973:29:56"},"nodeType":"YulFunctionCall","src":"6973:33:56"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"6958:14:56"},"nodeType":"YulFunctionCall","src":"6958:49:56"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"6949:5:56","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"7023:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"7030:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7016:6:56"},"nodeType":"YulFunctionCall","src":"7016:17:56"},"nodeType":"YulExpressionStatement","src":"7016:17:56"},{"body":{"nodeType":"YulBlock","src":"7079:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7088:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7096:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7081:6:56"},"nodeType":"YulFunctionCall","src":"7081:22:56"},"nodeType":"YulExpressionStatement","src":"7081:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7056:2:56"},{"name":"_2","nodeType":"YulIdentifier","src":"7060:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7052:3:56"},"nodeType":"YulFunctionCall","src":"7052:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"7065:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7048:3:56"},"nodeType":"YulFunctionCall","src":"7048:20:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7070:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7045:2:56"},"nodeType":"YulFunctionCall","src":"7045:33:56"},"nodeType":"YulIf","src":"7042:2:56"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7140:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"7144:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7136:3:56"},"nodeType":"YulFunctionCall","src":"7136:11:56"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"7153:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"7160:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7149:3:56"},"nodeType":"YulFunctionCall","src":"7149:14:56"},{"name":"_2","nodeType":"YulIdentifier","src":"7165:2:56"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"7114:21:56"},"nodeType":"YulFunctionCall","src":"7114:54:56"},"nodeType":"YulExpressionStatement","src":"7114:54:56"},{"nodeType":"YulAssignment","src":"7177:15:56","value":{"name":"array","nodeType":"YulIdentifier","src":"7187:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7177:6:56"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6579:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6590:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6602:6:56","type":""}],"src":"6522:676:56"},{"body":{"nodeType":"YulBlock","src":"7306:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"7353:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7362:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7370:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7355:6:56"},"nodeType":"YulFunctionCall","src":"7355:22:56"},"nodeType":"YulExpressionStatement","src":"7355:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7327:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"7336:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7323:3:56"},"nodeType":"YulFunctionCall","src":"7323:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"7348:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7319:3:56"},"nodeType":"YulFunctionCall","src":"7319:33:56"},"nodeType":"YulIf","src":"7316:2:56"},{"nodeType":"YulAssignment","src":"7388:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"7398:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7388:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_CollectParams_$6761_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7272:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7283:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7295:6:56","type":""}],"src":"7203:210:56"},{"body":{"nodeType":"YulBlock","src":"7531:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"7578:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7587:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7595:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7580:6:56"},"nodeType":"YulFunctionCall","src":"7580:22:56"},"nodeType":"YulExpressionStatement","src":"7580:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7552:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"7561:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7548:3:56"},"nodeType":"YulFunctionCall","src":"7548:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"7573:3:56","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7544:3:56"},"nodeType":"YulFunctionCall","src":"7544:33:56"},"nodeType":"YulIf","src":"7541:2:56"},{"nodeType":"YulAssignment","src":"7613:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"7623:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7613:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7497:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7508:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7520:6:56","type":""}],"src":"7418:220:56"},{"body":{"nodeType":"YulBlock","src":"7756:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"7803:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7812:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7820:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7805:6:56"},"nodeType":"YulFunctionCall","src":"7805:22:56"},"nodeType":"YulExpressionStatement","src":"7805:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7777:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"7786:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7773:3:56"},"nodeType":"YulFunctionCall","src":"7773:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"7798:3:56","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7769:3:56"},"nodeType":"YulFunctionCall","src":"7769:33:56"},"nodeType":"YulIf","src":"7766:2:56"},{"nodeType":"YulAssignment","src":"7838:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"7848:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7838:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7722:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7733:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7745:6:56","type":""}],"src":"7643:220:56"},{"body":{"nodeType":"YulBlock","src":"7972:1008:56","statements":[{"nodeType":"YulVariableDeclaration","src":"7982:33:56","value":{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7996:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"8005:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7992:3:56"},"nodeType":"YulFunctionCall","src":"7992:23:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7986:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"8040:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8049:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8057:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8042:6:56"},"nodeType":"YulFunctionCall","src":"8042:22:56"},"nodeType":"YulExpressionStatement","src":"8042:22:56"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"8031:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"8035:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8027:3:56"},"nodeType":"YulFunctionCall","src":"8027:12:56"},"nodeType":"YulIf","src":"8024:2:56"},{"nodeType":"YulVariableDeclaration","src":"8075:25:56","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8095:4:56","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8089:5:56"},"nodeType":"YulFunctionCall","src":"8089:11:56"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"8079:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8109:35:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8131:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"8139:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8127:3:56"},"nodeType":"YulFunctionCall","src":"8127:17:56"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"8113:10:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8153:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"8163:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"8157:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"8240:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"8242:7:56"},"nodeType":"YulFunctionCall","src":"8242:9:56"},"nodeType":"YulExpressionStatement","src":"8242:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8199:10:56"},{"name":"_2","nodeType":"YulIdentifier","src":"8211:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8196:2:56"},"nodeType":"YulFunctionCall","src":"8196:18:56"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8219:10:56"},{"name":"memPtr","nodeType":"YulIdentifier","src":"8231:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8216:2:56"},"nodeType":"YulFunctionCall","src":"8216:22:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8193:2:56"},"nodeType":"YulFunctionCall","src":"8193:46:56"},"nodeType":"YulIf","src":"8190:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8269:4:56","type":"","value":"0x40"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8275:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8262:6:56"},"nodeType":"YulFunctionCall","src":"8262:24:56"},"nodeType":"YulExpressionStatement","src":"8262:24:56"},{"body":{"nodeType":"YulBlock","src":"8312:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8321:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8329:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8314:6:56"},"nodeType":"YulFunctionCall","src":"8314:22:56"},"nodeType":"YulExpressionStatement","src":"8314:22:56"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"8302:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"8306:4:56","type":"","value":"0x60"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8298:3:56"},"nodeType":"YulFunctionCall","src":"8298:13:56"},"nodeType":"YulIf","src":"8295:2:56"},{"nodeType":"YulVariableDeclaration","src":"8347:36:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8371:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"8379:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8367:3:56"},"nodeType":"YulFunctionCall","src":"8367:16:56"},"variables":[{"name":"newFreePtr_1","nodeType":"YulTypedName","src":"8351:12:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"8450:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"8452:7:56"},"nodeType":"YulFunctionCall","src":"8452:9:56"},"nodeType":"YulExpressionStatement","src":"8452:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"8401:12:56"},{"name":"_2","nodeType":"YulIdentifier","src":"8415:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8398:2:56"},"nodeType":"YulFunctionCall","src":"8398:20:56"},{"arguments":[{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"8423:12:56"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8437:10:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8420:2:56"},"nodeType":"YulFunctionCall","src":"8420:28:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8395:2:56"},"nodeType":"YulFunctionCall","src":"8395:54:56"},"nodeType":"YulIf","src":"8392:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8479:4:56","type":"","value":"0x40"},{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"8485:12:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8472:6:56"},"nodeType":"YulFunctionCall","src":"8472:26:56"},"nodeType":"YulExpressionStatement","src":"8472:26:56"},{"nodeType":"YulVariableDeclaration","src":"8507:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8533:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8520:12:56"},"nodeType":"YulFunctionCall","src":"8520:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8511:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8579:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8552:26:56"},"nodeType":"YulFunctionCall","src":"8552:33:56"},"nodeType":"YulExpressionStatement","src":"8552:33:56"},{"expression":{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8601:10:56"},{"name":"value","nodeType":"YulIdentifier","src":"8613:5:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8594:6:56"},"nodeType":"YulFunctionCall","src":"8594:25:56"},"nodeType":"YulExpressionStatement","src":"8594:25:56"},{"nodeType":"YulVariableDeclaration","src":"8628:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8660:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"8671:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8656:3:56"},"nodeType":"YulFunctionCall","src":"8656:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8643:12:56"},"nodeType":"YulFunctionCall","src":"8643:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8632:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8711:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8684:26:56"},"nodeType":"YulFunctionCall","src":"8684:35:56"},"nodeType":"YulExpressionStatement","src":"8684:35:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8739:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"8747:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8735:3:56"},"nodeType":"YulFunctionCall","src":"8735:17:56"},{"name":"value_1","nodeType":"YulIdentifier","src":"8754:7:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8728:6:56"},"nodeType":"YulFunctionCall","src":"8728:34:56"},"nodeType":"YulExpressionStatement","src":"8728:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8782:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"8790:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8778:3:56"},"nodeType":"YulFunctionCall","src":"8778:16:56"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8820:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"8831:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8816:3:56"},"nodeType":"YulFunctionCall","src":"8816:20:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"8796:19:56"},"nodeType":"YulFunctionCall","src":"8796:41:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8771:6:56"},"nodeType":"YulFunctionCall","src":"8771:67:56"},"nodeType":"YulExpressionStatement","src":"8771:67:56"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8854:6:56"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8862:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8847:6:56"},"nodeType":"YulFunctionCall","src":"8847:26:56"},"nodeType":"YulExpressionStatement","src":"8847:26:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8893:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"8901:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8889:3:56"},"nodeType":"YulFunctionCall","src":"8889:15:56"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8931:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"8942:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8927:3:56"},"nodeType":"YulFunctionCall","src":"8927:20:56"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"8906:20:56"},"nodeType":"YulFunctionCall","src":"8906:42:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8882:6:56"},"nodeType":"YulFunctionCall","src":"8882:67:56"},"nodeType":"YulExpressionStatement","src":"8882:67:56"},{"nodeType":"YulAssignment","src":"8958:16:56","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"8968:6:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8958:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_MintCallbackData_$5737_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7938:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7949:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7961:6:56","type":""}],"src":"7868:1112:56"},{"body":{"nodeType":"YulBlock","src":"9085:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"9132:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9141:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"9149:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9134:6:56"},"nodeType":"YulFunctionCall","src":"9134:22:56"},"nodeType":"YulExpressionStatement","src":"9134:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9106:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"9115:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9102:3:56"},"nodeType":"YulFunctionCall","src":"9102:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"9127:3:56","type":"","value":"352"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9098:3:56"},"nodeType":"YulFunctionCall","src":"9098:33:56"},"nodeType":"YulIf","src":"9095:2:56"},{"nodeType":"YulAssignment","src":"9167:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"9177:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9167:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_MintParams_$6692_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9051:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9062:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9074:6:56","type":""}],"src":"8985:207:56"},{"body":{"nodeType":"YulBlock","src":"9267:189:56","statements":[{"body":{"nodeType":"YulBlock","src":"9313:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9322:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"9330:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9315:6:56"},"nodeType":"YulFunctionCall","src":"9315:22:56"},"nodeType":"YulExpressionStatement","src":"9315:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9288:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"9297:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9284:3:56"},"nodeType":"YulFunctionCall","src":"9284:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"9309:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9280:3:56"},"nodeType":"YulFunctionCall","src":"9280:32:56"},"nodeType":"YulIf","src":"9277:2:56"},{"nodeType":"YulVariableDeclaration","src":"9348:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9374:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9361:12:56"},"nodeType":"YulFunctionCall","src":"9361:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9352:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9420:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"9393:26:56"},"nodeType":"YulFunctionCall","src":"9393:33:56"},"nodeType":"YulExpressionStatement","src":"9393:33:56"},{"nodeType":"YulAssignment","src":"9435:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"9445:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9435:6:56"}]}]},"name":"abi_decode_tuple_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9233:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9244:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9256:6:56","type":""}],"src":"9197:259:56"},{"body":{"nodeType":"YulBlock","src":"9559:301:56","statements":[{"body":{"nodeType":"YulBlock","src":"9605:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9614:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"9622:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9607:6:56"},"nodeType":"YulFunctionCall","src":"9607:22:56"},"nodeType":"YulExpressionStatement","src":"9607:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9580:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"9589:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9576:3:56"},"nodeType":"YulFunctionCall","src":"9576:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"9601:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9572:3:56"},"nodeType":"YulFunctionCall","src":"9572:32:56"},"nodeType":"YulIf","src":"9569:2:56"},{"nodeType":"YulVariableDeclaration","src":"9640:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9659:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9653:5:56"},"nodeType":"YulFunctionCall","src":"9653:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9644:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9705:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"9678:26:56"},"nodeType":"YulFunctionCall","src":"9678:33:56"},"nodeType":"YulExpressionStatement","src":"9678:33:56"},{"nodeType":"YulAssignment","src":"9720:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"9730:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9720:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"9744:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9769:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"9780:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9765:3:56"},"nodeType":"YulFunctionCall","src":"9765:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9759:5:56"},"nodeType":"YulFunctionCall","src":"9759:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9748:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9820:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"9793:26:56"},"nodeType":"YulFunctionCall","src":"9793:35:56"},"nodeType":"YulExpressionStatement","src":"9793:35:56"},{"nodeType":"YulAssignment","src":"9837:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"9847:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9837:6:56"}]}]},"name":"abi_decode_tuple_t_uint128t_uint128_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9517:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9528:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9540:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9548:6:56","type":""}],"src":"9461:399:56"},{"body":{"nodeType":"YulBlock","src":"10014:510:56","statements":[{"body":{"nodeType":"YulBlock","src":"10061:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"10070:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"10078:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10063:6:56"},"nodeType":"YulFunctionCall","src":"10063:22:56"},"nodeType":"YulExpressionStatement","src":"10063:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10035:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"10044:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10031:3:56"},"nodeType":"YulFunctionCall","src":"10031:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"10056:3:56","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10027:3:56"},"nodeType":"YulFunctionCall","src":"10027:33:56"},"nodeType":"YulIf","src":"10024:2:56"},{"nodeType":"YulVariableDeclaration","src":"10096:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10115:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10109:5:56"},"nodeType":"YulFunctionCall","src":"10109:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10100:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10161:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10134:26:56"},"nodeType":"YulFunctionCall","src":"10134:33:56"},"nodeType":"YulExpressionStatement","src":"10134:33:56"},{"nodeType":"YulAssignment","src":"10176:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"10186:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10176:6:56"}]},{"nodeType":"YulAssignment","src":"10200:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10220:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10231:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10216:3:56"},"nodeType":"YulFunctionCall","src":"10216:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10210:5:56"},"nodeType":"YulFunctionCall","src":"10210:25:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10200:6:56"}]},{"nodeType":"YulAssignment","src":"10244:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10264:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10275:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10260:3:56"},"nodeType":"YulFunctionCall","src":"10260:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10254:5:56"},"nodeType":"YulFunctionCall","src":"10254:25:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"10244:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"10288:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10313:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10324:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10309:3:56"},"nodeType":"YulFunctionCall","src":"10309:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10303:5:56"},"nodeType":"YulFunctionCall","src":"10303:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"10292:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"10364:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10337:26:56"},"nodeType":"YulFunctionCall","src":"10337:35:56"},"nodeType":"YulExpressionStatement","src":"10337:35:56"},{"nodeType":"YulAssignment","src":"10381:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"10391:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"10381:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"10407:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10432:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10443:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10428:3:56"},"nodeType":"YulFunctionCall","src":"10428:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10422:5:56"},"nodeType":"YulFunctionCall","src":"10422:26:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"10411:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"10484:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10457:26:56"},"nodeType":"YulFunctionCall","src":"10457:35:56"},"nodeType":"YulExpressionStatement","src":"10457:35:56"},{"nodeType":"YulAssignment","src":"10501:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"10511:7:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"10501:6:56"}]}]},"name":"abi_decode_tuple_t_uint128t_uint256t_uint256t_uint128t_uint128_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9948:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9959:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9971:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9979:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9987:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9995:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10003:6:56","type":""}],"src":"9865:659:56"},{"body":{"nodeType":"YulBlock","src":"10702:743:56","statements":[{"body":{"nodeType":"YulBlock","src":"10749:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"10758:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"10766:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10751:6:56"},"nodeType":"YulFunctionCall","src":"10751:22:56"},"nodeType":"YulExpressionStatement","src":"10751:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10723:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"10732:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10719:3:56"},"nodeType":"YulFunctionCall","src":"10719:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"10744:3:56","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10715:3:56"},"nodeType":"YulFunctionCall","src":"10715:33:56"},"nodeType":"YulIf","src":"10712:2:56"},{"nodeType":"YulVariableDeclaration","src":"10784:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10803:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10797:5:56"},"nodeType":"YulFunctionCall","src":"10797:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10788:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10849:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"10822:26:56"},"nodeType":"YulFunctionCall","src":"10822:33:56"},"nodeType":"YulExpressionStatement","src":"10822:33:56"},{"nodeType":"YulAssignment","src":"10864:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"10874:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10864:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"10888:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10913:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10924:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10909:3:56"},"nodeType":"YulFunctionCall","src":"10909:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10903:5:56"},"nodeType":"YulFunctionCall","src":"10903:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"10892:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"10962:7:56"}],"functionName":{"name":"validator_revert_t_int24","nodeType":"YulIdentifier","src":"10937:24:56"},"nodeType":"YulFunctionCall","src":"10937:33:56"},"nodeType":"YulExpressionStatement","src":"10937:33:56"},{"nodeType":"YulAssignment","src":"10979:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"10989:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10979:6:56"}]},{"nodeType":"YulAssignment","src":"11005:60:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11050:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11061:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11046:3:56"},"nodeType":"YulFunctionCall","src":"11046:18:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"11015:30:56"},"nodeType":"YulFunctionCall","src":"11015:50:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"11005:6:56"}]},{"nodeType":"YulAssignment","src":"11074:60:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11119:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11130:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11115:3:56"},"nodeType":"YulFunctionCall","src":"11115:18:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"11084:30:56"},"nodeType":"YulFunctionCall","src":"11084:50:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"11074:6:56"}]},{"nodeType":"YulAssignment","src":"11143:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11188:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11199:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11184:3:56"},"nodeType":"YulFunctionCall","src":"11184:19:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"11153:30:56"},"nodeType":"YulFunctionCall","src":"11153:51:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"11143:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"11213:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11238:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11249:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11234:3:56"},"nodeType":"YulFunctionCall","src":"11234:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11228:5:56"},"nodeType":"YulFunctionCall","src":"11228:26:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"11217:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"11288:7:56"}],"functionName":{"name":"validator_revert_t_uint8","nodeType":"YulIdentifier","src":"11263:24:56"},"nodeType":"YulFunctionCall","src":"11263:33:56"},"nodeType":"YulExpressionStatement","src":"11263:33:56"},{"nodeType":"YulAssignment","src":"11305:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"11315:7:56"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"11305:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"11331:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11356:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11367:3:56","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11352:3:56"},"nodeType":"YulFunctionCall","src":"11352:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11346:5:56"},"nodeType":"YulFunctionCall","src":"11346:26:56"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"11335:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"11405:7:56"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"11381:23:56"},"nodeType":"YulFunctionCall","src":"11381:32:56"},"nodeType":"YulExpressionStatement","src":"11381:32:56"},{"nodeType":"YulAssignment","src":"11422:17:56","value":{"name":"value_3","nodeType":"YulIdentifier","src":"11432:7:56"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"11422:6:56"}]}]},"name":"abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10620:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10631:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10643:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10651:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10659:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10667:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10675:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"10683:6:56","type":""},{"name":"value6","nodeType":"YulTypedName","src":"10691:6:56","type":""}],"src":"10529:916:56"},{"body":{"nodeType":"YulBlock","src":"11519:127:56","statements":[{"body":{"nodeType":"YulBlock","src":"11565:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11574:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"11582:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11567:6:56"},"nodeType":"YulFunctionCall","src":"11567:22:56"},"nodeType":"YulExpressionStatement","src":"11567:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11540:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"11549:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11536:3:56"},"nodeType":"YulFunctionCall","src":"11536:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"11561:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11532:3:56"},"nodeType":"YulFunctionCall","src":"11532:32:56"},"nodeType":"YulIf","src":"11529:2:56"},{"nodeType":"YulAssignment","src":"11600:40:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11630:9:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"11610:19:56"},"nodeType":"YulFunctionCall","src":"11610:30:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11600:6:56"}]}]},"name":"abi_decode_tuple_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11485:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11496:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11508:6:56","type":""}],"src":"11450:196:56"},{"body":{"nodeType":"YulBlock","src":"11721:120:56","statements":[{"body":{"nodeType":"YulBlock","src":"11767:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11776:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"11784:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11769:6:56"},"nodeType":"YulFunctionCall","src":"11769:22:56"},"nodeType":"YulExpressionStatement","src":"11769:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11742:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"11751:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11738:3:56"},"nodeType":"YulFunctionCall","src":"11738:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"11763:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11734:3:56"},"nodeType":"YulFunctionCall","src":"11734:32:56"},"nodeType":"YulIf","src":"11731:2:56"},{"nodeType":"YulAssignment","src":"11802:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11825:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11812:12:56"},"nodeType":"YulFunctionCall","src":"11812:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11802:6:56"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11687:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11698:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11710:6:56","type":""}],"src":"11651:190:56"},{"body":{"nodeType":"YulBlock","src":"11933:240:56","statements":[{"body":{"nodeType":"YulBlock","src":"11979:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11988:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"11996:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11981:6:56"},"nodeType":"YulFunctionCall","src":"11981:22:56"},"nodeType":"YulExpressionStatement","src":"11981:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11954:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"11963:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11950:3:56"},"nodeType":"YulFunctionCall","src":"11950:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"11975:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11946:3:56"},"nodeType":"YulFunctionCall","src":"11946:32:56"},"nodeType":"YulIf","src":"11943:2:56"},{"nodeType":"YulAssignment","src":"12014:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12037:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12024:12:56"},"nodeType":"YulFunctionCall","src":"12024:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12014:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"12056:45:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12086:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12097:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12082:3:56"},"nodeType":"YulFunctionCall","src":"12082:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12069:12:56"},"nodeType":"YulFunctionCall","src":"12069:32:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"12060:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12137:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"12110:26:56"},"nodeType":"YulFunctionCall","src":"12110:33:56"},"nodeType":"YulExpressionStatement","src":"12110:33:56"},{"nodeType":"YulAssignment","src":"12152:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"12162:5:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12152:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11891:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11902:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11914:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11922:6:56","type":""}],"src":"11846:327:56"},{"body":{"nodeType":"YulBlock","src":"12276:157:56","statements":[{"body":{"nodeType":"YulBlock","src":"12322:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12331:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"12339:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12324:6:56"},"nodeType":"YulFunctionCall","src":"12324:22:56"},"nodeType":"YulExpressionStatement","src":"12324:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12297:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"12306:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12293:3:56"},"nodeType":"YulFunctionCall","src":"12293:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"12318:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12289:3:56"},"nodeType":"YulFunctionCall","src":"12289:32:56"},"nodeType":"YulIf","src":"12286:2:56"},{"nodeType":"YulAssignment","src":"12357:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12373:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12367:5:56"},"nodeType":"YulFunctionCall","src":"12367:16:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12357:6:56"}]},{"nodeType":"YulAssignment","src":"12392:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12412:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12423:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12408:3:56"},"nodeType":"YulFunctionCall","src":"12408:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12402:5:56"},"nodeType":"YulFunctionCall","src":"12402:25:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12392:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12234:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12245:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12257:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12265:6:56","type":""}],"src":"12178:255:56"},{"body":{"nodeType":"YulBlock","src":"12561:654:56","statements":[{"body":{"nodeType":"YulBlock","src":"12607:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12616:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"12624:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12609:6:56"},"nodeType":"YulFunctionCall","src":"12609:22:56"},"nodeType":"YulExpressionStatement","src":"12609:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12582:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"12591:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12578:3:56"},"nodeType":"YulFunctionCall","src":"12578:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"12603:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12574:3:56"},"nodeType":"YulFunctionCall","src":"12574:32:56"},"nodeType":"YulIf","src":"12571:2:56"},{"nodeType":"YulAssignment","src":"12642:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12665:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12652:12:56"},"nodeType":"YulFunctionCall","src":"12652:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12642:6:56"}]},{"nodeType":"YulAssignment","src":"12684:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12711:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12722:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12707:3:56"},"nodeType":"YulFunctionCall","src":"12707:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12694:12:56"},"nodeType":"YulFunctionCall","src":"12694:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12684:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"12735:46:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12766:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12777:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12762:3:56"},"nodeType":"YulFunctionCall","src":"12762:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12749:12:56"},"nodeType":"YulFunctionCall","src":"12749:32:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"12739:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12790:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"12800:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12794:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"12845:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12854:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"12862:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12847:6:56"},"nodeType":"YulFunctionCall","src":"12847:22:56"},"nodeType":"YulExpressionStatement","src":"12847:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12833:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"12841:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12830:2:56"},"nodeType":"YulFunctionCall","src":"12830:14:56"},"nodeType":"YulIf","src":"12827:2:56"},{"nodeType":"YulVariableDeclaration","src":"12880:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12894:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"12905:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12890:3:56"},"nodeType":"YulFunctionCall","src":"12890:22:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"12884:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"12960:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12969:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"12977:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12962:6:56"},"nodeType":"YulFunctionCall","src":"12962:22:56"},"nodeType":"YulExpressionStatement","src":"12962:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"12939:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"12943:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12935:3:56"},"nodeType":"YulFunctionCall","src":"12935:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"12950:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12931:3:56"},"nodeType":"YulFunctionCall","src":"12931:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12924:6:56"},"nodeType":"YulFunctionCall","src":"12924:35:56"},"nodeType":"YulIf","src":"12921:2:56"},{"nodeType":"YulVariableDeclaration","src":"12995:30:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"13022:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13009:12:56"},"nodeType":"YulFunctionCall","src":"13009:16:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12999:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"13052:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13061:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"13069:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13054:6:56"},"nodeType":"YulFunctionCall","src":"13054:22:56"},"nodeType":"YulExpressionStatement","src":"13054:22:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13040:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"13048:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13037:2:56"},"nodeType":"YulFunctionCall","src":"13037:14:56"},"nodeType":"YulIf","src":"13034:2:56"},{"body":{"nodeType":"YulBlock","src":"13128:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13137:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"13145:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13130:6:56"},"nodeType":"YulFunctionCall","src":"13130:22:56"},"nodeType":"YulExpressionStatement","src":"13130:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"13101:2:56"},{"name":"length","nodeType":"YulIdentifier","src":"13105:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13097:3:56"},"nodeType":"YulFunctionCall","src":"13097:15:56"},{"kind":"number","nodeType":"YulLiteral","src":"13114:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13093:3:56"},"nodeType":"YulFunctionCall","src":"13093:24:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13119:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13090:2:56"},"nodeType":"YulFunctionCall","src":"13090:37:56"},"nodeType":"YulIf","src":"13087:2:56"},{"nodeType":"YulAssignment","src":"13163:21:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"13177:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"13181:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13173:3:56"},"nodeType":"YulFunctionCall","src":"13173:11:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"13163:6:56"}]},{"nodeType":"YulAssignment","src":"13193:16:56","value":{"name":"length","nodeType":"YulIdentifier","src":"13203:6:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"13193:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12503:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12514:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12526:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12534:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12542:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12550:6:56","type":""}],"src":"12438:777:56"},{"body":{"nodeType":"YulBlock","src":"13271:267:56","statements":[{"nodeType":"YulVariableDeclaration","src":"13281:26:56","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13301:5:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13295:5:56"},"nodeType":"YulFunctionCall","src":"13295:12:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"13285:6:56","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13323:3:56"},{"name":"length","nodeType":"YulIdentifier","src":"13328:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13316:6:56"},"nodeType":"YulFunctionCall","src":"13316:19:56"},"nodeType":"YulExpressionStatement","src":"13316:19:56"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13370:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"13377:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13366:3:56"},"nodeType":"YulFunctionCall","src":"13366:16:56"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13388:3:56"},{"kind":"number","nodeType":"YulLiteral","src":"13393:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13384:3:56"},"nodeType":"YulFunctionCall","src":"13384:14:56"},{"name":"length","nodeType":"YulIdentifier","src":"13400:6:56"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"13344:21:56"},"nodeType":"YulFunctionCall","src":"13344:63:56"},"nodeType":"YulExpressionStatement","src":"13344:63:56"},{"nodeType":"YulAssignment","src":"13416:116:56","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13431:3:56"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13444:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"13452:2:56","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13440:3:56"},"nodeType":"YulFunctionCall","src":"13440:15:56"},{"kind":"number","nodeType":"YulLiteral","src":"13457:66:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13436:3:56"},"nodeType":"YulFunctionCall","src":"13436:88:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13427:3:56"},"nodeType":"YulFunctionCall","src":"13427:98:56"},{"kind":"number","nodeType":"YulLiteral","src":"13527:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13423:3:56"},"nodeType":"YulFunctionCall","src":"13423:109:56"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13416:3:56"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13248:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13255:3:56","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13263:3:56","type":""}],"src":"13220:318:56"},{"body":{"nodeType":"YulBlock","src":"13587:49:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13604:3:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13620:1:56","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"13623:5:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"13609:10:56"},"nodeType":"YulFunctionCall","src":"13609:20:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13597:6:56"},"nodeType":"YulFunctionCall","src":"13597:33:56"},"nodeType":"YulExpressionStatement","src":"13597:33:56"}]},"name":"abi_encode_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13571:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13578:3:56","type":""}],"src":"13543:93:56"},{"body":{"nodeType":"YulBlock","src":"13687:75:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13704:3:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13713:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"13720:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13709:3:56"},"nodeType":"YulFunctionCall","src":"13709:46:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13697:6:56"},"nodeType":"YulFunctionCall","src":"13697:59:56"},"nodeType":"YulExpressionStatement","src":"13697:59:56"}]},"name":"abi_encode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13671:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13678:3:56","type":""}],"src":"13641:121:56"},{"body":{"nodeType":"YulBlock","src":"13914:126:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13937:3:56"},{"name":"value0","nodeType":"YulIdentifier","src":"13942:6:56"},{"name":"value1","nodeType":"YulIdentifier","src":"13950:6:56"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"13924:12:56"},"nodeType":"YulFunctionCall","src":"13924:33:56"},"nodeType":"YulExpressionStatement","src":"13924:33:56"},{"nodeType":"YulVariableDeclaration","src":"13966:26:56","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13980:3:56"},{"name":"value1","nodeType":"YulIdentifier","src":"13985:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13976:3:56"},"nodeType":"YulFunctionCall","src":"13976:16:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13970:2:56","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"14008:2:56"},{"name":"end","nodeType":"YulIdentifier","src":"14012:3:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14001:6:56"},"nodeType":"YulFunctionCall","src":"14001:15:56"},"nodeType":"YulExpressionStatement","src":"14001:15:56"},{"nodeType":"YulAssignment","src":"14025:9:56","value":{"name":"_1","nodeType":"YulIdentifier","src":"14032:2:56"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14025: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":"13882:3:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13887:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13895:6:56","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13906:3:56","type":""}],"src":"13767:273:56"},{"body":{"nodeType":"YulBlock","src":"14146:125:56","statements":[{"nodeType":"YulAssignment","src":"14156:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14168:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14179:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14164:3:56"},"nodeType":"YulFunctionCall","src":"14164:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14156:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14198:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14213:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"14221:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14209:3:56"},"nodeType":"YulFunctionCall","src":"14209:55:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14191:6:56"},"nodeType":"YulFunctionCall","src":"14191:74:56"},"nodeType":"YulExpressionStatement","src":"14191:74:56"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14115:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14126:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14137:4:56","type":""}],"src":"14045:226:56"},{"body":{"nodeType":"YulBlock","src":"14499:395:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14516:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14531:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"14539:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14527:3:56"},"nodeType":"YulFunctionCall","src":"14527:55:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14509:6:56"},"nodeType":"YulFunctionCall","src":"14509:74:56"},"nodeType":"YulExpressionStatement","src":"14509:74:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14603:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14614:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14599:3:56"},"nodeType":"YulFunctionCall","src":"14599:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14630:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"14633:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"14619:10:56"},"nodeType":"YulFunctionCall","src":"14619:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14592:6:56"},"nodeType":"YulFunctionCall","src":"14592:49:56"},"nodeType":"YulExpressionStatement","src":"14592:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14661:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14672:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14657:3:56"},"nodeType":"YulFunctionCall","src":"14657:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14688:1:56","type":"","value":"2"},{"name":"value2","nodeType":"YulIdentifier","src":"14691:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"14677:10:56"},"nodeType":"YulFunctionCall","src":"14677:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14650:6:56"},"nodeType":"YulFunctionCall","src":"14650:49:56"},"nodeType":"YulExpressionStatement","src":"14650:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14719:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14730:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14715:3:56"},"nodeType":"YulFunctionCall","src":"14715:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"14739:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"14747:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14735:3:56"},"nodeType":"YulFunctionCall","src":"14735:47:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14708:6:56"},"nodeType":"YulFunctionCall","src":"14708:75:56"},"nodeType":"YulExpressionStatement","src":"14708:75:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14803:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14814:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14799:3:56"},"nodeType":"YulFunctionCall","src":"14799:19:56"},{"kind":"number","nodeType":"YulLiteral","src":"14820:3:56","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14792:6:56"},"nodeType":"YulFunctionCall","src":"14792:32:56"},"nodeType":"YulExpressionStatement","src":"14792:32:56"},{"nodeType":"YulAssignment","src":"14833:55:56","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"14860:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14872:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14883:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14868:3:56"},"nodeType":"YulFunctionCall","src":"14868:19:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"14841:18:56"},"nodeType":"YulFunctionCall","src":"14841:47:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14833: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":"14436:9:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"14447:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"14455:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"14463:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14471:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14479:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14490:4:56","type":""}],"src":"14276:618:56"},{"body":{"nodeType":"YulBlock","src":"15104:400:56","statements":[{"nodeType":"YulAssignment","src":"15114:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15126:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15137:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15122:3:56"},"nodeType":"YulFunctionCall","src":"15122:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15114:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15157:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15172:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"15180:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15168:3:56"},"nodeType":"YulFunctionCall","src":"15168:55:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15150:6:56"},"nodeType":"YulFunctionCall","src":"15150:74:56"},"nodeType":"YulExpressionStatement","src":"15150:74:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15244:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15255:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15240:3:56"},"nodeType":"YulFunctionCall","src":"15240:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15271:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"15274:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"15260:10:56"},"nodeType":"YulFunctionCall","src":"15260:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15233:6:56"},"nodeType":"YulFunctionCall","src":"15233:49:56"},"nodeType":"YulExpressionStatement","src":"15233:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15302:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15313:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15298:3:56"},"nodeType":"YulFunctionCall","src":"15298:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15329:1:56","type":"","value":"2"},{"name":"value2","nodeType":"YulIdentifier","src":"15332:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"15318:10:56"},"nodeType":"YulFunctionCall","src":"15318:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15291:6:56"},"nodeType":"YulFunctionCall","src":"15291:49:56"},"nodeType":"YulExpressionStatement","src":"15291:49:56"},{"nodeType":"YulVariableDeclaration","src":"15349:44:56","value":{"kind":"number","nodeType":"YulLiteral","src":"15359:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15353:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15413:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15424:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15409:3:56"},"nodeType":"YulFunctionCall","src":"15409:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"15433:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"15441:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15429:3:56"},"nodeType":"YulFunctionCall","src":"15429:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15402:6:56"},"nodeType":"YulFunctionCall","src":"15402:43:56"},"nodeType":"YulExpressionStatement","src":"15402:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15465:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15476:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15461:3:56"},"nodeType":"YulFunctionCall","src":"15461:19:56"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"15486:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"15494:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15482:3:56"},"nodeType":"YulFunctionCall","src":"15482:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15454:6:56"},"nodeType":"YulFunctionCall","src":"15454:44:56"},"nodeType":"YulExpressionStatement","src":"15454: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":"15041:9:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"15052:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"15060:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15068:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15076:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15084:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15095:4:56","type":""}],"src":"14899:605:56"},{"body":{"nodeType":"YulBlock","src":"15666:282:56","statements":[{"nodeType":"YulAssignment","src":"15676:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15688:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15699:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15684:3:56"},"nodeType":"YulFunctionCall","src":"15684:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15676:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15718:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15733:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"15741:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15729:3:56"},"nodeType":"YulFunctionCall","src":"15729:55:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15711:6:56"},"nodeType":"YulFunctionCall","src":"15711:74:56"},"nodeType":"YulExpressionStatement","src":"15711:74:56"},{"nodeType":"YulVariableDeclaration","src":"15794:44:56","value":{"kind":"number","nodeType":"YulLiteral","src":"15804:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15798:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15858:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15869:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15854:3:56"},"nodeType":"YulFunctionCall","src":"15854:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"15878:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"15886:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15874:3:56"},"nodeType":"YulFunctionCall","src":"15874:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15847:6:56"},"nodeType":"YulFunctionCall","src":"15847:43:56"},"nodeType":"YulExpressionStatement","src":"15847:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15910:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15921:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15906:3:56"},"nodeType":"YulFunctionCall","src":"15906:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"15930:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"15938:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15926:3:56"},"nodeType":"YulFunctionCall","src":"15926:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15899:6:56"},"nodeType":"YulFunctionCall","src":"15899:43:56"},"nodeType":"YulExpressionStatement","src":"15899: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":"15619:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15630:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15638:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15646:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15657:4:56","type":""}],"src":"15509:439:56"},{"body":{"nodeType":"YulBlock","src":"16122:696:56","statements":[{"nodeType":"YulVariableDeclaration","src":"16132:12:56","value":{"kind":"number","nodeType":"YulLiteral","src":"16142:2:56","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16136:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16153:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16171:9:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16182:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16167:3:56"},"nodeType":"YulFunctionCall","src":"16167:18:56"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"16157:6:56","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16201:9:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16212:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16194:6:56"},"nodeType":"YulFunctionCall","src":"16194:21:56"},"nodeType":"YulExpressionStatement","src":"16194:21:56"},{"nodeType":"YulVariableDeclaration","src":"16224:17:56","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"16235:6:56"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"16228:3:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16250:27:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16270:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16264:5:56"},"nodeType":"YulFunctionCall","src":"16264:13:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16254:6:56","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"16293:6:56"},{"name":"length","nodeType":"YulIdentifier","src":"16301:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16286:6:56"},"nodeType":"YulFunctionCall","src":"16286:22:56"},"nodeType":"YulExpressionStatement","src":"16286:22:56"},{"nodeType":"YulAssignment","src":"16317:25:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16328:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16339:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16324:3:56"},"nodeType":"YulFunctionCall","src":"16324:18:56"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16317:3:56"}]},{"nodeType":"YulVariableDeclaration","src":"16351:54:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16373:9:56"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"16388:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16396:2:56"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"16384:3:56"},"nodeType":"YulFunctionCall","src":"16384:15:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16369:3:56"},"nodeType":"YulFunctionCall","src":"16369:31:56"},{"kind":"number","nodeType":"YulLiteral","src":"16402:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16365:3:56"},"nodeType":"YulFunctionCall","src":"16365:40:56"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"16355:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16414:29:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16432:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16440:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16428:3:56"},"nodeType":"YulFunctionCall","src":"16428:15:56"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"16418:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16452:13:56","value":{"name":"tail","nodeType":"YulIdentifier","src":"16461:4:56"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"16456:1:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"16523:266:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16544:3:56"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"16557:6:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"16565:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16553:3:56"},"nodeType":"YulFunctionCall","src":"16553:22:56"},{"kind":"number","nodeType":"YulLiteral","src":"16577:66:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16549:3:56"},"nodeType":"YulFunctionCall","src":"16549:95:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16537:6:56"},"nodeType":"YulFunctionCall","src":"16537:108:56"},"nodeType":"YulExpressionStatement","src":"16537:108:56"},{"nodeType":"YulAssignment","src":"16658:51:56","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"16693:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16687:5:56"},"nodeType":"YulFunctionCall","src":"16687:13:56"},{"name":"tail_2","nodeType":"YulIdentifier","src":"16702:6:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"16668:18:56"},"nodeType":"YulFunctionCall","src":"16668:41:56"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"16658:6:56"}]},{"nodeType":"YulAssignment","src":"16722:25:56","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"16736:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16744:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16732:3:56"},"nodeType":"YulFunctionCall","src":"16732:15:56"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"16722:6:56"}]},{"nodeType":"YulAssignment","src":"16760:19:56","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16771:3:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16776:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16767:3:56"},"nodeType":"YulFunctionCall","src":"16767:12:56"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16760:3:56"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16485:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"16488:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16482:2:56"},"nodeType":"YulFunctionCall","src":"16482:13:56"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"16496:18:56","statements":[{"nodeType":"YulAssignment","src":"16498:14:56","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16507:1:56"},{"kind":"number","nodeType":"YulLiteral","src":"16510:1:56","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16503:3:56"},"nodeType":"YulFunctionCall","src":"16503:9:56"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"16498:1:56"}]}]},"pre":{"nodeType":"YulBlock","src":"16478:3:56","statements":[]},"src":"16474:315:56"},{"nodeType":"YulAssignment","src":"16798:14:56","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"16806:6:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16798: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":"16091:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16102:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16113:4:56","type":""}],"src":"15953:865:56"},{"body":{"nodeType":"YulBlock","src":"16918:92:56","statements":[{"nodeType":"YulAssignment","src":"16928:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16940:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16951:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16936:3:56"},"nodeType":"YulFunctionCall","src":"16936:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16928:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16970:9:56"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16995:6:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"16988:6:56"},"nodeType":"YulFunctionCall","src":"16988:14:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"16981:6:56"},"nodeType":"YulFunctionCall","src":"16981:22:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16963:6:56"},"nodeType":"YulFunctionCall","src":"16963:41:56"},"nodeType":"YulExpressionStatement","src":"16963:41:56"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16887:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16898:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16909:4:56","type":""}],"src":"16823:187:56"},{"body":{"nodeType":"YulBlock","src":"17116:76:56","statements":[{"nodeType":"YulAssignment","src":"17126:26:56","value":{"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"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17126:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17168:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"17179:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17161:6:56"},"nodeType":"YulFunctionCall","src":"17161:25:56"},"nodeType":"YulExpressionStatement","src":"17161:25:56"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17085:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17096:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17107:4:56","type":""}],"src":"17015:177:56"},{"body":{"nodeType":"YulBlock","src":"17361:168:56","statements":[{"nodeType":"YulAssignment","src":"17371:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17383:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17394:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17379:3:56"},"nodeType":"YulFunctionCall","src":"17379:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17371:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17413:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17428:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"17436:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17424:3:56"},"nodeType":"YulFunctionCall","src":"17424:55:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17406:6:56"},"nodeType":"YulFunctionCall","src":"17406:74:56"},"nodeType":"YulExpressionStatement","src":"17406:74:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17500:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17511:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17496:3:56"},"nodeType":"YulFunctionCall","src":"17496:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"17516:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17489:6:56"},"nodeType":"YulFunctionCall","src":"17489:34:56"},"nodeType":"YulExpressionStatement","src":"17489:34:56"}]},"name":"abi_encode_tuple_t_contract$_NonfungiblePositionManager_$5490_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17322:9:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17333:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17341:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17352:4:56","type":""}],"src":"17197:332:56"},{"body":{"nodeType":"YulBlock","src":"17691:233:56","statements":[{"nodeType":"YulAssignment","src":"17701:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17713:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17724:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17709:3:56"},"nodeType":"YulFunctionCall","src":"17709:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17701:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17743:9:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17765:1:56","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"17768:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"17754:10:56"},"nodeType":"YulFunctionCall","src":"17754:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17736:6:56"},"nodeType":"YulFunctionCall","src":"17736:40:56"},"nodeType":"YulExpressionStatement","src":"17736:40:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17796:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17807:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17792:3:56"},"nodeType":"YulFunctionCall","src":"17792:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17823:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"17826:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"17812:10:56"},"nodeType":"YulFunctionCall","src":"17812:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17785:6:56"},"nodeType":"YulFunctionCall","src":"17785:49:56"},"nodeType":"YulExpressionStatement","src":"17785:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17854:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17865:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17850:3:56"},"nodeType":"YulFunctionCall","src":"17850:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"17874:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"17882:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17870:3:56"},"nodeType":"YulFunctionCall","src":"17870:47:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17843:6:56"},"nodeType":"YulFunctionCall","src":"17843:75:56"},"nodeType":"YulExpressionStatement","src":"17843:75: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":"17644:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"17655:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17663:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17671:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17682:4:56","type":""}],"src":"17534:390:56"},{"body":{"nodeType":"YulBlock","src":"18078:233:56","statements":[{"nodeType":"YulAssignment","src":"18088:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18100:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18111:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18096:3:56"},"nodeType":"YulFunctionCall","src":"18096:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18088:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18130:9:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18152:1:56","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"18155:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"18141:10:56"},"nodeType":"YulFunctionCall","src":"18141:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18123:6:56"},"nodeType":"YulFunctionCall","src":"18123:40:56"},"nodeType":"YulExpressionStatement","src":"18123:40:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18183:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18194:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18179:3:56"},"nodeType":"YulFunctionCall","src":"18179:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18210:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"18213:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"18199:10:56"},"nodeType":"YulFunctionCall","src":"18199:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18172:6:56"},"nodeType":"YulFunctionCall","src":"18172:49:56"},"nodeType":"YulExpressionStatement","src":"18172:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18241:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18252:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18237:3:56"},"nodeType":"YulFunctionCall","src":"18237:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"18261:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"18269:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18257:3:56"},"nodeType":"YulFunctionCall","src":"18257:47:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18230:6:56"},"nodeType":"YulFunctionCall","src":"18230:75:56"},"nodeType":"YulExpressionStatement","src":"18230:75: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":"18031:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"18042:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18050:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18058:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18069:4:56","type":""}],"src":"17929:382:56"},{"body":{"nodeType":"YulBlock","src":"18437:100:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18454:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18465:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18447:6:56"},"nodeType":"YulFunctionCall","src":"18447:21:56"},"nodeType":"YulExpressionStatement","src":"18447:21:56"},{"nodeType":"YulAssignment","src":"18477:54:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18504:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18516:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18527:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18512:3:56"},"nodeType":"YulFunctionCall","src":"18512:18:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"18485:18:56"},"nodeType":"YulFunctionCall","src":"18485:46:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18477: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":"18406:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18417:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18428:4:56","type":""}],"src":"18316:221:56"},{"body":{"nodeType":"YulBlock","src":"18716:162:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18733:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18744:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18726:6:56"},"nodeType":"YulFunctionCall","src":"18726:21:56"},"nodeType":"YulExpressionStatement","src":"18726:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18767:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18778:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18763:3:56"},"nodeType":"YulFunctionCall","src":"18763:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"18783:2:56","type":"","value":"12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18756:6:56"},"nodeType":"YulFunctionCall","src":"18756:30:56"},"nodeType":"YulExpressionStatement","src":"18756:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18806:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18817:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18802:3:56"},"nodeType":"YulFunctionCall","src":"18802:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"18822:14:56","type":"","value":"Not approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18795:6:56"},"nodeType":"YulFunctionCall","src":"18795:42:56"},"nodeType":"YulExpressionStatement","src":"18795:42:56"},{"nodeType":"YulAssignment","src":"18846:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18858:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18869:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18854:3:56"},"nodeType":"YulFunctionCall","src":"18854:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18846:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_70356c467a9713064077b7fa0ff1a074c93b1f7c48415be181b9cd799b628361__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18693:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18707:4:56","type":""}],"src":"18542:336:56"},{"body":{"nodeType":"YulBlock","src":"19057:234:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19074:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19085:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19067:6:56"},"nodeType":"YulFunctionCall","src":"19067:21:56"},"nodeType":"YulExpressionStatement","src":"19067:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19108:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19119:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19104:3:56"},"nodeType":"YulFunctionCall","src":"19104:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"19124:2:56","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19097:6:56"},"nodeType":"YulFunctionCall","src":"19097:30:56"},"nodeType":"YulExpressionStatement","src":"19097:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19147:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19158:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19143:3:56"},"nodeType":"YulFunctionCall","src":"19143:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"19163:34:56","type":"","value":"ERC721: approved query for nonex"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19136:6:56"},"nodeType":"YulFunctionCall","src":"19136:62:56"},"nodeType":"YulExpressionStatement","src":"19136:62:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19218:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19229:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19214:3:56"},"nodeType":"YulFunctionCall","src":"19214:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"19234:14:56","type":"","value":"istent token"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19207:6:56"},"nodeType":"YulFunctionCall","src":"19207:42:56"},"nodeType":"YulExpressionStatement","src":"19207:42:56"},{"nodeType":"YulAssignment","src":"19258:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19270:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19281:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19266:3:56"},"nodeType":"YulFunctionCall","src":"19266:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19258:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19034:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19048:4:56","type":""}],"src":"18883:408:56"},{"body":{"nodeType":"YulBlock","src":"19470:170:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19487:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19498:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19480:6:56"},"nodeType":"YulFunctionCall","src":"19480:21:56"},"nodeType":"YulExpressionStatement","src":"19480:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19521:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19532:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19517:3:56"},"nodeType":"YulFunctionCall","src":"19517:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"19537:2:56","type":"","value":"20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19510:6:56"},"nodeType":"YulFunctionCall","src":"19510:30:56"},"nodeType":"YulExpressionStatement","src":"19510:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19560:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19571:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19556:3:56"},"nodeType":"YulFunctionCall","src":"19556:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"19576:22:56","type":"","value":"Price slippage check"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19549:6:56"},"nodeType":"YulFunctionCall","src":"19549:50:56"},"nodeType":"YulExpressionStatement","src":"19549:50:56"},{"nodeType":"YulAssignment","src":"19608:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19620:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19631:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19616:3:56"},"nodeType":"YulFunctionCall","src":"19616:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19608:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19447:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19461:4:56","type":""}],"src":"19296:344:56"},{"body":{"nodeType":"YulBlock","src":"19819:166:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19836:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19847:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19829:6:56"},"nodeType":"YulFunctionCall","src":"19829:21:56"},"nodeType":"YulExpressionStatement","src":"19829:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19870:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19881:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19866:3:56"},"nodeType":"YulFunctionCall","src":"19866:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"19886:2:56","type":"","value":"16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19859:6:56"},"nodeType":"YulFunctionCall","src":"19859:30:56"},"nodeType":"YulExpressionStatement","src":"19859:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19909:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19920:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19905:3:56"},"nodeType":"YulFunctionCall","src":"19905:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"19925:18:56","type":"","value":"Invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19898:6:56"},"nodeType":"YulFunctionCall","src":"19898:46:56"},"nodeType":"YulExpressionStatement","src":"19898:46:56"},{"nodeType":"YulAssignment","src":"19953:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19965:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19976:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19961:3:56"},"nodeType":"YulFunctionCall","src":"19961:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19953:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_b44e5a2e76d616f71f124d91f8560c46215c55a45ba6a1b6e492edf2295dcc48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19796:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19810:4:56","type":""}],"src":"19645:340:56"},{"body":{"nodeType":"YulBlock","src":"20164:161:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20181:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20192:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20174:6:56"},"nodeType":"YulFunctionCall","src":"20174:21:56"},"nodeType":"YulExpressionStatement","src":"20174:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20215:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20226:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20211:3:56"},"nodeType":"YulFunctionCall","src":"20211:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"20231:2:56","type":"","value":"11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20204:6:56"},"nodeType":"YulFunctionCall","src":"20204:30:56"},"nodeType":"YulExpressionStatement","src":"20204:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20254:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20265:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20250:3:56"},"nodeType":"YulFunctionCall","src":"20250:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"20270:13:56","type":"","value":"Not cleared"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20243:6:56"},"nodeType":"YulFunctionCall","src":"20243:41:56"},"nodeType":"YulExpressionStatement","src":"20243:41:56"},{"nodeType":"YulAssignment","src":"20293:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20305:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20316:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20301:3:56"},"nodeType":"YulFunctionCall","src":"20301:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20293:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_fa1d7f5abfb64daa85ec56d31f717d114a9182c82071ec276fdb7487a00b013e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20141:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20155:4:56","type":""}],"src":"19990:335:56"},{"body":{"nodeType":"YulBlock","src":"20499:396:56","statements":[{"nodeType":"YulAssignment","src":"20509:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20521:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20532:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20517:3:56"},"nodeType":"YulFunctionCall","src":"20517:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20509:4:56"}]},{"nodeType":"YulVariableDeclaration","src":"20545:23:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20561:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20555:5:56"},"nodeType":"YulFunctionCall","src":"20555:13:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"20549:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"20577:52:56","value":{"kind":"number","nodeType":"YulLiteral","src":"20587:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"20581:2:56","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20645:9:56"},{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"20666:2:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20660:5:56"},"nodeType":"YulFunctionCall","src":"20660:9:56"},{"name":"_2","nodeType":"YulIdentifier","src":"20671:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20656:3:56"},"nodeType":"YulFunctionCall","src":"20656:18:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20638:6:56"},"nodeType":"YulFunctionCall","src":"20638:37:56"},"nodeType":"YulExpressionStatement","src":"20638:37:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20695:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20706:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20691:3:56"},"nodeType":"YulFunctionCall","src":"20691:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"20727:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"20731:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20723:3:56"},"nodeType":"YulFunctionCall","src":"20723:13:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20717:5:56"},"nodeType":"YulFunctionCall","src":"20717:20:56"},{"name":"_2","nodeType":"YulIdentifier","src":"20739:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20713:3:56"},"nodeType":"YulFunctionCall","src":"20713:29:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20684:6:56"},"nodeType":"YulFunctionCall","src":"20684:59:56"},"nodeType":"YulExpressionStatement","src":"20684:59:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20763:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20774:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20759:3:56"},"nodeType":"YulFunctionCall","src":"20759:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"20795:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"20799:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20791:3:56"},"nodeType":"YulFunctionCall","src":"20791:13:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20785:5:56"},"nodeType":"YulFunctionCall","src":"20785:20:56"},{"kind":"number","nodeType":"YulLiteral","src":"20807:8:56","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20781:3:56"},"nodeType":"YulFunctionCall","src":"20781:35:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20752:6:56"},"nodeType":"YulFunctionCall","src":"20752:65:56"},"nodeType":"YulExpressionStatement","src":"20752:65:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20837:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20848:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20833:3:56"},"nodeType":"YulFunctionCall","src":"20833:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20869:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"20877:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20865:3:56"},"nodeType":"YulFunctionCall","src":"20865:17:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20859:5:56"},"nodeType":"YulFunctionCall","src":"20859:24:56"},{"name":"_2","nodeType":"YulIdentifier","src":"20885:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20855:3:56"},"nodeType":"YulFunctionCall","src":"20855:33:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20826:6:56"},"nodeType":"YulFunctionCall","src":"20826:63:56"},"nodeType":"YulExpressionStatement","src":"20826:63:56"}]},"name":"abi_encode_tuple_t_struct$_MintCallbackData_$5737_memory_ptr__to_t_struct$_MintCallbackData_$5737_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20468:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20479:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20490:4:56","type":""}],"src":"20330:565:56"},{"body":{"nodeType":"YulBlock","src":"21057:203:56","statements":[{"nodeType":"YulAssignment","src":"21067:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21079:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21090:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21075:3:56"},"nodeType":"YulFunctionCall","src":"21075:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21067:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21109:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21124:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"21132:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21120:3:56"},"nodeType":"YulFunctionCall","src":"21120:47:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21102:6:56"},"nodeType":"YulFunctionCall","src":"21102:66:56"},"nodeType":"YulExpressionStatement","src":"21102:66:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21188:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21199:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21184:3:56"},"nodeType":"YulFunctionCall","src":"21184:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"21204:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21177:6:56"},"nodeType":"YulFunctionCall","src":"21177:34:56"},"nodeType":"YulExpressionStatement","src":"21177:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21231:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21242:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21227:3:56"},"nodeType":"YulFunctionCall","src":"21227:18:56"},{"name":"value2","nodeType":"YulIdentifier","src":"21247:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21220:6:56"},"nodeType":"YulFunctionCall","src":"21220:34:56"},"nodeType":"YulExpressionStatement","src":"21220: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":"21010:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"21021:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21029:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21037:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21048:4:56","type":""}],"src":"20900:360:56"},{"body":{"nodeType":"YulBlock","src":"21366:76:56","statements":[{"nodeType":"YulAssignment","src":"21376:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21388:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21399:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21384:3:56"},"nodeType":"YulFunctionCall","src":"21384:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21376:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21418:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"21429:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21411:6:56"},"nodeType":"YulFunctionCall","src":"21411:25:56"},"nodeType":"YulExpressionStatement","src":"21411:25:56"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21335:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21346:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21357:4:56","type":""}],"src":"21265:177:56"},{"body":{"nodeType":"YulBlock","src":"21632:247:56","statements":[{"nodeType":"YulAssignment","src":"21642:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21654:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21665:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21650:3:56"},"nodeType":"YulFunctionCall","src":"21650:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21642:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21685:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"21696:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21678:6:56"},"nodeType":"YulFunctionCall","src":"21678:25:56"},"nodeType":"YulExpressionStatement","src":"21678:25:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21723:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21734:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21719:3:56"},"nodeType":"YulFunctionCall","src":"21719:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"21743:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"21751:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21739:3:56"},"nodeType":"YulFunctionCall","src":"21739:47:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21712:6:56"},"nodeType":"YulFunctionCall","src":"21712:75:56"},"nodeType":"YulExpressionStatement","src":"21712:75:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21807:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21818:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21803:3:56"},"nodeType":"YulFunctionCall","src":"21803:18:56"},{"name":"value2","nodeType":"YulIdentifier","src":"21823:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21796:6:56"},"nodeType":"YulFunctionCall","src":"21796:34:56"},"nodeType":"YulExpressionStatement","src":"21796:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21850:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21861:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21846:3:56"},"nodeType":"YulFunctionCall","src":"21846:18:56"},{"name":"value3","nodeType":"YulIdentifier","src":"21866:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21839:6:56"},"nodeType":"YulFunctionCall","src":"21839:34:56"},"nodeType":"YulExpressionStatement","src":"21839: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":"21577:9:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"21588:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"21596:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21604:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21612:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21623:4:56","type":""}],"src":"21447:432:56"},{"body":{"nodeType":"YulBlock","src":"22013:119:56","statements":[{"nodeType":"YulAssignment","src":"22023:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22035:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22046:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22031:3:56"},"nodeType":"YulFunctionCall","src":"22031:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22023:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22065:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"22076:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22058:6:56"},"nodeType":"YulFunctionCall","src":"22058:25:56"},"nodeType":"YulExpressionStatement","src":"22058:25:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22103:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22114:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22099:3:56"},"nodeType":"YulFunctionCall","src":"22099:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"22119:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22092:6:56"},"nodeType":"YulFunctionCall","src":"22092:34:56"},"nodeType":"YulExpressionStatement","src":"22092: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":"21974:9:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21985:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21993:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22004:4:56","type":""}],"src":"21884:248:56"},{"body":{"nodeType":"YulBlock","src":"22536:765:56","statements":[{"nodeType":"YulAssignment","src":"22546:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22558:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22569:3:56","type":"","value":"384"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22554:3:56"},"nodeType":"YulFunctionCall","src":"22554:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22546:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22589:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22604:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"22612:26:56","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22600:3:56"},"nodeType":"YulFunctionCall","src":"22600:39:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22582:6:56"},"nodeType":"YulFunctionCall","src":"22582:58:56"},"nodeType":"YulExpressionStatement","src":"22582:58:56"},{"nodeType":"YulVariableDeclaration","src":"22649:52:56","value":{"kind":"number","nodeType":"YulLiteral","src":"22659:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"22653:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22721:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22732:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22717:3:56"},"nodeType":"YulFunctionCall","src":"22717:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"22741:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"22749:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22737:3:56"},"nodeType":"YulFunctionCall","src":"22737:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22710:6:56"},"nodeType":"YulFunctionCall","src":"22710:43:56"},"nodeType":"YulExpressionStatement","src":"22710:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22773:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22784:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22769:3:56"},"nodeType":"YulFunctionCall","src":"22769:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"22793:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"22801:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22789:3:56"},"nodeType":"YulFunctionCall","src":"22789:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22762:6:56"},"nodeType":"YulFunctionCall","src":"22762:43:56"},"nodeType":"YulExpressionStatement","src":"22762:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22825:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22836:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22821:3:56"},"nodeType":"YulFunctionCall","src":"22821:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"22845:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"22853:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22841:3:56"},"nodeType":"YulFunctionCall","src":"22841:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22814:6:56"},"nodeType":"YulFunctionCall","src":"22814:43:56"},"nodeType":"YulExpressionStatement","src":"22814:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22877:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22888:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22873:3:56"},"nodeType":"YulFunctionCall","src":"22873:19:56"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"22898:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"22906:8:56","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22894:3:56"},"nodeType":"YulFunctionCall","src":"22894:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22866:6:56"},"nodeType":"YulFunctionCall","src":"22866:50:56"},"nodeType":"YulExpressionStatement","src":"22866:50:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22936:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22947:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22932:3:56"},"nodeType":"YulFunctionCall","src":"22932:19:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22964:1:56","type":"","value":"2"},{"name":"value5","nodeType":"YulIdentifier","src":"22967:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"22953:10:56"},"nodeType":"YulFunctionCall","src":"22953:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22925:6:56"},"nodeType":"YulFunctionCall","src":"22925:50:56"},"nodeType":"YulExpressionStatement","src":"22925:50:56"},{"expression":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"23003:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23015:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23026:3:56","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23011:3:56"},"nodeType":"YulFunctionCall","src":"23011:19:56"}],"functionName":{"name":"abi_encode_t_int24","nodeType":"YulIdentifier","src":"22984:18:56"},"nodeType":"YulFunctionCall","src":"22984:47:56"},"nodeType":"YulExpressionStatement","src":"22984:47:56"},{"expression":{"arguments":[{"name":"value7","nodeType":"YulIdentifier","src":"23061:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23073:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23084:3:56","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23069:3:56"},"nodeType":"YulFunctionCall","src":"23069:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"23040:20:56"},"nodeType":"YulFunctionCall","src":"23040:49:56"},"nodeType":"YulExpressionStatement","src":"23040:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23109:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23120:3:56","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23105:3:56"},"nodeType":"YulFunctionCall","src":"23105:19:56"},{"name":"value8","nodeType":"YulIdentifier","src":"23126:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23098:6:56"},"nodeType":"YulFunctionCall","src":"23098:35:56"},"nodeType":"YulExpressionStatement","src":"23098:35:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23153:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23164:3:56","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23149:3:56"},"nodeType":"YulFunctionCall","src":"23149:19:56"},{"name":"value9","nodeType":"YulIdentifier","src":"23170:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23142:6:56"},"nodeType":"YulFunctionCall","src":"23142:35:56"},"nodeType":"YulExpressionStatement","src":"23142:35:56"},{"expression":{"arguments":[{"name":"value10","nodeType":"YulIdentifier","src":"23207:7:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23220:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23231:3:56","type":"","value":"320"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23216:3:56"},"nodeType":"YulFunctionCall","src":"23216:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"23186:20:56"},"nodeType":"YulFunctionCall","src":"23186:50:56"},"nodeType":"YulExpressionStatement","src":"23186:50:56"},{"expression":{"arguments":[{"name":"value11","nodeType":"YulIdentifier","src":"23266:7:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23279:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23290:3:56","type":"","value":"352"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23275:3:56"},"nodeType":"YulFunctionCall","src":"23275:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"23245:20:56"},"nodeType":"YulFunctionCall","src":"23245:50:56"},"nodeType":"YulExpressionStatement","src":"23245: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":"22415:9:56","type":""},{"name":"value11","nodeType":"YulTypedName","src":"22426:7:56","type":""},{"name":"value10","nodeType":"YulTypedName","src":"22435:7:56","type":""},{"name":"value9","nodeType":"YulTypedName","src":"22444:6:56","type":""},{"name":"value8","nodeType":"YulTypedName","src":"22452:6:56","type":""},{"name":"value7","nodeType":"YulTypedName","src":"22460:6:56","type":""},{"name":"value6","nodeType":"YulTypedName","src":"22468:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"22476:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"22484:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"22492:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22500:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22508:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22516:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22527:4:56","type":""}],"src":"22137:1164:56"},{"body":{"nodeType":"YulBlock","src":"23400:498:56","statements":[{"nodeType":"YulVariableDeclaration","src":"23410:51:56","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"23449:11:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23436:12:56"},"nodeType":"YulFunctionCall","src":"23436:25:56"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"23414:18:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"23609:22:56","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"23618:4:56"},{"name":"addr","nodeType":"YulIdentifier","src":"23624:4:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"23611:6:56"},"nodeType":"YulFunctionCall","src":"23611:18:56"},"nodeType":"YulExpressionStatement","src":"23611:18:56"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"23484:18:56"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"23512:12:56"},"nodeType":"YulFunctionCall","src":"23512:14:56"},{"name":"base_ref","nodeType":"YulIdentifier","src":"23528:8:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23508:3:56"},"nodeType":"YulFunctionCall","src":"23508:29:56"},{"kind":"number","nodeType":"YulLiteral","src":"23539:66:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23504:3:56"},"nodeType":"YulFunctionCall","src":"23504:102:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"23480:3:56"},"nodeType":"YulFunctionCall","src":"23480:127:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"23473:6:56"},"nodeType":"YulFunctionCall","src":"23473:135:56"},"nodeType":"YulIf","src":"23470:2:56"},{"nodeType":"YulVariableDeclaration","src":"23640:47:56","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"23658:8:56"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"23668:18:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23654:3:56"},"nodeType":"YulFunctionCall","src":"23654:33:56"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"23644:6:56","type":""}]},{"nodeType":"YulAssignment","src":"23696:30:56","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"23719:6:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23706:12:56"},"nodeType":"YulFunctionCall","src":"23706:20:56"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"23696:6:56"}]},{"body":{"nodeType":"YulBlock","src":"23769:22:56","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"23778:4:56"},{"name":"addr","nodeType":"YulIdentifier","src":"23784:4:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"23771:6:56"},"nodeType":"YulFunctionCall","src":"23771:18:56"},"nodeType":"YulExpressionStatement","src":"23771:18:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"23741:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"23749:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23738:2:56"},"nodeType":"YulFunctionCall","src":"23738:30:56"},"nodeType":"YulIf","src":"23735:2:56"},{"nodeType":"YulAssignment","src":"23800:25:56","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"23812:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"23820:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23808:3:56"},"nodeType":"YulFunctionCall","src":"23808:17:56"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"23800:4:56"}]},{"body":{"nodeType":"YulBlock","src":"23876:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23885:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"23888:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"23878:6:56"},"nodeType":"YulFunctionCall","src":"23878:12:56"},"nodeType":"YulExpressionStatement","src":"23878:12:56"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"23841:4:56"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"23851:12:56"},"nodeType":"YulFunctionCall","src":"23851:14:56"},{"name":"length","nodeType":"YulIdentifier","src":"23867:6:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23847:3:56"},"nodeType":"YulFunctionCall","src":"23847:27:56"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"23837:3:56"},"nodeType":"YulFunctionCall","src":"23837:38:56"},"nodeType":"YulIf","src":"23834:2:56"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"23357:8:56","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"23367:11:56","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"23383:4:56","type":""},{"name":"length","nodeType":"YulTypedName","src":"23389:6:56","type":""}],"src":"23306:592:56"},{"body":{"nodeType":"YulBlock","src":"23947:198:56","statements":[{"nodeType":"YulAssignment","src":"23957:19:56","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23973:2:56","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"23967:5:56"},"nodeType":"YulFunctionCall","src":"23967:9:56"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23957:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"23985:35:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24007:6:56"},{"name":"size","nodeType":"YulIdentifier","src":"24015:4:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24003:3:56"},"nodeType":"YulFunctionCall","src":"24003:17:56"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"23989:10:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"24095:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"24097:7:56"},"nodeType":"YulFunctionCall","src":"24097:9:56"},"nodeType":"YulExpressionStatement","src":"24097:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24038:10:56"},{"kind":"number","nodeType":"YulLiteral","src":"24050:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24035:2:56"},"nodeType":"YulFunctionCall","src":"24035:34:56"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24074:10:56"},{"name":"memPtr","nodeType":"YulIdentifier","src":"24086:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"24071:2:56"},"nodeType":"YulFunctionCall","src":"24071:22:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"24032:2:56"},"nodeType":"YulFunctionCall","src":"24032:62:56"},"nodeType":"YulIf","src":"24029:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24124:2:56","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24128:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24117:6:56"},"nodeType":"YulFunctionCall","src":"24117:22:56"},"nodeType":"YulExpressionStatement","src":"24117:22:56"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"23927:4:56","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"23936:6:56","type":""}],"src":"23903:242:56"},{"body":{"nodeType":"YulBlock","src":"24209:181:56","statements":[{"body":{"nodeType":"YulBlock","src":"24253:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"24255:7:56"},"nodeType":"YulFunctionCall","src":"24255:9:56"},"nodeType":"YulExpressionStatement","src":"24255:9:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"24225:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"24233:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24222:2:56"},"nodeType":"YulFunctionCall","src":"24222:30:56"},"nodeType":"YulIf","src":"24219:2:56"},{"nodeType":"YulAssignment","src":"24275:109:56","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"24295:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"24303:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24291:3:56"},"nodeType":"YulFunctionCall","src":"24291:17:56"},{"kind":"number","nodeType":"YulLiteral","src":"24310:66:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24287:3:56"},"nodeType":"YulFunctionCall","src":"24287:90:56"},{"kind":"number","nodeType":"YulLiteral","src":"24379:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24283:3:56"},"nodeType":"YulFunctionCall","src":"24283:101:56"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"24275:4:56"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"24189:6:56","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"24200:4:56","type":""}],"src":"24150:240:56"},{"body":{"nodeType":"YulBlock","src":"24448:205:56","statements":[{"nodeType":"YulVariableDeclaration","src":"24458:10:56","value":{"kind":"number","nodeType":"YulLiteral","src":"24467:1:56","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"24462:1:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"24527:63:56","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"24552:3:56"},{"name":"i","nodeType":"YulIdentifier","src":"24557:1:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24548:3:56"},"nodeType":"YulFunctionCall","src":"24548:11:56"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"24571:3:56"},{"name":"i","nodeType":"YulIdentifier","src":"24576:1:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24567:3:56"},"nodeType":"YulFunctionCall","src":"24567:11:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"24561:5:56"},"nodeType":"YulFunctionCall","src":"24561:18:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24541:6:56"},"nodeType":"YulFunctionCall","src":"24541:39:56"},"nodeType":"YulExpressionStatement","src":"24541:39:56"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"24488:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"24491:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"24485:2:56"},"nodeType":"YulFunctionCall","src":"24485:13:56"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"24499:19:56","statements":[{"nodeType":"YulAssignment","src":"24501:15:56","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"24510:1:56"},{"kind":"number","nodeType":"YulLiteral","src":"24513:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24506:3:56"},"nodeType":"YulFunctionCall","src":"24506:10:56"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"24501:1:56"}]}]},"pre":{"nodeType":"YulBlock","src":"24481:3:56","statements":[]},"src":"24477:113:56"},{"body":{"nodeType":"YulBlock","src":"24616:31:56","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"24629:3:56"},{"name":"length","nodeType":"YulIdentifier","src":"24634:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24625:3:56"},"nodeType":"YulFunctionCall","src":"24625:16:56"},{"kind":"number","nodeType":"YulLiteral","src":"24643:1:56","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24618:6:56"},"nodeType":"YulFunctionCall","src":"24618:27:56"},"nodeType":"YulExpressionStatement","src":"24618:27:56"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"24605:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"24608:6:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24602:2:56"},"nodeType":"YulFunctionCall","src":"24602:13:56"},"nodeType":"YulIf","src":"24599:2:56"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"24426:3:56","type":""},{"name":"dst","nodeType":"YulTypedName","src":"24431:3:56","type":""},{"name":"length","nodeType":"YulTypedName","src":"24436:6:56","type":""}],"src":"24395:258:56"},{"body":{"nodeType":"YulBlock","src":"24705:109:56","statements":[{"body":{"nodeType":"YulBlock","src":"24792:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24801:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24804:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24794:6:56"},"nodeType":"YulFunctionCall","src":"24794:12:56"},"nodeType":"YulExpressionStatement","src":"24794:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24728:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24739:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"24746:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24735:3:56"},"nodeType":"YulFunctionCall","src":"24735:54:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"24725:2:56"},"nodeType":"YulFunctionCall","src":"24725:65:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"24718:6:56"},"nodeType":"YulFunctionCall","src":"24718:73:56"},"nodeType":"YulIf","src":"24715:2:56"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24694:5:56","type":""}],"src":"24658:156:56"},{"body":{"nodeType":"YulBlock","src":"24863:76:56","statements":[{"body":{"nodeType":"YulBlock","src":"24917:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24926:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24929:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24919:6:56"},"nodeType":"YulFunctionCall","src":"24919:12:56"},"nodeType":"YulExpressionStatement","src":"24919:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24886:5:56"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24907:5:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"24900:6:56"},"nodeType":"YulFunctionCall","src":"24900:13:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"24893:6:56"},"nodeType":"YulFunctionCall","src":"24893:21:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"24883:2:56"},"nodeType":"YulFunctionCall","src":"24883:32:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"24876:6:56"},"nodeType":"YulFunctionCall","src":"24876:40:56"},"nodeType":"YulIf","src":"24873:2:56"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24852:5:56","type":""}],"src":"24819:120:56"},{"body":{"nodeType":"YulBlock","src":"24989:75:56","statements":[{"body":{"nodeType":"YulBlock","src":"25042:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25051:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25054:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25044:6:56"},"nodeType":"YulFunctionCall","src":"25044:12:56"},"nodeType":"YulExpressionStatement","src":"25044:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25012:5:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25030:1:56","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"25033:5:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"25019:10:56"},"nodeType":"YulFunctionCall","src":"25019:20:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"25009:2:56"},"nodeType":"YulFunctionCall","src":"25009:31:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25002:6:56"},"nodeType":"YulFunctionCall","src":"25002:39:56"},"nodeType":"YulIf","src":"24999:2:56"}]},"name":"validator_revert_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24978:5:56","type":""}],"src":"24944:120:56"},{"body":{"nodeType":"YulBlock","src":"25116:101:56","statements":[{"body":{"nodeType":"YulBlock","src":"25195:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25204:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25207:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25197:6:56"},"nodeType":"YulFunctionCall","src":"25197:12:56"},"nodeType":"YulExpressionStatement","src":"25197:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25139:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25150:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"25157:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"25146:3:56"},"nodeType":"YulFunctionCall","src":"25146:46:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"25136:2:56"},"nodeType":"YulFunctionCall","src":"25136:57:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25129:6:56"},"nodeType":"YulFunctionCall","src":"25129:65:56"},"nodeType":"YulIf","src":"25126:2:56"}]},"name":"validator_revert_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"25105:5:56","type":""}],"src":"25069:148:56"},{"body":{"nodeType":"YulBlock","src":"25267:71:56","statements":[{"body":{"nodeType":"YulBlock","src":"25316:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25325:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25328:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25318:6:56"},"nodeType":"YulFunctionCall","src":"25318:12:56"},"nodeType":"YulExpressionStatement","src":"25318:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25290:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25301:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"25308:4:56","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"25297:3:56"},"nodeType":"YulFunctionCall","src":"25297:16:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"25287:2:56"},"nodeType":"YulFunctionCall","src":"25287:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25280:6:56"},"nodeType":"YulFunctionCall","src":"25280:35:56"},"nodeType":"YulIf","src":"25277:2:56"}]},"name":"validator_revert_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"25256:5:56","type":""}],"src":"25222: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_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, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { 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_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_$6761_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_$6742_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_$6719_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_$5737_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_$6692_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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 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, 0xffffffffffffffffffffffffffffffff))\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, 0xffffffffffffffffffffffffffffffffffffffff))\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, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), signextend(2, value2))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 128), 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, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), signextend(2, value2))\n        let _1 := 0xffffffffffffffffffffffffffffffff\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, 0xffffffffffffffffffffffffffffffffffffffff))\n        let _1 := 0xffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\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_$5490_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_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, 0xffffffffffffffffffffffffffffffff))\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, 0xffffffffffffffffffffffffffffffff))\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_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ERC721: approved query for nonex\")\n        mstore(add(headStart, 96), \"istent token\")\n        tail := add(headStart, 128)\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_stringliteral_fa1d7f5abfb64daa85ec56d31f717d114a9182c82071ec276fdb7487a00b013e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"Not cleared\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_struct$_MintCallbackData_$5737_memory_ptr__to_t_struct$_MintCallbackData_$5737_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := mload(value0)\n        let _2 := 0xffffffffffffffffffffffffffffffffffffffff\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, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    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, 0xffffffffffffffffffffffffffffffff))\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, 0xffffffffffffffffffffffff))\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), 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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { 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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 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, 0xffffffffffffffffffffffffffffffffffffffff))) { 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, 0xffffffffffffffffffffffffffffffff))) { 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":{"4482":[{"length":32,"start":11009}],"5530":[{"length":32,"start":5324}],"5533":[{"length":32,"start":5357}],"6024":[{"length":32,"start":2727},{"length":32,"start":3532},{"length":32,"start":3731},{"length":32,"start":5911},{"length":32,"start":10889},{"length":32,"start":11844},{"length":32,"start":13784}],"6028":[{"length":32,"start":665},{"length":32,"start":8762},{"length":32,"start":9925},{"length":32,"start":10171},{"length":32,"start":14868},{"length":32,"start":14938},{"length":32,"start":15054}]},"linkReferences":{},"object":"6080604052600436106102895760003560e01c806370a0823111610153578063ac9650d8116100cb578063c87b56dd1161007f578063e985e9c511610064578063e985e9c5146106f5578063f3995c6714610715578063fc6f7865146107285761030d565b8063c87b56dd146106c2578063df2ab5bb146106e25761030d565b8063c2e3140a116100b0578063c2e3140a14610692578063c45a0155146106a5578063c53af304146106ba5761030d565b8063ac9650d814610652578063b88d4fde146106725761030d565b806395d89b4111610122578063a22cb46511610107578063a22cb4651461060c578063a4a78f0c1461062c578063a98ce37f1461063f5761030d565b806395d89b41146105bf57806399fbab88146105d45761030d565b806370a08231146105545780637ac2ff7b14610574578063883164561461058757806390793ea8146105aa5761030d565b80632f745c59116102015780634659a494116101b55780634f6ccce71161019a5780634f6ccce7146104ff5780636352211e1461051f5780636c0360eb1461053f5761030d565b80634659a494146104cc5780634cb42d2d146104df5761030d565b80633644e515116101e65780633644e5151461048457806342842e0e1461049957806342966c68146104b95761030d565b80632f745c591461044f57806330adf81f1461046f5761030d565b80630c49ccbe1161025857806318160ddd1161023d57806318160ddd146103eb578063219f5d171461040d57806323b872dd1461042f5761030d565b80630c49ccbe146103b757806313ead562146103d85761030d565b806301ffc9a71461031257806306fdde0314610348578063081812fc1461036a578063095ea7b3146103975761030d565b3661030d57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461030b576040805162461bcd60e51b815260206004820152600860248201527f4e6f742053414d42000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561031e57600080fd5b5061033261032d3660046153a6565b61073b565b60405161033f919061591e565b60405180910390f35b34801561035457600080fd5b5061035d610776565b60405161033f9190615971565b34801561037657600080fd5b5061038a6103853660046156b8565b61080c565b60405161033f91906157e2565b3480156103a357600080fd5b5061030b6103b2366004615270565b610868565b6103ca6103c5366004615483565b61093e565b60405161033f929190615b42565b61038a6103e6366004615103565b610daa565b3480156103f757600080fd5b506104006110b7565b60405161033f9190615929565b61042061041b366004615494565b6110c8565b60405161033f93929190615afd565b34801561043b57600080fd5b5061030b61044a36600461515c565b611401565b34801561045b57600080fd5b5061040061046a366004615270565b611458565b34801561047b57600080fd5b50610400611483565b34801561049057600080fd5b506104006114a7565b3480156104a557600080fd5b5061030b6104b436600461515c565b611565565b61030b6104c73660046156b8565b611580565b61030b6104da3660046152dc565b61164f565b3480156104eb57600080fd5b5061030b6104fa366004615717565b611702565b34801561050b57600080fd5b5061040061051a3660046156b8565b611780565b34801561052b57600080fd5b5061038a61053a3660046156b8565b611796565b34801561054b57600080fd5b5061035d6117be565b34801561056057600080fd5b5061040061056f3660046150af565b6117c3565b61030b6105823660046152dc565b61182b565b61059a610595366004615550565b611cd7565b60405161033f9493929190615b1e565b3480156105b657600080fd5b5061038a612238565b3480156105cb57600080fd5b5061035d61225c565b3480156105e057600080fd5b506105f46105ef3660046156b8565b6122bd565b60405161033f9c9b9a99989796959493929190615b50565b34801561061857600080fd5b5061030b610627366004615243565b6124ec565b61030b61063a3660046152dc565b61260f565b61030b61064d3660046156d0565b6126c1565b610665610660366004615337565b612841565b60405161033f91906158a0565b34801561067e57600080fd5b5061030b61068d36600461519c565b612981565b61030b6106a03660046152dc565b6129df565b3480156106b157600080fd5b5061038a612a87565b61030b612aab565b3480156106ce57600080fd5b5061035d6106dd3660046156b8565b612abd565b61030b6106f036600461529b565b612b8c565b34801561070157600080fd5b506103326107103660046150cb565b612c6f565b61030b6107233660046152dc565b612c9d565b6103ca61073636600461546c565b612d28565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108025780601f106107d757610100808354040283529160200191610802565b820191906000526020600020905b8154815290600101906020018083116107e557829003601f168201915b5050505050905090565b600061081782613246565b61083c5760405162461bcd60e51b8152600401610833906159bb565b60405180910390fd5b506000908152600c60205260409020546c0100000000000000000000000090046001600160a01b031690565b600061087382611796565b9050806001600160a01b0316836001600160a01b031614156108c65760405162461bcd60e51b8152600401808060200182810382526021815260200180615ee26021913960400191505060405180910390fd5b806001600160a01b03166108d8613253565b6001600160a01b031614806108f457506108f481610710613253565b61092f5760405162461bcd60e51b8152600401808060200182810382526038815260200180615e0c6038913960400191505060405180910390fd5b6109398383613257565b505050565b600080823561094d33826132db565b6109695760405162461bcd60e51b815260040161083390615984565b836080013580610977613377565b11156109ca576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b60006109dc6040870160208801615562565b6001600160801b0316116109ef57600080fd5b84356000908152600c602090815260409182902060018101549092600160801b9091046001600160801b031691610a2a918901908901615562565b6001600160801b0316816001600160801b03161015610a4857600080fd5b60018281015469ffffffffffffffffffff166000908152600b60209081526040808320815160608101835281546001600160a01b039081168252919095015490811692850192909252600160a01b90910462ffffff1690830152610acc7f00000000000000000000000000000000000000000000000000000000000000008361337b565b60018501549091506001600160a01b0382169063a34123a7906a01000000000000000000008104600290810b91600160681b9004900b610b1260408e0160208f01615562565b6040518463ffffffff1660e01b8152600401610b309392919061594b565b6040805180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8191906156f4565b909850965060408901358810801590610b9e575088606001358710155b610bba5760405162461bcd60e51b815260040161083390615a18565b6001840154600090610bea9030906a01000000000000000000008104600290810b91600160681b9004900b613477565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610c1b9190615929565b60a06040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b91906155ac565b50509250925050610c9087600201548303876001600160801b0316600160801b6134d1565b6004880180546fffffffffffffffffffffffffffffffff198116928e016001600160801b039182160181169290921790556003880154610cda91908303908816600160801b6134d1565b6004880180546001600160801b03808216938e01600160801b9283900482160116029190911790556002870182905560038701819055610d2060408d0160208e01615562565b86038760010160106101000a8154816001600160801b0302191690836001600160801b031602179055508b600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48d6020016020810190610d839190615562565b8d8d604051610d9493929190615afd565b60405180910390a2505050505050505050915091565b6000836001600160a01b0316856001600160a01b031610610dca57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b158015610e5557600080fd5b505afa158015610e69573d6000803e3d6000fd5b505050506040513d6020811015610e7f57600080fd5b505190506001600160a01b038116610fce577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b505050506040513d6020811015610f4857600080fd5b5051604080517ff637731d0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b158015610fb157600080fd5b505af1158015610fc5573d6000803e3d6000fd5b505050506110af565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561100957600080fd5b505afa15801561101d573d6000803e3d6000fd5b505050506040513d60e081101561103357600080fd5b505190506001600160a01b0381166110ad57816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050505b505b949350505050565b60006110c36002613580565b905090565b60008060008360a00135806110db613377565b111561112e576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b84356000908152600c6020908152604080832060018082015469ffffffffffffffffffff81168652600b855283862084516060808201875282546001600160a01b039081168352929094015480831682890190815262ffffff600160a01b9092048216838901908152885161014081018a528451861681529151909416818a01529251168287015230828501526a01000000000000000000008304600290810b810b608080850191909152600160681b909404810b900b60a0830152958c013560c0820152938b013560e0850152908a0135610100840152890135610120830152929061121a9061358b565b6001870154939a50919850965091506000906112549030906a01000000000000000000008104600290810b91600160681b9004900b613477565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016112859190615929565b60a06040518083038186803b15801561129d57600080fd5b505afa1580156112b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d591906155ac565b50509250925050611311866002015483038760010160109054906101000a90046001600160801b03166001600160801b0316600160801b6134d1565b6004870180546001600160801b0380821690930183166fffffffffffffffffffffffffffffffff19909116179055600387015460018801546113619291840391600160801b9182900416906134d1565b6004870180546001600160801b03600160801b80830482169094018116840291811691909117909155600288018490556003880183905560018801805483810483168e018316909302929091169190911790556040518b35907f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f906113eb908d908d908d90615afd565b60405180910390a2505050505050509193909250565b61141261140c613253565b826132db565b61144d5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f036031913960400191505060405180910390fd5b6109398383836137c6565b6001600160a01b038216600090815260016020526040812061147a9083613912565b90505b92915050565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061151461391e565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b61093983838360405180602001604052806000815250612981565b8061158b33826132db565b6115a75760405162461bcd60e51b815260040161083390615984565b6000828152600c602052604090206001810154600160801b90046001600160801b03161580156115e2575060048101546001600160801b0316155b801561160057506004810154600160801b90046001600160801b0316155b61161c5760405162461bcd60e51b815260040161083390615a86565b6000838152600c602052604081208181556001810182905560028101829055600381018290556004015561093983613922565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156116e257600080fd5b505af11580156116f6573d6000803e3d6000fd5b50505050505050505050565b6000611710828401846154a5565b90506117407f000000000000000000000000000000000000000000000000000000000000000082600001516139ef565b50841561175b57805151602082015161175b91903388613a12565b83156117795761177981600001516020015182602001513387613a12565b5050505050565b60008061178e600284613ba2565b509392505050565b600061147d82604051806060016040528060298152602001615e6e6029913960029190613bc0565b606090565b60006001600160a01b03821661180a5760405162461bcd60e51b815260040180806020018281038252602a815260200180615e44602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061147d90613580565b83611834613377565b1115611887576040805162461bcd60e51b815260206004820152600e60248201527f5065726d69742065787069726564000000000000000000000000000000000000604482015290519081900360640190fd5b60006118916114a7565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad88886118bd81613bcd565b604080516020808201969096526001600160a01b03909416848201526060840192909252608083015260a08083018a90528151808403909101815260c0830182528051908401207f190100000000000000000000000000000000000000000000000000000000000060e084015260e28301949094526101028083019490945280518083039094018452610122909101905281519101209050600061196087611796565b9050806001600160a01b0316886001600160a01b031614156119b35760405162461bcd60e51b8152600401808060200182810382526027815260200180615d6f6027913960400191505060405180910390fd5b6119bc81613c0c565b15611b97576040805160208082018790528183018690527fff0000000000000000000000000000000000000000000000000000000000000060f889901b16606083015282516041818403018152606183018085527f1626ba7e0000000000000000000000000000000000000000000000000000000090526065830186815260858401948552815160a585015281516001600160a01b03871695631626ba7e958995919260c59091019185019080838360005b83811015611a86578181015183820152602001611a6e565b50505050905090810190601f168015611ab35780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015611ad157600080fd5b505afa158015611ae5573d6000803e3d6000fd5b505050506040513d6020811015611afb57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014611b92576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b611cc3565b600060018387878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611bf3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c5b576040805162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e6174757265000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316816001600160a01b031614611cc1576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b505b611ccd8888613257565b5050505050505050565b60008060008084610140013580611cec613377565b1115611d3f576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b604080516101408101909152600090611e0b9080611d6060208b018b6150af565b6001600160a01b03168152602001896020016020810190611d8191906150af565b6001600160a01b03168152602001611d9f60608b0160408c0161569e565b62ffffff168152306020820152604001611dbf60808b0160608c016153e6565b60020b8152602001611dd760a08b0160808c016153e6565b60020b81526020018960a0013581526020018960c0013581526020018960e00135815260200189610100013581525061358b565b92975090955093509050611e7f611e2a61014089016101208a016150af565b600d80547fffffffffffffffffffff000000000000000000000000000000000000000000008116600175ffffffffffffffffffffffffffffffffffffffffffff92831690810190921617909155975087613c12565b6000611eaa30611e9560808b0160608c016153e6565b611ea560a08c0160808d016153e6565b613477565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401611edb9190615929565b60a06040518083038186803b158015611ef357600080fd5b505afa158015611f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2b91906155ac565b505092509250506000611fa48560405180606001604052808e6000016020810190611f5691906150af565b6001600160a01b031681526020018e6020016020810190611f7791906150af565b6001600160a01b031681526020018e6040016020810190611f98919061569e565b62ffffff169052613d40565b905060405180610140016040528060006bffffffffffffffffffffffff16815260200160006001600160a01b031681526020018269ffffffffffffffffffff1681526020018c6060016020810190611ffc91906153e6565b60020b815260200161201460a08e0160808f016153e6565b60020b81526020018a6001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815250600c60008c815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b03160217905550905050897f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f8a8a8a60405161222393929190615afd565b60405180910390a25050505050509193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108025780601f106107d757610100808354040283529160200191610802565b6000818152600c6020908152604080832081516101408101835281546bffffffffffffffffffffffff811682526001600160a01b036c010000000000000000000000009091041693810193909352600181015469ffffffffffffffffffff81169284018390526a01000000000000000000008104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e0860152600490920154808316610100860152041661012083015282918291829182918291829182918291829182918291906123c65760405162461bcd60e51b815260040161083390615a4f565b6000600b6000836040015169ffffffffffffffffffff1669ffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681525050905081600001518260200151826000015183602001518460400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001519d509d509d509d509d509d509d509d509d509d509d509d50505091939597999b5091939597999b565b6124f4613253565b6001600160a01b0316826001600160a01b0316141561255a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000612567613253565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092179091556125c9613253565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561267957600080fd5b505afa15801561268d573d6000803e3d6000fd5b505050506040513d60208110156126a357600080fd5b505110156126b9576126b986868686868661164f565b505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561273057600080fd5b505afa158015612744573d6000803e3d6000fd5b505050506040513d602081101561275a57600080fd5b50519050828110156127b3576040805162461bcd60e51b815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b8015610939577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561281f57600080fd5b505af1158015612833573d6000803e3d6000fd5b505050506109398282613e90565b60608167ffffffffffffffff8111801561285a57600080fd5b5060405190808252806020026020018201604052801561288e57816020015b60608152602001906001900390816128795790505b50905060005b8281101561297a57600080308686858181106128ac57fe5b90506020028101906128be9190615bef565b6040516128cc9291906157d2565b600060405180830381855af49150503d8060008114612907576040519150601f19603f3d011682016040523d82523d6000602084013e61290c565b606091505b5091509150816129585760448151101561292557600080fd5b6004810190508080602001905181019061293f9190615402565b60405162461bcd60e51b81526004016108339190615971565b8084848151811061296557fe5b60209081029190910101525050600101612894565b5092915050565b61299261298c613253565b836132db565b6129cd5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f036031913960400191505060405180910390fd5b6129d984848484613f99565b50505050565b604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015612a4757600080fd5b505afa158015612a5b573d6000803e3d6000fd5b505050506040513d6020811015612a7157600080fd5b505110156126b9576126b9868686868686612c9d565b7f000000000000000000000000000000000000000000000000000000000000000081565b4715612abb57612abb3347613e90565b565b6060612ac882613246565b612ad157600080fd5b6040517fe9dc63750000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e9dc637590612b389030908690600401615932565b60006040518083038186803b158015612b5057600080fd5b505afa158015612b64573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261147d9190810190615402565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612bdb57600080fd5b505afa158015612bef573d6000803e3d6000fd5b505050506040513d6020811015612c0557600080fd5b5051905082811015612c5e576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156129d9576129d9848383613feb565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156116e257600080fd5b6000808235612d3733826132db565b612d535760405162461bcd60e51b815260040161083390615984565b6000612d656060860160408701615562565b6001600160801b03161180612d9257506000612d876080860160608701615562565b6001600160801b0316115b612d9b57600080fd5b600080612dae60408701602088016150af565b6001600160a01b031614612dd157612dcc60408601602087016150af565b612dd3565b305b85356000908152600c6020908152604080832060018082015469ffffffffffffffffffff168552600b8452828520835160608101855281546001600160a01b039081168252919092015490811694820194909452600160a01b90930462ffffff169183019190915292935090612e697f00000000000000000000000000000000000000000000000000000000000000008361337b565b600484015460018501549192506001600160801b0380821692600160801b92839004821692900416156130865760018501546040517fa34123a70000000000000000000000000000000000000000000000000000000081526001600160a01b0385169163a34123a791612f00916a01000000000000000000008104600290810b92600160681b909204900b9060009060040161594b565b6040805180830381600087803b158015612f1957600080fd5b505af1158015612f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5191906156f4565b5050600185015460009081906001600160a01b0386169063514ea4bf90612f969030906a01000000000000000000008104600290810b91600160681b9004900b613477565b6040518263ffffffff1660e01b8152600401612fb29190615929565b60a06040518083038186803b158015612fca57600080fd5b505afa158015612fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300291906155ac565b5050925092505061303e876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b6134d1565b84019350613077876003015482038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b6134d1565b60028801929092556003870155015b6000806001600160801b0384166130a360608e0160408f01615562565b6001600160801b0316116130c6576130c160608d0160408e01615562565b6130c8565b835b836001600160801b03168d60600160208101906130e59190615562565b6001600160801b0316116131085761310360808e0160608f01615562565b61310a565b835b60018901546040517f4f1eb3d80000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03871691634f1eb3d89161317d918c916a01000000000000000000008104600290810b92600160681b909204900b9088908890600401615839565b6040805180830381600087803b15801561319657600080fd5b505af11580156131aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ce919061557e565b6004890180546fffffffffffffffffffffffffffffffff196001600160801b03918216600160801b878a0384160217168689038216179091556040519281169d50169a508c35907f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f0190610d94908b9086908690615876565b600061147d60028361417b565b3390565b6000818152600c6020526040902080546bffffffffffffffffffffffff166c010000000000000000000000006001600160a01b0385169081029190911790915581906132a282611796565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006132e682613246565b6133215760405162461bcd60e51b815260040180806020018281038252602c815260200180615de0602c913960400191505060405180910390fd5b600061332c83611796565b9050806001600160a01b0316846001600160a01b031614806133675750836001600160a01b031661335c8461080c565b6001600160a01b0316145b806110af57506110af8185612c6f565b4290565b600081602001516001600160a01b031682600001516001600160a01b0316106133a357600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516bffffffffffffffffffffffff19606086901b16602080830191909152600285810b60e890811b60348501529085900b901b60378301528251601a818403018152603a90920190925280519101205b9392505050565b600080806000198587098686029250828110908390030390508061350757600084116134fc57600080fd5b5082900490506134ca565b80841161351357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600061147d82614187565b6000806000806000604051806060016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001876040015162ffffff1681525090506135fd7f00000000000000000000000000000000000000000000000000000000000000008261337b565b91506000826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561363a57600080fd5b505afa15801561364e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613672919061560d565b50505050505090506000613689886080015161418b565b9050600061369a8960a0015161418b565b90506136b18383838c60c001518d60e001516144d9565b9750505050816001600160a01b0316633c8a7d8d876060015188608001518960a00151896040518060400160405280888152602001336001600160a01b03168152506040516020016137039190615abd565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016137329594939291906157f6565b6040805180830381600087803b15801561374b57600080fd5b505af115801561375f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061378391906156f4565b610100880151919550935084108015906137a257508561012001518310155b6137be5760405162461bcd60e51b815260040161083390615a18565b509193509193565b826001600160a01b03166137d982611796565b6001600160a01b03161461381e5760405162461bcd60e51b8152600401808060200182810382526029815260200180615eb96029913960400191505060405180910390fd5b6001600160a01b0382166138635760405162461bcd60e51b8152600401808060200182810382526024815260200180615d966024913960400191505060405180910390fd5b61386e838383610939565b613879600082613257565b6001600160a01b038316600090815260016020526040902061389b908261459d565b506001600160a01b03821660009081526001602052604090206138be90826145a9565b506138cb600282846145b5565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061147a83836145cb565b4690565b600061392d82611796565b905061393b81600084610939565b613946600083613257565b60008281526008602052604090205460026000196101006001841615020190911604156139845760008281526008602052604081206139849161501f565b6001600160a01b03811660009081526001602052604090206139a6908361459d565b506139b260028361462f565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006139fb838361337b565b9050336001600160a01b0382161461147d57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015613a535750804710155b15613b75577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613ab357600080fd5b505af1158015613ac7573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613b4357600080fd5b505af1158015613b57573d6000803e3d6000fd5b505050506040513d6020811015613b6d57600080fd5b506129d99050565b6001600160a01b038316301415613b9657613b91848383613feb565b6129d9565b6129d98484848461463b565b6000808080613bb186866147d3565b909450925050505b9250929050565b60006110af84848461484e565b6000908152600c6020526040902080546bffffffffffffffffffffffff19811660016bffffffffffffffffffffffff9283169081019092161790915590565b3b151590565b6001600160a01b038216613c6d576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613c7681613246565b15613cc8576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b613cd460008383610939565b6001600160a01b0382166000908152600160205260409020613cf690826145a9565b50613d03600282846145b5565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0382166000908152600a602052604090205469ffffffffffffffffffff168061147d5750600d8054600169ffffffffffffffffffff76010000000000000000000000000000000000000000000080840482168381019092160275ffffffffffffffffffffffffffffffffffffffffffff909316929092179092556001600160a01b038085166000908152600a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffff000000000000000000001686179055848352600b825291829020865181549085167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825591870151950180549287015162ffffff16600160a01b027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff969094169290911691909117939093161790915592915050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613edc5780518252601f199092019160209182019101613ebd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f3e576040519150601f19603f3d011682016040523d82523d6000602084013e613f43565b606091505b5050905080610939576040805162461bcd60e51b815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b613fa48484846137c6565b613fb084848484614918565b6129d95760405162461bcd60e51b8152600401808060200182810382526032815260200180615d3d6032913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b602083106140955780518252601f199092019160209182019101614076565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146140f7576040519150601f19603f3d011682016040523d82523d6000602084013e6140fc565b606091505b509150915081801561412a57508051158061412a575080806020019051602081101561412757600080fd5b50515b611779576040805162461bcd60e51b815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600061147a8383614af4565b5490565b60008060008360020b126141a2578260020b6141aa565b8260020b6000035b9050620d89e8811115614204576040805162461bcd60e51b815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006001821661421857600160801b61422a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561425e576ffff97272373d413259a46990580e213a0260801c5b600482161561427d576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561429c576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156142bb576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156142da576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156142f9576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614318576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614338576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614358576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614378576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614398576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156143b8576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156143d8576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156143f8576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614418576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614439576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614459576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614478576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614495576b048a170391f7dc42444e8fa20260801c5b60008460020b13156144b05780600019816144ac57fe5b0490505b6401000000008106156144c45760016144c7565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b031611156144f9579293925b846001600160a01b0316866001600160a01b0316116145245761451d858585614b0c565b9050614594565b836001600160a01b0316866001600160a01b0316101561458657600061454b878686614b0c565b9050600061455a878986614b78565b9050806001600160801b0316826001600160801b03161061457b578061457d565b815b92505050614594565b614591858584614b78565b90505b95945050505050565b600061147a8383614bbe565b600061147a8383614c84565b60006110af84846001600160a01b038516614cce565b8154600090821061460d5760405162461bcd60e51b8152600401808060200182810382526022815260200180615d1b6022913960400191505060405180910390fd5b82600001828154811061461c57fe5b9060005260206000200154905092915050565b600061147a8383614d65565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b602083106146ed5780518252601f1990920191602091820191016146ce565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461474f576040519150601f19603f3d011682016040523d82523d6000602084013e614754565b606091505b5091509150818015614782575080511580614782575080806020019051602081101561477f57600080fd5b50515b6126b9576040805162461bcd60e51b815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8154600090819083106148175760405162461bcd60e51b8152600401808060200182810382526022815260200180615e976022913960400191505060405180910390fd5b600084600001848154811061482857fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816148e95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156148ae578181015183820152602001614896565b50505050905090810190601f1680156148db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106148fc57fe5b9060005260206000209060020201600101549150509392505050565b600061492c846001600160a01b0316613c0c565b614938575060016110af565b6000614a897f150b7a0200000000000000000000000000000000000000000000000000000000614966613253565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156149cd5781810151838201526020016149b5565b50505050905090810190601f1680156149fa5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001615d3d603291396001600160a01b0388169190614e39565b90506000818060200190516020811015614aa257600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b60009081526001919091016020526040902054151590565b6000826001600160a01b0316846001600160a01b03161115614b2c579192915b6000614b58856001600160a01b0316856001600160a01b03166c010000000000000000000000006134d1565b9050614594614b7384838888036001600160a01b03166134d1565b614e48565b6000826001600160a01b0316846001600160a01b03161115614b98579192915b6110af614b73836c010000000000000000000000008787036001600160a01b03166134d1565b60008181526001830160205260408120548015614c7a5783546000198083019190810190600090879083908110614bf157fe5b9060005260206000200154905080876000018481548110614c0e57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614c3e57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061147d565b600091505061147d565b6000614c908383614af4565b614cc65750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561147d565b50600061147d565b600082815260018401602052604081205480614d335750506040805180820182528381526020808201848152865460018181018955600089815284812095516002909302909501918255915190820155865486845281880190925292909120556134ca565b82856000016001830381548110614d4657fe5b90600052602060002090600202016001018190555060009150506134ca565b60008181526001830160205260408120548015614c7a5783546000198083019190810190600090879083908110614d9857fe5b9060005260206000209060020201905080876000018481548110614db857fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614df757fe5b600082815260208082206002600019909401938402018281556001908101839055929093558881528982019092526040822091909155945061147d9350505050565b60606110af8484600085614e5e565b806001600160801b038116811461077157600080fd5b606082471015614e9f5760405162461bcd60e51b8152600401808060200182810382526026815260200180615dba6026913960400191505060405180910390fd5b614ea885613c0c565b614ef9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614f375780518252601f199092019160209182019101614f18565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614f99576040519150601f19603f3d011682016040523d82523d6000602084013e614f9e565b606091505b5091509150614fae828286614fb9565b979650505050505050565b60608315614fc85750816134ca565b825115614fd85782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156148ae578181015183820152602001614896565b50805460018160011615610100020316600290046000825580601f106150455750615063565b601f0160209004906000526020600020908101906150639190615066565b50565b5b8082111561507b5760008155600101615067565b5090565b803561077181615cc4565b805161ffff8116811461077157600080fd5b803562ffffff8116811461077157600080fd5b6000602082840312156150c0578081fd5b81356134ca81615cc4565b600080604083850312156150dd578081fd5b82356150e881615cc4565b915060208301356150f881615cc4565b809150509250929050565b60008060008060808587031215615118578182fd5b843561512381615cc4565b9350602085013561513381615cc4565b92506151416040860161509c565b9150606085013561515181615cc4565b939692955090935050565b600080600060608486031215615170578081fd5b833561517b81615cc4565b9250602084013561518b81615cc4565b929592945050506040919091013590565b600080600080608085870312156151b1578182fd5b84356151bc81615cc4565b935060208501356151cc81615cc4565b925060408501359150606085013567ffffffffffffffff8111156151ee578182fd5b8501601f810187136151fe578182fd5b803561521161520c82615c76565b615c52565b818152886020838501011115615225578384fd5b81602084016020830137908101602001929092525092959194509250565b60008060408385031215615255578182fd5b823561526081615cc4565b915060208301356150f881615cd9565b60008060408385031215615282578182fd5b823561528d81615cc4565b946020939093013593505050565b6000806000606084860312156152af578081fd5b83356152ba81615cc4565b92506020840135915060408401356152d181615cc4565b809150509250925092565b60008060008060008060c087890312156152f4578384fd5b86356152ff81615cc4565b95506020870135945060408701359350606087013561531d81615d0b565b9598949750929560808101359460a0909101359350915050565b60008060208385031215615349578182fd5b823567ffffffffffffffff80821115615360578384fd5b818501915085601f830112615373578384fd5b813581811115615381578485fd5b8660208083028501011115615394578485fd5b60209290920196919550909350505050565b6000602082840312156153b7578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146134ca578182fd5b6000602082840312156153f7578081fd5b81356134ca81615ce7565b600060208284031215615413578081fd5b815167ffffffffffffffff811115615429578182fd5b8201601f81018413615439578182fd5b805161544761520c82615c76565b81815285602083850101111561545b578384fd5b614594826020830160208601615c98565b60006080828403121561547d578081fd5b50919050565b600060a0828403121561547d578081fd5b600060c0828403121561547d578081fd5b600081830360808112156154b7578182fd5b6040516040810167ffffffffffffffff82821081831117156154d557fe5b8160405260608412156154e6578485fd5b60a08301935081841081851117156154fa57fe5b50826040528435925061550c83615cc4565b91825260208401359161551e83615cc4565b8260608301526155306040860161509c565b608083015281526155436060850161507f565b6020820152949350505050565b6000610160828403121561547d578081fd5b600060208284031215615573578081fd5b81356134ca81615cf6565b60008060408385031215615590578182fd5b825161559b81615cf6565b60208401519092506150f881615cf6565b600080600080600060a086880312156155c3578283fd5b85516155ce81615cf6565b80955050602086015193506040860151925060608601516155ee81615cf6565b60808701519092506155ff81615cf6565b809150509295509295909350565b600080600080600080600060e0888a031215615627578485fd5b875161563281615cc4565b602089015190975061564381615ce7565b95506156516040890161508a565b945061565f6060890161508a565b935061566d6080890161508a565b925060a088015161567d81615d0b565b60c089015190925061568e81615cd9565b8091505092959891949750929550565b6000602082840312156156af578081fd5b61147a8261509c565b6000602082840312156156c9578081fd5b5035919050565b600080604083850312156156e2578182fd5b8235915060208301356150f881615cc4565b60008060408385031215615706578182fd5b505080516020909101519092909150565b6000806000806060858703121561572c578182fd5b8435935060208501359250604085013567ffffffffffffffff80821115615751578384fd5b818701915087601f830112615764578384fd5b813581811115615772578485fd5b886020828501011115615783578485fd5b95989497505060200194505050565b600081518084526157aa816020860160208601615c98565b601f01601f19169290920160200192915050565b60020b9052565b6001600160801b03169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b03871682528560020b60208301528460020b60408301526001600160801b038416606083015260a06080830152614fae60a0830184615792565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039390931683526001600160801b03918216602084015216604082015260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015615911577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526158ff858351615792565b945092850192908501906001016158c5565b5092979650505050505050565b901515815260200190565b90815260200190565b6001600160a01b03929092168252602082015260400190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b60006020825261147a6020830184615792565b6020808252600c908201527f4e6f7420617070726f7665640000000000000000000000000000000000000000604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f507269636520736c69707061676520636865636b000000000000000000000000604082015260600190565b60208082526010908201527f496e76616c696420746f6b656e20494400000000000000000000000000000000604082015260600190565b6020808252600b908201527f4e6f7420636c6561726564000000000000000000000000000000000000000000604082015260600190565b815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b6001600160801b039390931683526020830191909152604082015260600190565b9384526001600160801b039290921660208401526040830152606082015260800190565b918252602082015260400190565b6bffffffffffffffffffffffff8d1681526001600160a01b038c811660208301528b811660408301528a16606082015262ffffff89166080820152600288900b60a08201526101808101615ba760c08301896157be565b615bb460e08301886157c5565b8561010083015284610120830152615bd06101408301856157c5565b615bde6101608301846157c5565b9d9c50505050505050505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615c23578283fd5b83018035915067ffffffffffffffff821115615c3d578283fd5b602001915036819003821315613bb957600080fd5b60405181810167ffffffffffffffff81118282101715615c6e57fe5b604052919050565b600067ffffffffffffffff821115615c8a57fe5b50601f01601f191660200190565b60005b83811015615cb3578181015183820152602001615c9b565b838111156129d95750506000910152565b6001600160a01b038116811461506357600080fd5b801515811461506357600080fd5b8060020b811461506357600080fd5b6001600160801b038116811461506357600080fd5b60ff8116811461506357600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732315065726d69743a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x289 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x153 JUMPI DUP1 PUSH4 0xAC9650D8 GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6F5 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x715 JUMPI DUP1 PUSH4 0xFC6F7865 EQ PUSH2 0x728 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x6C2 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x6E2 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0xC2E3140A GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x6A5 JUMPI DUP1 PUSH4 0xC53AF304 EQ PUSH2 0x6BA JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x672 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x122 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x62C JUMPI DUP1 PUSH4 0xA98CE37F EQ PUSH2 0x63F JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5BF JUMPI DUP1 PUSH4 0x99FBAB88 EQ PUSH2 0x5D4 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x7AC2FF7B EQ PUSH2 0x574 JUMPI DUP1 PUSH4 0x88316456 EQ PUSH2 0x587 JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x5AA JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x2F745C59 GT PUSH2 0x201 JUMPI DUP1 PUSH4 0x4659A494 GT PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0x19A JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x51F JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x53F JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x4659A494 EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0x4CB42D2D EQ PUSH2 0x4DF JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x484 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x4B9 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x44F JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x46F JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0xC49CCBE GT PUSH2 0x258 JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x23D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3EB JUMPI DUP1 PUSH4 0x219F5D17 EQ PUSH2 0x40D JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x42F JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0xC49CCBE EQ PUSH2 0x3B7 JUMPI DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x3D8 JUMPI PUSH2 0x30D JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x312 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x397 JUMPI PUSH2 0x30D JUMP JUMPDEST CALLDATASIZE PUSH2 0x30D JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x30B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 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 0x31E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x332 PUSH2 0x32D CALLDATASIZE PUSH1 0x4 PUSH2 0x53A6 JUMP JUMPDEST PUSH2 0x73B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x591E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35D PUSH2 0x776 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x5971 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38A PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x80C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x57E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x3B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5270 JUMP JUMPDEST PUSH2 0x868 JUMP JUMPDEST PUSH2 0x3CA PUSH2 0x3C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5483 JUMP JUMPDEST PUSH2 0x93E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP3 SWAP2 SWAP1 PUSH2 0x5B42 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x3E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x5103 JUMP JUMPDEST PUSH2 0xDAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x10B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH2 0x420 PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x5494 JUMP JUMPDEST PUSH2 0x10C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x44A CALLDATASIZE PUSH1 0x4 PUSH2 0x515C JUMP JUMPDEST PUSH2 0x1401 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x46A CALLDATASIZE PUSH1 0x4 PUSH2 0x5270 JUMP JUMPDEST PUSH2 0x1458 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x1483 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x14A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x4B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x515C JUMP JUMPDEST PUSH2 0x1565 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x4C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x1580 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x4DA CALLDATASIZE PUSH1 0x4 PUSH2 0x52DC JUMP JUMPDEST PUSH2 0x164F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x4FA CALLDATASIZE PUSH1 0x4 PUSH2 0x5717 JUMP JUMPDEST PUSH2 0x1702 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x51A CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x1780 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38A PUSH2 0x53A CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x1796 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35D PUSH2 0x17BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x56F CALLDATASIZE PUSH1 0x4 PUSH2 0x50AF JUMP JUMPDEST PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x582 CALLDATASIZE PUSH1 0x4 PUSH2 0x52DC JUMP JUMPDEST PUSH2 0x182B JUMP JUMPDEST PUSH2 0x59A PUSH2 0x595 CALLDATASIZE PUSH1 0x4 PUSH2 0x5550 JUMP JUMPDEST PUSH2 0x1CD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38A PUSH2 0x2238 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35D PUSH2 0x225C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F4 PUSH2 0x5EF CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x22BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B50 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x627 CALLDATASIZE PUSH1 0x4 PUSH2 0x5243 JUMP JUMPDEST PUSH2 0x24EC JUMP JUMPDEST PUSH2 0x30B PUSH2 0x63A CALLDATASIZE PUSH1 0x4 PUSH2 0x52DC JUMP JUMPDEST PUSH2 0x260F JUMP JUMPDEST PUSH2 0x30B PUSH2 0x64D CALLDATASIZE PUSH1 0x4 PUSH2 0x56D0 JUMP JUMPDEST PUSH2 0x26C1 JUMP JUMPDEST PUSH2 0x665 PUSH2 0x660 CALLDATASIZE PUSH1 0x4 PUSH2 0x5337 JUMP JUMPDEST PUSH2 0x2841 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x58A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x68D CALLDATASIZE PUSH1 0x4 PUSH2 0x519C JUMP JUMPDEST PUSH2 0x2981 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x6A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x52DC JUMP JUMPDEST PUSH2 0x29DF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38A PUSH2 0x2A87 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x2AAB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35D PUSH2 0x6DD CALLDATASIZE PUSH1 0x4 PUSH2 0x56B8 JUMP JUMPDEST PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x30B PUSH2 0x6F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x529B JUMP JUMPDEST PUSH2 0x2B8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x332 PUSH2 0x710 CALLDATASIZE PUSH1 0x4 PUSH2 0x50CB JUMP JUMPDEST PUSH2 0x2C6F JUMP JUMPDEST PUSH2 0x30B PUSH2 0x723 CALLDATASIZE PUSH1 0x4 PUSH2 0x52DC JUMP JUMPDEST PUSH2 0x2C9D JUMP JUMPDEST PUSH2 0x3CA PUSH2 0x736 CALLDATASIZE PUSH1 0x4 PUSH2 0x546C JUMP JUMPDEST PUSH2 0x2D28 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 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 0x802 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x802 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 0x7E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x817 DUP3 PUSH2 0x3246 JUMP JUMPDEST PUSH2 0x83C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x59BB 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 PUSH13 0x1000000000000000000000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x873 DUP3 PUSH2 0x1796 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 0x8C6 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 0x5EE2 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 0x8D8 PUSH2 0x3253 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x8F4 JUMPI POP PUSH2 0x8F4 DUP2 PUSH2 0x710 PUSH2 0x3253 JUMP JUMPDEST PUSH2 0x92F 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 0x5E0C PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x939 DUP4 DUP4 PUSH2 0x3257 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x94D CALLER DUP3 PUSH2 0x32DB JUMP JUMPDEST PUSH2 0x969 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5984 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0x977 PUSH2 0x3377 JUMP JUMPDEST GT ISZERO PUSH2 0x9CA 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9DC PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x9EF 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 0xA2A SWAP2 DUP10 ADD SWAP1 DUP10 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0xA48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP3 DUP2 ADD SLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0xACC PUSH32 0x0 DUP4 PUSH2 0x337B JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA34123A7 SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0xB12 PUSH1 0x40 DUP15 ADD PUSH1 0x20 DUP16 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB30 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x594B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB5D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB81 SWAP2 SWAP1 PUSH2 0x56F4 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD DUP9 LT DUP1 ISZERO SWAP1 PUSH2 0xB9E JUMPI POP DUP9 PUSH1 0x60 ADD CALLDATALOAD DUP8 LT ISZERO JUMPDEST PUSH2 0xBBA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5A18 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0xBEA SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x3477 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 0xC1B SWAP2 SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC6B SWAP2 SWAP1 PUSH2 0x55AC JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0xC90 DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x34D1 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xCDA SWAP2 SWAP1 DUP4 SUB SWAP1 DUP9 AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x34D1 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 0xD20 PUSH1 0x40 DUP14 ADD PUSH1 0x20 DUP15 ADD PUSH2 0x5562 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 0xD83 SWAP2 SWAP1 PUSH2 0x5562 JUMP JUMPDEST DUP14 DUP14 PUSH1 0x40 MLOAD PUSH2 0xD94 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP SWAP2 POP SWAP2 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 0xDCA 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 0xE55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE69 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 0xE7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xFCE 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 0xF1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF32 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 0xF48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF637731D00000000000000000000000000000000000000000000000000000000 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 0xFB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x10AF 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 0x1009 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x101D 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 0x1033 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x10AD 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 0x1094 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10A8 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 0x10C3 PUSH1 0x2 PUSH2 0x3580 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0xA0 ADD CALLDATALOAD DUP1 PUSH2 0x10DB PUSH2 0x3377 JUMP JUMPDEST GT ISZERO PUSH2 0x112E 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 PUSH11 0x100000000000000000000 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 0x121A SWAP1 PUSH2 0x358B JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD SWAP4 SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1254 SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x3477 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 0x1285 SWAP2 SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x129D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12D5 SWAP2 SWAP1 PUSH2 0x55AC JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x1311 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 0x34D1 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP1 SWAP4 ADD DUP4 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x1361 SWAP3 SWAP2 DUP5 SUB SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV AND SWAP1 PUSH2 0x34D1 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 DUP5 MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP9 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 DUP9 ADD DUP4 SWAP1 SSTORE PUSH1 0x1 DUP9 ADD DUP1 SLOAD DUP4 DUP2 DIV DUP4 AND DUP15 ADD DUP4 AND SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP12 CALLDATALOAD SWAP1 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F SWAP1 PUSH2 0x13EB SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH2 0x5AFD 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 0x1412 PUSH2 0x140C PUSH2 0x3253 JUMP JUMPDEST DUP3 PUSH2 0x32DB JUMP JUMPDEST PUSH2 0x144D 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 0x5F03 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x939 DUP4 DUP4 DUP4 PUSH2 0x37C6 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 0x147A SWAP1 DUP4 PUSH2 0x3912 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 0x1514 PUSH2 0x391E 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 0x939 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2981 JUMP JUMPDEST DUP1 PUSH2 0x158B CALLER DUP3 PUSH2 0x32DB JUMP JUMPDEST PUSH2 0x15A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5984 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 0x15E2 JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1600 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 PUSH2 0x161C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5A86 JUMP 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 ADD SSTORE PUSH2 0x939 DUP4 PUSH2 0x3922 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 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 0x16E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16F6 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 PUSH2 0x1710 DUP3 DUP5 ADD DUP5 PUSH2 0x54A5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1740 PUSH32 0x0 DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x39EF JUMP JUMPDEST POP DUP5 ISZERO PUSH2 0x175B JUMPI DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x175B SWAP2 SWAP1 CALLER DUP9 PUSH2 0x3A12 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x1779 JUMPI PUSH2 0x1779 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x3A12 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x178E PUSH1 0x2 DUP5 PUSH2 0x3BA2 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147D DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5E6E PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0x3BC0 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x180A 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 0x5E44 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 0x147D SWAP1 PUSH2 0x3580 JUMP JUMPDEST DUP4 PUSH2 0x1834 PUSH2 0x3377 JUMP JUMPDEST GT ISZERO PUSH2 0x1887 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5065726D69742065787069726564000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1891 PUSH2 0x14A7 JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP9 DUP9 PUSH2 0x18BD DUP2 PUSH2 0x3BCD 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 DUP11 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 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 0x1960 DUP8 PUSH2 0x1796 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x19B3 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 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D6F PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19BC DUP2 PUSH2 0x3C0C JUMP JUMPDEST ISZERO PUSH2 0x1B97 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP10 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 PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 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 0x1A86 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1A6E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AB3 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 0x1AD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AE5 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 0x1AFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1B92 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 PUSH32 0x556E617574686F72697A65640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1CC3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP8 DUP8 DUP8 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 0x1BF3 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 PUSH2 0x1C5B 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 PUSH32 0x496E76616C6964207369676E6174757265000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1CC1 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 PUSH32 0x556E617574686F72697A65640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x1CCD DUP9 DUP9 PUSH2 0x3257 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH2 0x140 ADD CALLDATALOAD DUP1 PUSH2 0x1CEC PUSH2 0x3377 JUMP JUMPDEST GT ISZERO PUSH2 0x1D3F 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1E0B SWAP1 DUP1 PUSH2 0x1D60 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x50AF 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 0x1D81 SWAP2 SWAP1 PUSH2 0x50AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D9F PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x569E JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x1DBF PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x53E6 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DD7 PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x53E6 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 0x358B JUMP JUMPDEST SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH2 0x1E7F PUSH2 0x1E2A PUSH2 0x140 DUP10 ADD PUSH2 0x120 DUP11 ADD PUSH2 0x50AF JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 DUP2 AND PUSH1 0x1 PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP8 POP DUP8 PUSH2 0x3C12 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EAA ADDRESS PUSH2 0x1E95 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x53E6 JUMP JUMPDEST PUSH2 0x1EA5 PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x53E6 JUMP JUMPDEST PUSH2 0x3477 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 0x1EDB SWAP2 SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F2B SWAP2 SWAP1 PUSH2 0x55AC JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0x1FA4 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP15 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1F56 SWAP2 SWAP1 PUSH2 0x50AF 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 0x1F77 SWAP2 SWAP1 PUSH2 0x50AF 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 0x1F98 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE PUSH2 0x3D40 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1FFC SWAP2 SWAP1 PUSH2 0x53E6 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2014 PUSH1 0xA0 DUP15 ADD PUSH1 0x80 DUP16 ADD PUSH2 0x53E6 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 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 SWAP1 POP POP DUP10 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x2223 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH32 0x0 DUP2 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 0x802 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x802 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x140 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH13 0x1000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH11 0x100000000000000000000 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 SWAP1 SWAP3 ADD SLOAD DUP1 DUP4 AND PUSH2 0x100 DUP7 ADD MSTORE DIV AND PUSH2 0x120 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 0x23C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5A4F JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0x24F4 PUSH2 0x3253 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x255A 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 PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x2567 PUSH2 0x3253 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 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x25C9 PUSH2 0x3253 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 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 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 0x2679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x268D 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 0x26A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x26B9 JUMPI PUSH2 0x26B9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x164F JUMP JUMPDEST 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 0x2730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2744 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 0x275A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x27B3 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 PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x939 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 0x281F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2833 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x939 DUP3 DUP3 PUSH2 0x3E90 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x285A 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 0x288E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x2879 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x297A JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x28AC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x28BE SWAP2 SWAP1 PUSH2 0x5BEF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28CC SWAP3 SWAP2 SWAP1 PUSH2 0x57D2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2907 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 0x290C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2958 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x2925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x293F SWAP2 SWAP1 PUSH2 0x5402 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP2 SWAP1 PUSH2 0x5971 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2965 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x2894 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2992 PUSH2 0x298C PUSH2 0x3253 JUMP JUMPDEST DUP4 PUSH2 0x32DB JUMP JUMPDEST PUSH2 0x29CD 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 0x5F03 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29D9 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3F99 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 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 0x2A47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A5B 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 0x2A71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x26B9 JUMPI PUSH2 0x26B9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2C9D JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0x2ABB JUMPI PUSH2 0x2ABB CALLER SELFBALANCE PUSH2 0x3E90 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2AC8 DUP3 PUSH2 0x3246 JUMP JUMPDEST PUSH2 0x2AD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE9DC637500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE9DC6375 SWAP1 PUSH2 0x2B38 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5932 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B64 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 0x147D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5402 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 0x2BDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BEF 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 0x2C05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x2C5E 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 PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x29D9 JUMPI PUSH2 0x29D9 DUP5 DUP4 DUP4 PUSH2 0x3FEB 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 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 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 0x16E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x2D37 CALLER DUP3 PUSH2 0x32DB JUMP JUMPDEST PUSH2 0x2D53 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5984 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D65 PUSH1 0x60 DUP7 ADD PUSH1 0x40 DUP8 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT DUP1 PUSH2 0x2D92 JUMPI POP PUSH1 0x0 PUSH2 0x2D87 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST PUSH2 0x2D9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DAE PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x50AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2DD1 JUMPI PUSH2 0x2DCC PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x50AF JUMP JUMPDEST PUSH2 0x2DD3 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0x2E69 PUSH32 0x0 DUP4 PUSH2 0x337B 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 0x3086 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0xA34123A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xA34123A7 SWAP2 PUSH2 0x2F00 SWAP2 PUSH11 0x100000000000000000000 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 0x594B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F51 SWAP2 SWAP1 PUSH2 0x56F4 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 0x2F96 SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x3477 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FB2 SWAP2 SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FDE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3002 SWAP2 SWAP1 PUSH2 0x55AC JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x303E 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 0x34D1 JUMP JUMPDEST DUP5 ADD SWAP4 POP PUSH2 0x3077 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 0x34D1 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 0x30A3 PUSH1 0x60 DUP15 ADD PUSH1 0x40 DUP16 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x30C6 JUMPI PUSH2 0x30C1 PUSH1 0x60 DUP14 ADD PUSH1 0x40 DUP15 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH2 0x30C8 JUMP JUMPDEST DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP14 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x30E5 SWAP2 SWAP1 PUSH2 0x5562 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x3108 JUMPI PUSH2 0x3103 PUSH1 0x80 DUP15 ADD PUSH1 0x60 DUP16 ADD PUSH2 0x5562 JUMP JUMPDEST PUSH2 0x310A JUMP JUMPDEST DUP4 JUMPDEST PUSH1 0x1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0x4F1EB3D800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0x4F1EB3D8 SWAP2 PUSH2 0x317D SWAP2 DUP13 SWAP2 PUSH11 0x100000000000000000000 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 0x5839 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31CE SWAP2 SWAP1 PUSH2 0x557E JUMP JUMPDEST PUSH1 0x4 DUP10 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xD94 SWAP1 DUP12 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH2 0x5876 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147D PUSH1 0x2 DUP4 PUSH2 0x417B JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x32A2 DUP3 PUSH2 0x1796 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 0x32E6 DUP3 PUSH2 0x3246 JUMP JUMPDEST PUSH2 0x3321 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 0x5DE0 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x332C DUP4 PUSH2 0x1796 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 0x3367 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x335C DUP5 PUSH2 0x80C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x10AF JUMPI POP PUSH2 0x10AF DUP2 DUP6 PUSH2 0x2C6F JUMP JUMPDEST TIMESTAMP SWAP1 JUMP 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 0x33A3 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 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 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 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3507 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x34FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x34CA JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147D DUP3 PUSH2 0x4187 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 0x35FD PUSH32 0x0 DUP3 PUSH2 0x337B 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 0x363A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x364E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3672 SWAP2 SWAP1 PUSH2 0x560D JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x3689 DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x418B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x369A DUP10 PUSH1 0xA0 ADD MLOAD PUSH2 0x418B JUMP JUMPDEST SWAP1 POP PUSH2 0x36B1 DUP4 DUP4 DUP4 DUP13 PUSH1 0xC0 ADD MLOAD DUP14 PUSH1 0xE0 ADD MLOAD PUSH2 0x44D9 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 0x3703 SWAP2 SWAP1 PUSH2 0x5ABD 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 0x3732 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x57F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x374B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x375F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3783 SWAP2 SWAP1 PUSH2 0x56F4 JUMP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP DUP5 LT DUP1 ISZERO SWAP1 PUSH2 0x37A2 JUMPI POP DUP6 PUSH2 0x120 ADD MLOAD DUP4 LT ISZERO JUMPDEST PUSH2 0x37BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x833 SWAP1 PUSH2 0x5A18 JUMP JUMPDEST POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x37D9 DUP3 PUSH2 0x1796 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x381E 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 0x5EB9 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 0x3863 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 0x5D96 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x386E DUP4 DUP4 DUP4 PUSH2 0x939 JUMP JUMPDEST PUSH2 0x3879 PUSH1 0x0 DUP3 PUSH2 0x3257 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 0x389B SWAP1 DUP3 PUSH2 0x459D 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 0x38BE SWAP1 DUP3 PUSH2 0x45A9 JUMP JUMPDEST POP PUSH2 0x38CB PUSH1 0x2 DUP3 DUP5 PUSH2 0x45B5 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 0x147A DUP4 DUP4 PUSH2 0x45CB JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x392D DUP3 PUSH2 0x1796 JUMP JUMPDEST SWAP1 POP PUSH2 0x393B DUP2 PUSH1 0x0 DUP5 PUSH2 0x939 JUMP JUMPDEST PUSH2 0x3946 PUSH1 0x0 DUP4 PUSH2 0x3257 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 0x3984 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3984 SWAP2 PUSH2 0x501F 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 0x39A6 SWAP1 DUP4 PUSH2 0x459D JUMP JUMPDEST POP PUSH2 0x39B2 PUSH1 0x2 DUP4 PUSH2 0x462F JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39FB DUP4 DUP4 PUSH2 0x337B JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x147D 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 0x3A53 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x3B75 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 0x3AB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AC7 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 0x3B43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B57 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 0x3B6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29D9 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x3B96 JUMPI PUSH2 0x3B91 DUP5 DUP4 DUP4 PUSH2 0x3FEB JUMP JUMPDEST PUSH2 0x29D9 JUMP JUMPDEST PUSH2 0x29D9 DUP5 DUP5 DUP5 DUP5 PUSH2 0x463B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x3BB1 DUP7 DUP7 PUSH2 0x47D3 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10AF DUP5 DUP5 DUP5 PUSH2 0x484E JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3C6D 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 0x3C76 DUP2 PUSH2 0x3246 JUMP JUMPDEST ISZERO PUSH2 0x3CC8 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 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3CD4 PUSH1 0x0 DUP4 DUP4 PUSH2 0x939 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 0x3CF6 SWAP1 DUP3 PUSH2 0x45A9 JUMP JUMPDEST POP PUSH2 0x3D03 PUSH1 0x2 DUP3 DUP5 PUSH2 0x45B5 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x147D JUMPI POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH10 0xFFFFFFFFFFFFFFFFFFFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP5 DIV DUP3 AND DUP4 DUP2 ADD SWAP1 SWAP3 AND MUL PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000 AND DUP7 OR SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD SWAP1 DUP6 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 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 PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 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 0x3EDC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3EBD 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 0x3F3E 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 0x3F43 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x939 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 PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FA4 DUP5 DUP5 DUP5 PUSH2 0x37C6 JUMP JUMPDEST PUSH2 0x3FB0 DUP5 DUP5 DUP5 DUP5 PUSH2 0x4918 JUMP JUMPDEST PUSH2 0x29D9 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 0x5D3D 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 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 0x4095 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4076 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 0x40F7 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 0x40FC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x412A JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x412A JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1779 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 PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x147A DUP4 DUP4 PUSH2 0x4AF4 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x41A2 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x41AA JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x4204 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 PUSH32 0x5400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x4218 JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x422A JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x425E JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x427D JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x429C JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x42BB JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x42DA JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x42F9 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x4318 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x4338 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x4358 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x4378 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x4398 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x43B8 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x43D8 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x43F8 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x4418 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x4439 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x4459 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x4478 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x4495 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x44B0 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x44AC JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x44C4 JUMPI PUSH1 0x1 PUSH2 0x44C7 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 0x44F9 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 0x4524 JUMPI PUSH2 0x451D DUP6 DUP6 DUP6 PUSH2 0x4B0C JUMP JUMPDEST SWAP1 POP PUSH2 0x4594 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 0x4586 JUMPI PUSH1 0x0 PUSH2 0x454B DUP8 DUP7 DUP7 PUSH2 0x4B0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x455A DUP8 DUP10 DUP7 PUSH2 0x4B78 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 0x457B JUMPI DUP1 PUSH2 0x457D JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x4594 JUMP JUMPDEST PUSH2 0x4591 DUP6 DUP6 DUP5 PUSH2 0x4B78 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147A DUP4 DUP4 PUSH2 0x4BBE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147A DUP4 DUP4 PUSH2 0x4C84 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10AF DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x4CCE JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x460D 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 0x5D1B 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 0x461C 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 0x147A DUP4 DUP4 PUSH2 0x4D65 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 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 0x46ED JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x46CE 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 0x474F 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 0x4754 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4782 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4782 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x477F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x26B9 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 PUSH32 0x5354460000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x4817 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 0x5E97 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 0x4828 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 0x48E9 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 0x48AE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4896 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x48DB 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 0x48FC 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 0x492C DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C0C JUMP JUMPDEST PUSH2 0x4938 JUMPI POP PUSH1 0x1 PUSH2 0x10AF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A89 PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x4966 PUSH2 0x3253 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 0x49CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x49B5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x49FA 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x5D3D PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x4E39 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 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 0x4B2C JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x4B58 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH13 0x1000000000000000000000000 PUSH2 0x34D1 JUMP JUMPDEST SWAP1 POP PUSH2 0x4594 PUSH2 0x4B73 DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x34D1 JUMP JUMPDEST PUSH2 0x4E48 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 0x4B98 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x10AF PUSH2 0x4B73 DUP4 PUSH13 0x1000000000000000000000000 DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x34D1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4C7A JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4BF1 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 0x4C0E 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 0x4C3E 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 0x147D JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x147D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C90 DUP4 DUP4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0x4CC6 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 0x147D JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x147D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x4D33 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 0x34CA JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x4D46 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 0x34CA JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4C7A JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4D98 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 0x4DB8 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 0x4DF7 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 0x147D SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x10AF DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x4E5E JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4E9F 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 0x5DBA PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4EA8 DUP6 PUSH2 0x3C0C JUMP JUMPDEST PUSH2 0x4EF9 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 0x4F37 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4F18 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 0x4F99 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 0x4F9E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4FAE DUP3 DUP3 DUP7 PUSH2 0x4FB9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x4FC8 JUMPI POP DUP2 PUSH2 0x34CA JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x4FD8 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 0x48AE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4896 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 0x5045 JUMPI POP PUSH2 0x5063 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5063 SWAP2 SWAP1 PUSH2 0x5066 JUMP JUMPDEST POP JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x507B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5067 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x771 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50C0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34CA DUP2 PUSH2 0x5CC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x50DD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x50E8 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x50F8 DUP2 PUSH2 0x5CC4 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 0x5118 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5123 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x5133 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP3 POP PUSH2 0x5141 PUSH1 0x40 DUP7 ADD PUSH2 0x509C JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x5151 DUP2 PUSH2 0x5CC4 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 0x5170 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x517B DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x518B DUP2 PUSH2 0x5CC4 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 0x51B1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x51BC DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x51CC DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51EE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x51FE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x5211 PUSH2 0x520C DUP3 PUSH2 0x5C76 JUMP JUMPDEST PUSH2 0x5C52 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x5225 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 0x5255 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5260 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x50F8 DUP2 PUSH2 0x5CD9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5282 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x528D DUP2 PUSH2 0x5CC4 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 0x52AF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x52BA DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x52D1 DUP2 PUSH2 0x5CC4 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 0x52F4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x52FF DUP2 PUSH2 0x5CC4 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x531D DUP2 PUSH2 0x5D0B 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 0x5349 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5360 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5373 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5381 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x5394 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 0x53B7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x34CA JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53F7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34CA DUP2 PUSH2 0x5CE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5413 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5429 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x5439 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5447 PUSH2 0x520C DUP3 PUSH2 0x5C76 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x545B JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x4594 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5C98 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x547D JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x547D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x547D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x54B7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x54D5 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE PUSH1 0x60 DUP5 SLT ISZERO PUSH2 0x54E6 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP4 POP DUP2 DUP5 LT DUP2 DUP6 GT OR ISZERO PUSH2 0x54FA JUMPI INVALID JUMPDEST POP DUP3 PUSH1 0x40 MSTORE DUP5 CALLDATALOAD SWAP3 POP PUSH2 0x550C DUP4 PUSH2 0x5CC4 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 PUSH2 0x551E DUP4 PUSH2 0x5CC4 JUMP JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x5530 PUSH1 0x40 DUP7 ADD PUSH2 0x509C JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x5543 PUSH1 0x60 DUP6 ADD PUSH2 0x507F 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 0x547D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5573 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34CA DUP2 PUSH2 0x5CF6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5590 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x559B DUP2 PUSH2 0x5CF6 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x50F8 DUP2 PUSH2 0x5CF6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x55C3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x55CE DUP2 PUSH2 0x5CF6 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 0x55EE DUP2 PUSH2 0x5CF6 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x55FF DUP2 PUSH2 0x5CF6 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 0x5627 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x5632 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH2 0x5643 DUP2 PUSH2 0x5CE7 JUMP JUMPDEST SWAP6 POP PUSH2 0x5651 PUSH1 0x40 DUP10 ADD PUSH2 0x508A JUMP JUMPDEST SWAP5 POP PUSH2 0x565F PUSH1 0x60 DUP10 ADD PUSH2 0x508A JUMP JUMPDEST SWAP4 POP PUSH2 0x566D PUSH1 0x80 DUP10 ADD PUSH2 0x508A JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH2 0x567D DUP2 PUSH2 0x5D0B JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x568E DUP2 PUSH2 0x5CD9 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 0x56AF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x147A DUP3 PUSH2 0x509C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56C9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x56E2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x50F8 DUP2 PUSH2 0x5CC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5706 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 0x572C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5751 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5764 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5772 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5783 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 0x57AA DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5C98 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 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x2 SIGNEXTEND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x4FAE PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x5792 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 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 0x5911 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x58FF DUP6 DUP4 MLOAD PUSH2 0x5792 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x58C5 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 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 0x147A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5792 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F7420617070726F7665640000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x507269636520736C69707061676520636865636B000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420746F6B656E20494400000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F7420636C6561726564000000000000000000000000000000000000000000 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 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x5BA7 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x57BE JUMP JUMPDEST PUSH2 0x5BB4 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x57C5 JUMP JUMPDEST DUP6 PUSH2 0x100 DUP4 ADD MSTORE DUP5 PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x5BD0 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x57C5 JUMP JUMPDEST PUSH2 0x5BDE PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x57C5 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5C23 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5C3D JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3BB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5C6E JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5C8A 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 0x5CB3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C9B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x29D9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x5063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x5063 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 POP PUSH6 0x726D69743A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 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 0x73206E6F74206F776E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA164736F6C PUSH4 0x43000706 STOP EXP ","sourceMap":"1019:14154:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;438:10:34;-1:-1:-1;;;;;452:4:34;438:18;;430:39;;;;;-1:-1:-1;;;430:39:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;1019:14154:28;;;;;948:148:14;;;;;;;;;;-1:-1:-1;948:148:14;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4502:98:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14642:230:28:-;;;;;;;;;;-1:-1:-1;14642:230:28;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6751:395:18:-;;;;;;;;;;-1:-1:-1;6751:395:18;;;;;:::i;:::-;;:::i;9066:2150:28:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;572:709:36:-;;;;;;:::i;:::-;;:::i;6245:208:18:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6986:2026:28:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;8071:300:18:-;;;;;;;;;;-1:-1:-1;8071:300:18;;;;;:::i;:::-;;:::i;6014:160::-;;;;;;;;;;-1:-1:-1;6014:160:18;;;;;:::i;:::-;;:::i;1932:125:30:-;;;;;;;;;;;;;:::i;1264:512::-;;;;;;;;;;;;;:::i;8437:149:18:-;;;;;;;;;;-1:-1:-1;8437:149:18;;;;;:::i;:::-;;:::i;14132:326:28:-;;;;;;:::i;:::-;;:::i;1325:289:37:-;;;;;;:::i;:::-;;:::i;1048:463:31:-;;;;;;;;;;-1:-1:-1;1048:463:31;;;;;:::i;:::-;;:::i;6525:169:18:-;;;;;;;;;;-1:-1:-1;6525:169:18;;;;;:::i;:::-;;:::i;4265:175::-;;;;;;;;;;-1:-1:-1;4265:175:18;;;;;:::i;:::-;;:::i;6866:66:28:-;;;;;;;;;;;;;:::i;3990:218:18:-;;;;;;;;;;-1:-1:-1;3990:218:18;;;;;:::i;:::-;;:::i;2098:1074:30:-;;;;;;:::i;:::-;;:::i;4586:1817:28:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;420:38:33:-;;;;;;;;;;;;;:::i;4664:102:18:-;;;;;;;;;;;;;:::i;3073:1138:28:-;;;;;;;;;;-1:-1:-1;3073:1138:28;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;7491:290:18:-;;;;;;;;;;-1:-1:-1;7491:290:18;;;;;:::i;:::-;;:::i;1652:348:37:-;;;;;;:::i;:::-;;:::i;521:386:34:-;;;;;;:::i;:::-;;:::i;308:653:32:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8652:282:18:-;;;;;;;;;;-1:-1:-1;8652:282:18;;;;;:::i;:::-;;:::i;973:314:37:-;;;;;;:::i;:::-;;:::i;328:41:33:-;;;;;;;;;;;;;:::i;1362:160:34:-;;;:::i;6554:241:28:-;;;;;;;;;;-1:-1:-1;6554:241:28;;;;;:::i;:::-;;:::i;952:365:34:-;;;;;;:::i;:::-;;:::i;7847:162:18:-;;;;;;;;;;-1:-1:-1;7847:162:18;;;;;:::i;:::-;;:::i;662:273:37:-;;;;;;:::i;:::-;;:::i;11270:2808:28:-;;;;;;:::i;:::-;;:::i;948:148:14:-;1056:33;;;1033:4;1056:33;;;;;;;;;;;;;948:148;;;;:::o;4502:98:18:-;4588:5;4581:12;;;;;;;;-1:-1:-1;;4581:12:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4556:13;;4581:12;;4588:5;;4581:12;;4588:5;4581:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4502:98;:::o;14642:230:28:-;14727:7;14754:16;14762:7;14754;:16::i;:::-;14746:73;;;;-1:-1:-1;;;14746:73:28;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;14837:19:28;;;;:10;:19;;;;;:28;;;;-1:-1:-1;;;;;14837:28:28;;14642:230::o;6751:395:18:-;6831:13;6847:23;6862:7;6847:14;:23::i;:::-;6831:39;;6894:5;-1:-1:-1;;;;;6888:11:18;:2;-1:-1:-1;;;;;6888:11:18;;;6880:57;;;;-1:-1:-1;;;6880:57:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6972:5;-1:-1:-1;;;;;6956:21:18;:12;:10;:12::i;:::-;-1:-1:-1;;;;;6956:21:18;;:69;;;;6981:44;7005:5;7012:12;:10;:12::i;6981:44::-;6948:159;;;;-1:-1:-1;;;6948:159:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7118:21;7127:2;7131:7;7118:8;:21::i;:::-;6751:395;;;:::o;9066:2150:28:-;9299:15;;9227:14;;6474:39;6493:10;9227:14;6474:18;:39::i;:::-;6466:64;;;;-1:-1:-1;;;6466:64:28;;;;;;;:::i;:::-;9265:6:::1;:15;;;244:8:35;223:17;:15;:17::i;:::-;:29;;215:61;;;::::0;;-1:-1:-1;;;215:61:35;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;9374:1:28::2;9355:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;9355:20:28::2;;9347:29;;;::::0;::::2;;9425:14:::0;::::2;9386:25;9414:26:::0;;;:10:::2;:26;::::0;;;;;;;;9479:18:::2;::::0;::::2;::::0;9414:26;;-1:-1:-1;;;9479:18:28;;::::2;-1:-1:-1::0;;;;;9479:18:28::2;::::0;9536:16:::2;::::0;;;;;::::2;;:::i;:::-;-1:-1:-1::0;;;;;9515:37:28::2;:17;-1:-1:-1::0;;;;;9515:37:28::2;;;9507:46;;;::::0;::::2;;9618:15;::::0;;::::2;::::0;::::2;;9564:34;9601:33:::0;;;:16:::2;:33;::::0;;;;;;;9564:70;;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;;;9564:70:28;;::::2;::::0;;;;;::::2;::::0;;;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;;;9564:70:28;;::::2;;;::::0;;;;9677:44:::2;9704:7;9564:70:::0;9677:26:::2;:44::i;:::-;9763:18;::::0;::::2;::::0;9644:78;;-1:-1:-1;;;;;;9753:9:28;::::2;::::0;::::2;::::0;9763:18;;::::2;;::::0;;::::2;::::0;-1:-1:-1;;;9783:18:28;::::2;::::0;::::2;9803:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;9753:67;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9732:88:::0;;-1:-1:-1;9732:88:28;-1:-1:-1;9850:17:28::2;::::0;::::2;;9839:28:::0;::::2;::::0;::::2;::::0;:60:::2;;;9882:6;:17;;;9871:7;:28;;9839:60;9831:93;;;;-1:-1:-1::0;;;9831:93:28::2;;;;;;;:::i;:::-;9992:18;::::0;::::2;::::0;9935:19:::2;::::0;9957:74:::2;::::0;9985:4:::2;::::0;9992:18;;::::2;;::::0;;::::2;::::0;-1:-1:-1;;;10012:18:28;::::2;::::0;::::2;9957:19;:74::i;:::-;9935:96;;10102:32;10136::::0;10176:4:::2;-1:-1:-1::0;;;;;10176:14:28::2;;10191:11;10176:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10099:104;;;;;;;10306:194;10370:8;:33;;;10343:24;:60;10425:17;-1:-1:-1::0;;;;;10306:194:28::2;-1:-1:-1::0;;;10306:15:28::2;:194::i;:::-;10214:20;::::0;::::2;:300:::0;;-1:-1:-1;;10214:300:28;::::2;10250:264:::0;;::::2;-1:-1:-1::0;;;;;10214:300:28;;::::2;;::::0;::::2;::::0;;;::::2;::::0;;10680:33:::2;::::0;::::2;::::0;10616:194:::2;::::0;10653:60;;::::2;::::0;10616:194;::::2;-1:-1:-1::0;;;10616:15:28::2;:194::i;:::-;10524:20;::::0;::::2;:300:::0;;-1:-1:-1;;;;;10524:300:28;;::::2;10560:264:::0;;::::2;-1:-1:-1::0;;;10524:300:28;;;::::2;::::0;::::2;;;;::::0;;;::::2;::::0;;10835:33:::2;::::0;::::2;:60:::0;;;10905:33:::2;::::0;::::2;:60:::0;;;11108:16:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;11088:17;:36;11067:8;:18;;;:57;;;;;-1:-1:-1::0;;;;;11067:57:28::2;;;;;-1:-1:-1::0;;;;;11067:57:28::2;;;;;;11158:6;:14;;;11140:69;11174:6;:16;;;;;;;;;;:::i;:::-;11192:7;11201;11140:69;;;;;;;;:::i;:::-;;;;;;;;286:1:35;;;;;;;6540::28::1;9066:2150:::0;;;;:::o;572:709:36:-;755:12;796:6;-1:-1:-1;;;;;787:15:36;:6;-1:-1:-1;;;;;787:15:36;;779:24;;;;;;836:7;-1:-1:-1;;;;;820:32:36;;853:6;861;869:3;820:53;;;;;;;;;;;;;-1:-1:-1;;;;;820:53:36;;;;;;-1:-1:-1;;;;;820:53:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;820:53:36;;-1:-1:-1;;;;;;888:18:36;;884:391;;945:7;-1:-1:-1;;;;;929:35:36;;965:6;973;981:3;929:56;;;;;;;;;;;;;-1:-1:-1;;;;;929:56:36;;;;;;-1:-1:-1;;;;;929:56:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:56:36;999:43;;;;;;-1:-1:-1;;;;;999:43:36;;;;;;;;;929:56;;-1:-1:-1;999:29:36;;;;;;:43;;;;;-1:-1:-1;;999:43:36;;;;;;;;-1:-1:-1;999:29:36;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;884:391;;;1074:28;1131:4;-1:-1:-1;;;;;1118:24:36;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1118:26:36;;-1:-1:-1;;;;;;1162:25:36;;1158:107;;1220:4;-1:-1:-1;;;;;1207:29:36;;1237:12;1207:43;;;;;;;;;;;;;-1:-1:-1;;;;;1207:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:107;884:391;;572:709;;;;;;:::o;6245:208:18:-;6306:7;6425:21;:12;:19;:21::i;:::-;6418:28;;6245:208;:::o;6986:2026:28:-;7174:17;7193:15;7210;7140:6;:15;;;244:8:35;223:17;:15;:17::i;:::-;:29;;215:61;;;;;-1:-1:-1;;;215:61:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;7280:14:28;::::1;7241:25;7269:26:::0;;;:10:::1;:26;::::0;;;;;;;7360:15:::1;::::0;;::::1;::::0;::::1;::::0;::::1;7343:33:::0;;:16:::1;:33:::0;;;;;7306:70;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;7306:70:28;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;7306:70:28;;::::1;::::0;::::1;::::0;;;;;;7478:488;;::::1;::::0;::::1;::::0;;7523:14;;7478:488;::::1;::::0;;7563:14;;7478:488;;::::1;::::0;;::::1;::::0;7600:11;;7478:488:::1;::::0;;;;7946:4:::1;7478:488:::0;;;;7640:18;;::::1;;::::0;;::::1;7478:488:::0;::::1;::::0;;;;;;;;-1:-1:-1;;;7687:18:28;;::::1;::::0;::::1;7478:488:::0;::::1;::::0;;;;7739:21;;::::1;;7478:488:::0;;;;7794:21;;::::1;;7478:488:::0;;;;7845:17;;::::1;;7360:15;7478:488:::0;;;7892:17;::::1;;7478:488:::0;;;;7269:26;7241:25;7452:524:::1;::::0;:12:::1;:524::i;:::-;8044:18;::::0;::::1;::::0;7414:562;;-1:-1:-1;7414:562:28;;-1:-1:-1;7414:562:28;-1:-1:-1;7414:562:28;-1:-1:-1;7987:19:28::1;::::0;8009:74:::1;::::0;8037:4:::1;::::0;8044:18;;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;8064:18:28;::::1;::::0;::::1;8009:19;:74::i;:::-;7987:96;;8155:32;8189::::0;8229:4:::1;-1:-1:-1::0;;;;;8229:14:28::1;;8244:11;8229:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8152:104;;;;;;;8312:179;8372:8;:33;;;8345:24;:60;8423:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;8423:18:28::1;-1:-1:-1::0;;;;;8312:179:28::1;-1:-1:-1::0;;;8312:15:28::1;:179::i;:::-;8267:20;::::0;::::1;:234:::0;;-1:-1:-1;;;;;8267:234:28;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;8267:234:28;;::::1;;::::0;;8616:33:::1;::::0;::::1;::::0;8267:234;8667:18;::::1;::::0;8556:179:::1;::::0;8589:60;;::::1;::::0;-1:-1:-1;;;8667:18:28;;;::::1;;::::0;8556:15:::1;:179::i;:::-;8511:20;::::0;::::1;:234:::0;;-1:-1:-1;;;;;;;;8511:234:28;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;8756:33:::1;::::0;::::1;:60:::0;;;8826:33:::1;::::0;::::1;:60:::0;;;-1:-1:-1;8896:18:28;::::1;:31:::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;8943:62:::1;::::0;8961:14;::::1;::::0;8943:62:::1;::::0;::::1;::::0;8918:9;;8988:7;;8997;;8943:62:::1;:::i;:::-;;;;;;;;286:1:35;;;;;;6986:2026:28::0;;;;;;:::o;8071:300:18:-;8230:41;8249:12;:10;:12::i;:::-;8263:7;8230:18;:41::i;:::-;8222:103;;;;-1:-1:-1;;;8222:103:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8336:28;8346:4;8352:2;8356:7;8336:9;:28::i;6014:160::-;-1:-1:-1;;;;;6137:20:18;;6111:7;6137:20;;;:13;:20;;;;;:30;;6161:5;6137:23;:30::i;:::-;6130:37;;6014:160;;;;;:::o;1932:125:30:-;1991:66;1932:125;:::o;1264:512::-;1322:7;1538:66;1626:8;1656:11;1689:13;:11;:13::i;:::-;1732:4;1387:368;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1387:368:30;;;;;;;;;;;;;;;;;;;;;;;;1360:409;;;;;;1341:428;;1264:512;:::o;8437:149:18:-;8540:39;8557:4;8563:2;8567:7;8540:39;;;;;;;;;;;;:16;:39::i;14132:326:28:-;14210:7;6474:39;6493:10;6505:7;6474:18;:39::i;:::-;6466:64;;;;-1:-1:-1;;;6466:64:28;;;;;;;:::i;:::-;14229:25:::1;14257:19:::0;;;:10:::1;:19;::::0;;;;14294:18:::1;::::0;::::1;::::0;-1:-1:-1;;;14294:18:28;::::1;-1:-1:-1::0;;;;;14294:18:28::1;:23:::0;:52;::::1;;;-1:-1:-1::0;14321:20:28::1;::::0;::::1;::::0;-1:-1:-1;;;;;14321:20:28::1;:25:::0;14294:52:::1;:81;;;;-1:-1:-1::0;14350:20:28::1;::::0;::::1;::::0;-1:-1:-1;;;14350:20:28;::::1;-1:-1:-1::0;;;;;14350:20:28::1;:25:::0;14294:81:::1;14286:105;;;;-1:-1:-1::0;;;14286:105:28::1;;;;;;;:::i;:::-;14408:19;::::0;;;:10:::1;:19;::::0;;;;14401:26;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;14437:14:::1;14419:7:::0;14437:5:::1;:14::i;1325:289:37:-:0;1517:90;;;;;;1551:10;1517:90;;;;1571:4;1517:90;;;;;;;;;;;;;;;;1593:4;1517:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1517:33:37;;;;;:90;;;;;-1:-1:-1;;1517:90:37;;;;;;;-1:-1:-1;1517:33:37;:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1325:289;;;;;;:::o;1048:463:31:-;1168:31;1202:36;;;;1213:4;1202:36;:::i;:::-;1168:70;;1248:59;1282:7;1291;:15;;;1248:33;:59::i;:::-;-1:-1:-1;1322:15:31;;1318:88;;1343:15;;:22;1367:13;;;;1339:67;;1343:22;1382:10;1394:11;1339:3;:67::i;:::-;1420:15;;1416:88;;1437:67;1441:7;:15;;;:22;;;1465:7;:13;;;1480:10;1492:11;1437:3;:67::i;:::-;1048:463;;;;;:::o;6525:169:18:-;6600:7;;6641:22;:12;6657:5;6641:15;:22::i;:::-;-1:-1:-1;6619:44:18;6525:169;-1:-1:-1;;;6525:169:18:o;4265:175::-;4337:7;4363:70;4380:7;4363:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;6866:66:28:-;6915:13;6866:66;:::o;3990:218:18:-;4062:7;-1:-1:-1;;;;;4089:19:18;;4081:74;;;;-1:-1:-1;;;4081:74:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4172:20:18;;;;;;:13;:20;;;;;:29;;:27;:29::i;2098:1074:30:-;2316:8;2295:17;:15;:17::i;:::-;:29;;2287:56;;;;;-1:-1:-1;;;2287:56:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2354:14;2456:18;:16;:18::i;:::-;1991:66;2530:7;2539;2548:30;2539:7;2548:21;:30::i;:::-;2502:87;;;;;;;;;;;-1:-1:-1;;;;;2502:87:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2492:98;;;;;;2394:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2371:243;;;;;;-1:-1:-1;;2640:16:30;2648:7;2640;:16::i;:::-;2624:32;;2685:5;-1:-1:-1;;;;;2674:16:30;:7;-1:-1:-1;;;;;2674:16:30;;;2666:68;;;;-1:-1:-1;;;2666:68:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2749:25;2768:5;2749:18;:25::i;:::-;2745:384;;;2839:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2798:67;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2798:32:30;;;;;2831:6;;2798:67;;;;;;;;;;;;;-1:-1:-1;2798:67:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2798:67:30;:81;;;;2790:106;;;;;-1:-1:-1;;;2790:106:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2745:384;;;2927:24;2954:26;2964:6;2972:1;2975;2978;2954:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2954:26:30;;-1:-1:-1;;2954:26:30;;;-1:-1:-1;;;;;;;3002:30:30;;2994:60;;;;;-1:-1:-1;;;2994:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;3096:5;-1:-1:-1;;;;;3076:25:30;:16;-1:-1:-1;;;;;3076:25:30;;3068:50;;;;;-1:-1:-1;;;3068:50:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2745:384;;3139:26;3148:7;3157;3139:8;:26::i;:::-;2098:1074;;;;;;;;:::o;4586:1817:28:-;4748:15;4765:17;4784:15;4801;4714:6;:15;;;244:8:35;223:17;:15;:17::i;:::-;:29;;215:61;;;;;-1:-1:-1;;;215:61:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;4923:481:28::1;::::0;;::::1;::::0;::::1;::::0;;;4832:17:::1;::::0;4897:517:::1;::::0;4923:481;4968:13:::1;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;-1:-1:-1::0;;;;;4923:481:28::1;;;;;5007:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;4923:481:28::1;::::0;;::::1;;5043:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4923:481;;::::0;;5090:4:::1;4923:481;::::0;::::1;::::0;;;5124:16:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;4923:481;;::::0;;::::1;;5169:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;4923:481;;;;;;5219:6;:21;;;4923:481;;;;5274:6;:21;;;4923:481;;;;5325:6;:17;;;4923:481;;;;5372:6;:17;;;4923:481;;::::0;4897:12:::1;:517::i;:::-;4859:555:::0;;-1:-1:-1;4859:555:28;;-1:-1:-1;4859:555:28;-1:-1:-1;4859:555:28;-1:-1:-1;5425:46:28::1;5431:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;5460:7;:9:::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;-1:-1:-1;5460:9:28;5425:5:::1;:46::i;:::-;5482:19;5504:70;5532:4;5539:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;5557;::::0;;;::::1;::::0;::::1;;:::i;:::-;5504:19;:70::i;:::-;5482:92;;5587:32;5621::::0;5661:4:::1;-1:-1:-1::0;;;;;5661:14:28::1;;5676:11;5661:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5584:104;;;;;;;5725:13;5741:147;5775:4;5794:84;;;;;;;;5823:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5794:84:28::1;;;;;5846:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5794:84:28::1;;;;;5866:6;:10;;;;;;;;;;:::i;:::-;5794:84;;::::0;;5741:12:::1;:147::i;:::-;5725:163;;5921:404;;;;;;;;5951:1;5921:404;;;;;;5984:1;-1:-1:-1::0;;;;;5921:404:28::1;;;;;6008:6;5921:404;;;;;;6039:6;:16;;;;;;;;;;:::i;:::-;5921:404;;::::0;;::::1;;6080:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;5921:404;;;;;;6121:9;-1:-1:-1::0;;;;;5921:404:28::1;;;;;6170:24;5921:404;;;;6234:24;5921:404;;;;6285:1;-1:-1:-1::0;;;;;5921:404:28::1;;;;;6313:1;-1:-1:-1::0;;;;;5921:404:28::1;;;::::0;5899:10:::1;:19;5910:7;5899:19;;;;;;;;;;;:426;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;;;;;6359:7;6341:55;6368:9;6379:7;6388;6341:55;;;;;;;;:::i;:::-;;;;;;;;286:1:35;;;;;4586:1817:28::0;;;;;;:::o;420:38:33:-;;;:::o;4664:102:18:-;4752:7;4745:14;;;;;;;;-1:-1:-1;;4745:14:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:13;;4745:14;;4752:7;;4745:14;;4752:7;4745:14;;;;;;;;;;;;;;;;;;;;;;;;3073:1138:28;3200:12;3621:19;;;:10;:19;;;;;;;;3594:46;;;;;;;;;;;;;;-1:-1:-1;;;;;3594:46:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3594:46:28;;;;;;;;;;;;-1:-1:-1;;;;;;;;3594:46:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3200:12;;;;;;;;;;;;;;;;;;;;;;3594:46;3650:49;;;;-1:-1:-1;;;3650:49:28;;;;;;;:::i;:::-;3709:34;3746:16;:33;3763:8;:15;;;3746:33;;;;;;;;;;;;;;;3709:70;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3709:70:28;-1:-1:-1;;;;;3709:70:28;-1:-1:-1;;;;;3709:70:28;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3709:70:28;-1:-1:-1;;;;;3709:70:28;-1:-1:-1;;;;;3709:70:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;3810:8;:14;;;3838:8;:17;;;3869:7;:14;;;3897:7;:14;;;3925:7;:11;;;3950:8;:18;;;3982:8;:18;;;4014:8;:18;;;4046:8;:33;;;4093:8;:33;;;4140:8;:20;;;4174:8;:20;;;3789:415;;;;;;;;;;;;;;;;;;;;;;;;;;3073:1138;;;;;;;;;;;;;:::o;7491:290:18:-;7605:12;:10;:12::i;:::-;-1:-1:-1;;;;;7593:24:18;:8;-1:-1:-1;;;;;7593:24:18;;;7585:62;;;;;-1:-1:-1;;;7585:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;7703:8;7658:18;:32;7677:12;:10;:12::i;:::-;-1:-1:-1;;;;;7658:32:18;;;;;;;;;;;;;;;;;-1:-1:-1;7658:32:18;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;;7741:12;:10;:12::i;:::-;-1:-1:-1;;;;;7726:48:18;;7765:8;7726:48;;;;;;;;;;;;;;;;;;;;7491:290;;:::o;1652:348:37:-;1861:50;;;;;;1885:10;1861:50;;;;1905:4;1861:50;;;;;;-1:-1:-1;;1914:17:37;-1:-1:-1;;;;;1861:23:37;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1861:50:37;:70;1857:136;;;1945:48;1963:5;1970;1977:6;1985:1;1988;1991;1945:17;:48::i;:::-;1652:348;;;;;;:::o;521:386:34:-;617:19;645:4;-1:-1:-1;;;;;639:21:34;;669:4;639:36;;;;;;;;;;;;;-1:-1:-1;;;;;639:36:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:36:34;;-1:-1:-1;693:28:34;;;;685:58;;;;;-1:-1:-1;;;685:58:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;758:15;;754:147;;795:4;-1:-1:-1;;;;;789:20:34;;810:11;789:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:54;867:9;878:11;836:30;:54::i;308:653:32:-;383:22;439:4;427:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;417:34;;466:9;461:494;481:15;;;461:494;;;518:12;;563:4;582;;587:1;582:7;;;;;;;;;;;;;;;;;;:::i;:::-;555:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:73;;;;610:7;605:306;;737:2;721:6;:13;:18;717:32;;;741:8;;;717:32;820:4;812:6;808:17;798:27;;878:6;867:28;;;;;;;;;;;;:::i;:::-;860:36;;-1:-1:-1;;;860:36:32;;;;;;;;:::i;605:306::-;938:6;925:7;933:1;925:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;498:3:32;;461:494;;;;308:653;;;;:::o;8652:282:18:-;8783:41;8802:12;:10;:12::i;:::-;8816:7;8783:18;:41::i;:::-;8775:103;;;;-1:-1:-1;;;8775:103:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8888:39;8902:4;8908:2;8912:7;8921:5;8888:13;:39::i;:::-;8652:282;;;;:::o;973:314:37:-;1177:50;;;;;;1201:10;1177:50;;;;1221:4;1177:50;;;;;;1230:5;;-1:-1:-1;;;;;1177:23:37;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1177:50:37;:58;1173:107;;;1237:43;1248:5;1255;1262:8;1272:1;1275;1278;1237:10;:43::i;328:41:33:-;;;:::o;1362:160:34:-;1423:21;:25;1419:96;;1450:65;1481:10;1493:21;1450:30;:65::i;:::-;1362:160::o;6554:241:28:-;6644:13;6677:16;6685:7;6677;:16::i;:::-;6669:25;;;;;;6711:77;;;;;-1:-1:-1;;;;;6747:16:28;6711:62;;;;:77;;6774:4;;6780:7;;6711:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6711:77:28;;;;;;;;;;;;:::i;952:365:34:-;1063:20;1093:5;-1:-1:-1;;;;;1086:23:34;;1118:4;1086:38;;;;;;;;;;;;;-1:-1:-1;;;;;1086:38:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1086:38:34;;-1:-1:-1;1142:29:34;;;;1134:60;;;;;-1:-1:-1;;;1134:60:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;1209:16;;1205:106;;1241:59;1269:5;1276:9;1287:12;1241:27;:59::i;7847:162:18:-;-1:-1:-1;;;;;7967:25:18;;;7944:4;7967:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7847:162::o;662:273:37:-;849:79;;;;;;876:10;849:79;;;;896:4;849:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;849:26:37;;;;;:79;;;;;-1:-1:-1;;849:79:37;;;;;;;-1:-1:-1;849:26:37;:79;;;;;;;;;;11270:2808:28;11404:15;;11379:14;;6474:39;6493:10;11379:14;6474:18;:39::i;:::-;6466:64;;;;-1:-1:-1;;;6466:64:28;;;;;;;:::i;:::-;11476:1:::1;11456:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;11456:21:28::1;;:46;;;-1:-1:-1::0;11501:1:28::1;11481:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;11481:21:28::1;;11456:46;11448:55;;;::::0;::::1;;11592:17;::::0;11612:16:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;11612:30:28::1;;:65;;11661:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;11612:65;;;11653:4;11612:65;11727:14:::0;::::1;11688:25;11716:26:::0;;;:10:::1;:26;::::0;;;;;;;11807:15:::1;::::0;;::::1;::::0;::::1;;11790:33:::0;;:16:::1;:33:::0;;;;;11753:70;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;11753:70:28;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;11753:70:28;;::::1;;;::::0;;;;;;;11592:85;;-1:-1:-1;11753:70:28;11867:44:::1;11894:7;11753:70:::0;11867:26:::1;:44::i;:::-;11969:20;::::0;::::1;::::0;;12131:18;::::1;::::0;11834:78;;-1:-1:-1;;;;;;11969:20:28;;::::1;::::0;-1:-1:-1;;;11991:20:28;;;::::1;::::0;::::1;::::0;12131:18;::::1;;:22:::0;12127:992:::1;;12179:18;::::0;::::1;::::0;12169:52:::1;::::0;;;;-1:-1:-1;;;;;12169:9:28;::::1;::::0;::::1;::::0;:52:::1;::::0;12179:18;;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;12199:18:28;;::::1;::::0;::::1;::::0;12219:1:::1;::::0;12169:52:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12379:18:28::1;::::0;::::1;::::0;12238:32:::1;::::0;;;-1:-1:-1;;;;;12312:14:28;::::1;::::0;::::1;::::0;12344:74:::1;::::0;12372:4:::1;::::0;12379:18;;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;12399:18:28;::::1;::::0;::::1;12344:19;:74::i;:::-;12312:120;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12235:197;;;;;;;12487:195;12551:8;:33;;;12524:24;:60;12606:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;12606:18:28::1;-1:-1:-1::0;;;;;12487:195:28::1;-1:-1:-1::0;;;12487:15:28::1;:195::i;:::-;12447:249;;;;12750:195;12814:8;:33;;;12787:24;:60;12869:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;12869:18:28::1;-1:-1:-1::0;;;;;12750:195:28::1;-1:-1:-1::0;;;12750:15:28::1;:195::i;:::-;12974:33;::::0;::::1;:60:::0;;;;13048:33:::1;::::0;::::1;:60:::0;12710:249:::1;12127:992;13198:22;::::0;-1:-1:-1;;;;;13262:31:28;::::1;:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;13262:31:28::1;;:65;;13310:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;13262:65;;;13296:11;13262:65;13361:11;-1:-1:-1::0;;;;;13341:31:28::1;:6;:17;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13341:31:28::1;;:65;;13389:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;13341:65;;;13375:11;13341:65;13550:18;::::0;::::1;::::0;13501:165:::1;::::0;;;;13197:219;;-1:-1:-1;13197:219:28;;-1:-1:-1;;;;;;13501:12:28;::::1;::::0;::::1;::::0;:165:::1;::::0;13527:9;;13550:18;;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;13582:18:28;;::::1;::::0;::::1;::::0;13197:219;;;;13501:165:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13883:20;::::0;::::1;13882:107:::0;;-1:-1:-1;;;;;;;13882:107:28;;::::1;-1:-1:-1::0;;;13960:28:28;;::::1;13882:107:::0;::::1;;;;13930:28:::0;;::::1;13882:107:::0;::::1;;::::0;;;14005:66:::1;::::0;13480:186;;::::1;::::0;-1:-1:-1;13480:186:28::1;::::0;-1:-1:-1;14013:14:28;::::1;::::0;14005:66:::1;::::0;::::1;::::0;14029:9;;13930:28;;13960;;14005:66:::1;:::i;10368:125:18:-:0;10433:4;10456:30;:12;10478:7;10456:21;:30::i;598:104:24:-;685:10;598:104;:::o;14994:177:28:-;15077:19;;;;:10;:19;;;;;:33;;;;;-1:-1:-1;;;;;15077:33:28;;;;;;;;;;;;:19;;15134:16;15077:19;15134:7;:16::i;:::-;-1:-1:-1;;;;;15125:39:28;;;;;;;;;;;14994:177;;:::o;10651:351:18:-;10744:4;10768:16;10776:7;10768;:16::i;:::-;10760:73;;;;-1:-1:-1;;;10760:73:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10843:13;10859:23;10874:7;10859:14;:23::i;:::-;10843:39;;10911:5;-1:-1:-1;;;;;10900:16:18;:7;-1:-1:-1;;;;;10900:16:18;;:51;;;;10944:7;-1:-1:-1;;;;;10920:31:18;:20;10932:7;10920:11;:20::i;:::-;-1:-1:-1;;;;;10920:31:18;;10900:51;:94;;;;10955:39;10979:5;10986:7;10955:23;:39::i;319:106:29:-;403:15;319:106;:::o;1276:512:52:-;1360:12;1405:3;:10;;;-1:-1:-1;;;;;1392:23:52;:3;:10;;;-1:-1:-1;;;;;1392:23:52;;1384:32;;;;;;-1:-1:-1;1639:10:52;;1651;;;;;1663:7;;;;;1628:43;;-1:-1:-1;;;;;1628:43:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:54;;;;;;1510:229;;;;;;;;-1:-1:-1;;1510:229:52;;;;;;;;;;;;241:66;1510:229;;;;;;;;;;;;;;;;;;;;;;;;;1479:278;;;;;;1276:512::o;162:178:53:-;287:45;;;-1:-1:-1;;287:45:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;277:56;;;;;162:178;;;;;;:::o;749:3746:11:-;831:14;;;-1:-1:-1;;1338:1:11;1335;1328:20;1370:9;;;;-1:-1:-1;1421:13:11;;;1405:14;;;;1401:34;;-1:-1:-1;1517:10:11;1513:179;;1565:1;1551:11;:15;1543:24;;;;;;-1:-1:-1;1618:23:11;;;;-1:-1:-1;1668:13:11;;1513:179;1819:5;1805:11;:19;1797:28;;;;;;2102:17;2178:11;2175:1;2172;2165:25;2530:12;2545;;;:26;;2665:22;;;;;3468:1;3449;:15;;3448:21;;3695:17;;;3691:21;;3684:28;3753:17;;;3749:21;;3742:28;3812:17;;;3808:21;;3801:28;3871:17;;;3867:21;;3860:28;3930:17;;;3926:21;;3919:28;3990:17;;;3986:21;;;3979:28;3037:12;;;;3033:23;;;3058:1;3029:31;2307:20;;;2296:32;;;3088:12;;;;2350:21;;;;2793:16;;;;3079:21;;;;4454:11;;;;;-1:-1:-1;;749:3746:11;;;;;:::o;7812:121:25:-;7881:7;7907:19;7915:3;7907:7;:19::i;1874:1309:31:-;1962:17;1981:15;1998;2015:17;2044:34;2081:130;;;;;;;;2123:6;:13;;;-1:-1:-1;;;;;2081:130:31;;;;;2158:6;:13;;;-1:-1:-1;;;;;2081:130:31;;;;;2190:6;:10;;;2081:130;;;;;2044:167;;2242:44;2269:7;2278;2242:26;:44::i;:::-;2222:65;;2353:20;2389:4;-1:-1:-1;;;;;2389:10:31;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2352:49;;;;;;;;2415:21;2439:45;2467:6;:16;;;2439:27;:45::i;:::-;2415:69;;2498:21;2522:45;2550:6;:16;;;2522:27;:45::i;:::-;2498:69;;2594:223;2651:12;2681:13;2712;2743:6;:21;;;2782:6;:21;;;2594:39;:223::i;:::-;2582:235;;1874:1309;;;2859:4;-1:-1:-1;;;;;2859:9:31;;2882:6;:16;;;2912:6;:16;;;2942:6;:16;;;2972:9;3006:55;;;;;;;;3033:7;3006:55;;;;3049:10;-1:-1:-1;;;;;3006:55:31;;;;2995:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;2859:213;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3102:17;;;;2838:234;;-1:-1:-1;2838:234:31;-1:-1:-1;3091:28:31;;;;;:60;;;3134:6;:17;;;3123:7;:28;;3091:60;3083:93;;;;-1:-1:-1;;;3083:93:31;;;;;;;:::i;:::-;1874:1309;;;;;;:::o;13692:584:18:-;13816:4;-1:-1:-1;;;;;13789:31:18;:23;13804:7;13789:14;:23::i;:::-;-1:-1:-1;;;;;13789:31:18;;13781:85;;;;-1:-1:-1;;;13781:85:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13902:16:18;;13894:65;;;;-1:-1:-1;;;13894:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:18;;;;;;:13;:19;;;;;:35;;14138:7;14111:26;:35::i;:::-;-1:-1:-1;;;;;;14156:17:18;;;;;;:13;:17;;;;;:30;;14178:7;14156:21;:30::i;:::-;-1:-1:-1;14197:29:18;:12;14214:7;14223:2;14197:16;:29::i;:::-;;14261:7;14257:2;-1:-1:-1;;;;;14242:27:18;14251:4;-1:-1:-1;;;;;14242:27:18;;;;;;;;;;;13692:584;;;:::o;9242:135:26:-;9313:7;9347:22;9351:3;9363:5;9347:3;:22::i;230:124:50:-;329:9;;304:44::o;12841:527:18:-;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:18;;;;;;;;;;;:38;13129:95;;13194:19;;;;:10;:19;;;;;13187:26;;;:::i;:::-;-1:-1:-1;;;;;13234:20:18;;;;;;:13;:20;;;;;:36;;13262:7;13234:27;:36::i;:::-;-1:-1:-1;13281:28:18;:12;13301:7;13281:19;:28::i;:::-;-1:-1:-1;13325:36:18;;13353:7;;13349:1;;-1:-1:-1;;;;;13325:36:18;;;;;13349:1;;13325:36;12841:527;;:::o;1248:269:49:-;1370:17;1419:44;1446:7;1455;1419:26;:44::i;:::-;1399:65;-1:-1:-1;1482:10:49;-1:-1:-1;;;;;1482:27:49;;;1474:36;;;;;1713:655:34;1822:4;-1:-1:-1;;;;;1813:13:34;:5;-1:-1:-1;;;;;1813:13:34;;:47;;;;;1855:5;1830:21;:30;;1813:47;1809:553;;;1911:4;-1:-1:-1;;;;;1905:19:34;;1932:5;1905:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1995:4;-1:-1:-1;;;;;1989:20:34;;2010:9;2021:5;1989:38;;;;;;;;;;;;;-1:-1:-1;;;;;1989:38:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1809:553:34;;-1:-1:-1;1809:553:34;;-1:-1:-1;;;;;2048:22:34;;2065:4;2048:22;2044:318;;;2177:52;2205:5;2212:9;2223:5;2177:27;:52::i;:::-;2044:318;;;2288:63;2320:5;2327;2334:9;2345:5;2288:31;:63::i;8261:233:25:-;8341:7;;;;8400:22;8404:3;8416:5;8400:3;:22::i;:::-;8369:53;;-1:-1:-1;8369:53:25;-1:-1:-1;;;8261:233:25;;;;;;:::o;9514:211::-;9621:7;9671:44;9676:3;9696;9702:12;9671:4;:44::i;14464:144:28:-;14539:7;14573:19;;;:10;:19;;;;;:27;;-1:-1:-1;;14573:27:28;;;;;;;;;;;;;;;;;;14464:144::o;718:413:23:-;1078:20;1116:8;;;718:413::o;12231:393:18:-;-1:-1:-1;;;;;12310:16:18;;12302:61;;;;;-1:-1:-1;;;12302:61:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12382:16;12390:7;12382;:16::i;:::-;12381:17;12373:58;;;;;-1:-1:-1;;;12373:58:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;12442:45;12471:1;12475:2;12479:7;12442:20;:45::i;:::-;-1:-1:-1;;;;;12498:17:18;;;;;;:13;:17;;;;;:30;;12520:7;12498:21;:30::i;:::-;-1:-1:-1;12539:29:18;:12;12556:7;12565:2;12539:16;:29::i;:::-;-1:-1:-1;12584:33:18;;12609:7;;-1:-1:-1;;;;;12584:33:18;;;12601:1;;12584:33;;12601:1;;12584:33;12231:393;;:::o;4248:284:28:-;-1:-1:-1;;;;;4371:14:28;;4337:13;4371:14;;;:8;:14;;;;;;;;4399:11;4395:131;;-1:-1:-1;4453:11:28;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4426:14:28;;;-1:-1:-1;4426:14:28;;;:8;:14;;;;;;;;:41;;;;;;;;4481:24;;;:16;:24;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4481:34:28;;;;;;;;;;;;;;;;;;;;;;4248:284;;;;:::o;2282:165:54:-;2394:12;;;2354;2394;;;;;;;;;-1:-1:-1;;;;;2372:7:54;;;2387:5;;2372:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2372:35:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2353:54;;;2425:7;2417:23;;;;;-1:-1:-1;;;2417:23:54;;;;;;;;;;;;;;;;;;;;;;;;;;;9796:269:18;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:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1183:279:54;1313:59;;;-1:-1:-1;;;;;1313:59:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:24;1313:59;;;1302:71;;;;1267:12;;;;1302:10;;;;1313:59;1302:71;;;1313:59;1302:71;;1313:59;1302:71;;;;;;;;;;-1:-1:-1;;1302:71:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:107;;;;1391:7;:57;;;;-1:-1:-1;1403:11:54;;:16;;:44;;;1434:4;1423:24;;;;;;;;;;;;;;;-1:-1:-1;1423:24:54;1403:44;1383:72;;;;;-1:-1:-1;;;1383:72:54;;;;;;;;;;;;;;;;;;;;;;;;;;;7580:149:25;7664:4;7687:35;7697:3;7717;7687:9;:35::i;4483:108::-;4565:19;;4483:108::o;1362:2580:12:-;1425:20;1457:15;1482:1;1475:4;:8;;;:57;;1526:4;1519:12;;1475:57;;;1502:4;1495:12;;1494:13;;1475:57;1457:75;-1:-1:-1;644:9:12;1550:28;;;1542:42;;;;;-1:-1:-1;;;1542:42:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1595:13;1621:3;1611:13;;:93;;-1:-1:-1;;;1611:93:12;;;1632:34;1611:93;1595:109;;;-1:-1:-1;1728:3:12;1718:13;;:18;1714:83;;1755:34;1747:42;1794:3;1746:51;1714:83;1821:3;1811:13;;:18;1807:83;;1848:34;1840:42;1887:3;1839:51;1807:83;1914:3;1904:13;;:18;1900:83;;1941:34;1933:42;1980:3;1932:51;1900:83;2007:4;1997:14;;:19;1993:84;;2035:34;2027:42;2074:3;2026:51;1993:84;2101:4;2091:14;;:19;2087:84;;2129:34;2121:42;2168:3;2120:51;2087:84;2195:4;2185:14;;:19;2181:84;;2223:34;2215:42;2262:3;2214:51;2181:84;2289:4;2279:14;;:19;2275:84;;2317:34;2309:42;2356:3;2308:51;2275:84;2383:5;2373:15;;:20;2369:85;;2412:34;2404:42;2451:3;2403:51;2369:85;2478:5;2468:15;;:20;2464:85;;2507:34;2499:42;2546:3;2498:51;2464:85;2573:5;2563:15;;:20;2559:85;;2602:34;2594:42;2641:3;2593:51;2559:85;2668:5;2658:15;;:20;2654:85;;2697:34;2689:42;2736:3;2688:51;2654:85;2763:6;2753:16;;:21;2749:86;;2793:34;2785:42;2832:3;2784:51;2749:86;2859:6;2849:16;;:21;2845:86;;2889:34;2881:42;2928:3;2880:51;2845:86;2955:6;2945:16;;:21;2941:86;;2985:34;2977:42;3024:3;2976:51;2941:86;3051:6;3041:16;;:21;3037:86;;3081:34;3073:42;3120:3;3072:51;3037:86;3147:7;3137:17;;:22;3133:86;;3178:33;3170:41;3216:3;3169:50;3133:86;3243:7;3233:17;;:22;3229:85;;3274:32;3266:40;3311:3;3265:49;3229:85;3338:7;3328:17;;:22;3324:83;;3369:30;3361:38;3404:3;3360:47;3324:83;3431:7;3421:17;;:22;3417:78;;3462:25;3454:33;3492:3;3453:42;3417:78;3517:1;3510:4;:8;;;3506:47;;;3548:5;-1:-1:-1;;3528:25:12;;;;;;3520:33;;3506:47;3912:7;3903:5;:17;:22;:30;;3932:1;3903:30;;;3928:1;3903:30;3886:48;;3896:2;3887:5;:11;;3886:48;3863:72;;1362:2580;;;;;:::o;3098:901:51:-;3301:17;3350:13;-1:-1:-1;;;;;3334:29:51;:13;-1:-1:-1;;;;;3334:29:51;;3330:98;;;3399:13;;3414;3330:98;3459:13;-1:-1:-1;;;;;3443:29:51;:12;-1:-1:-1;;;;;3443:29:51;;3439:554;;3500:61;3523:13;3538;3553:7;3500:22;:61::i;:::-;3488:73;;3439:554;;;3597:13;-1:-1:-1;;;;;3582:28:51;:12;-1:-1:-1;;;;;3582:28:51;;3578:415;;;3626:18;3647:60;3670:12;3684:13;3699:7;3647:22;:60::i;:::-;3626:81;;3721:18;3742:60;3765:13;3780:12;3794:7;3742:22;:60::i;:::-;3721:81;;3842:10;-1:-1:-1;;;;;3829:23:51;:10;-1:-1:-1;;;;;3829:23:51;;:49;;3868:10;3829:49;;;3855:10;3829:49;3817:61;;3578:415;;;;;3921:61;3944:13;3959;3974:7;3921:22;:61::i;:::-;3909:73;;3578:415;3098:901;;;;;;;:::o;8357:135:26:-;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:25:-;7108:4;7131:64;7136:3;7156;-1:-1:-1;;;;;7170:23:25;;7131:4;:64::i;4444:201:26:-;4538:18;;4511:7;;4538:26;-1:-1:-1;4530:73:26;;;;-1:-1:-1;;;4530:73:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4620:3;:11;;4632:5;4620:18;;;;;;;;;;;;;;;;4613:25;;4444:201;;;;:::o;7361:140:25:-;7438:4;7461:33;7469:3;7489;7461:7;:33::i;561:330:54:-;722:69;;;-1:-1:-1;;;;;722:69:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;745:28;722:69;;;698:103;;;;663:12;;;;698:10;;;;722:69;698:103;;;722:69;698:103;;722:69;698:103;;;;;;;;;;-1:-1:-1;;698:103:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;662:139;;;;819:7;:57;;;;-1:-1:-1;831:11:54;;:16;;:44;;;862:4;851:24;;;;;;;;;;;;;;;-1:-1:-1;851:24:54;831:44;811:73;;;;;-1:-1:-1;;;811:73:54;;;;;;;;;;;;;;;;;;;;;;;;;;;4934:274:25;5037:19;;5001:7;;;;5037:27;-1:-1:-1;5029:74:25;;;;-1:-1:-1;;;5029:74:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6643:3;:12;;6667:1;6656:8;:12;6643:26;;;;;;;;;;;;;;;;;;:33;;;6636:40;;;6395:315;;;;;:::o;15509:589:18:-;15629:4;15654:15;:2;-1:-1:-1;;;;;15654:13:18;;:15::i;:::-;15649:58;;-1:-1:-1;15692:4:18;15685:11;;15649:58;15716:23;15742:246;15794:45;15853:12;:10;:12::i;:::-;15879:4;15897:7;15918:5;15758:175;;;;;;-1:-1:-1;;;;;15758:175:18;;;;;;-1:-1:-1;;;;;15758:175:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15742:246;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15742:15:18;;;:246;:15;:246::i;:::-;15716:272;;15998:13;16025:10;16014:32;;;;;;;;;;;;;;;-1:-1:-1;16014:32:18;16064:26;;16074:16;16064:26;;-1:-1:-1;;;15509:589:18;;;;;;:::o;4270:123:25:-;4341:4;4364:17;;;:12;;;;;:17;;;;;;:22;;;4270:123::o;1201:475:51:-;1349:17;1398:13;-1:-1:-1;;;;;1382:29:51;:13;-1:-1:-1;;;;;1382:29:51;;1378:98;;;1447:13;;1462;1378:98;1486:20;1509:63;1525:13;-1:-1:-1;;;;;1509:63:51;1540:13;-1:-1:-1;;;;;1509:63:51;349:27:10;1509:15:51;:63::i;:::-;1486:86;;1589:80;1599:69;1615:7;1624:12;1654:13;1638;:29;-1:-1:-1;;;;;1599:69:51;:15;:69::i;:::-;1589:9;:80::i;2115:383::-;2263:17;2312:13;-1:-1:-1;;;;;2296:29:51;:13;-1:-1:-1;;;;;2296:29:51;;2292:98;;;2361:13;;2376;2292:98;2407:84;2417:73;2433:7;349:27:10;2476:13:51;2460;:29;-1:-1:-1;;;;;2417:73:51;:15;:73::i;2204:1512:26:-;2270:4;2407:19;;;:12;;;:19;;;;;;2441:15;;2437:1273;;2870:18;;-1:-1:-1;;2822:14:26;;;;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:26;;;;;;;;:11;:23;;;;;;;;;;;;;1933:18;;1911:19;;;:12;;;:19;;;;;;:40;;;;1965:11;;1711:319;-1:-1:-1;2014:5:26;2007:12;;1828:678:25;1904:4;2037:17;;;:12;;;:17;;;;;;2069:13;2065:435;;-1:-1:-1;;2153:38:25;;;;;;;;;;;;;;;;;;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:25;;;;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:25;;;;;;;;;;;;;;;;;;;;;4088:17;;;:12;;;:17;;;;;;4081:24;;;;3995:18;-1:-1:-1;4120:11:25;;-1:-1:-1;;;;4120:11:25;3573:193:23;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3707:21;:52::i;623:110:51:-;724:1;-1:-1:-1;;;;;704:21:51;;;;696:30;;;;;4600:523:23;4727:12;4784:5;4759:21;:30;;4751:81;;;;-1:-1:-1;;;4751:81:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4850:18;4861:6;4850:10;:18::i;:::-;4842:60;;;;;-1:-1:-1;;;4842:60:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:12;4987:23;5014:6;-1:-1:-1;;;;;5014:11:23;5034:5;5042:4;5014:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5014:33:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:23:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:23;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:23;;;;;;;;;;;;;;;;;7764:12;;7757:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::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:402::-;;;888:2;876:9;867:7;863:23;859:32;856:2;;;909:6;901;894:22;856:2;953:9;940:23;972:33;999:5;972:33;:::i;:::-;1024:5;-1:-1:-1;1081:2:56;1066:18;;1053:32;1094:35;1053:32;1094:35;:::i;:::-;1148:7;1138:17;;;846:315;;;;;:::o;1166:620::-;;;;;1328:3;1316:9;1307:7;1303:23;1299:33;1296:2;;;1350:6;1342;1335:22;1296:2;1394:9;1381:23;1413:33;1440:5;1413:33;:::i;:::-;1465:5;-1:-1:-1;1522:2:56;1507:18;;1494:32;1535:35;1494:32;1535:35;:::i;:::-;1589:7;-1:-1:-1;1615:39:56;1650:2;1635:18;;1615:39;:::i;:::-;1605:49;;1706:2;1695:9;1691:18;1678:32;1719:35;1746:7;1719:35;:::i;:::-;1286:500;;;;-1:-1:-1;1286:500:56;;-1:-1:-1;;1286:500:56:o;1791:470::-;;;;1937:2;1925:9;1916:7;1912:23;1908:32;1905:2;;;1958:6;1950;1943:22;1905:2;2002:9;1989:23;2021:33;2048:5;2021:33;:::i;:::-;2073:5;-1:-1:-1;2130:2:56;2115:18;;2102:32;2143:35;2102:32;2143:35;:::i;:::-;1895:366;;2197:7;;-1:-1:-1;;;2251:2:56;2236:18;;;;2223:32;;1895:366::o;2266:1066::-;;;;;2438:3;2426:9;2417:7;2413:23;2409:33;2406:2;;;2460:6;2452;2445:22;2406:2;2504:9;2491:23;2523:33;2550:5;2523:33;:::i;:::-;2575:5;-1:-1:-1;2632:2:56;2617:18;;2604:32;2645:35;2604:32;2645:35;:::i;:::-;2699:7;-1:-1:-1;2753:2:56;2738:18;;2725:32;;-1:-1:-1;2808:2:56;2793:18;;2780:32;2835:18;2824:30;;2821:2;;;2872:6;2864;2857:22;2821:2;2900:22;;2953:4;2945:13;;2941:27;-1:-1:-1;2931:2:56;;2987:6;2979;2972:22;2931:2;3028;3015:16;3053:49;3068:33;3098:2;3068:33;:::i;:::-;3053:49;:::i;:::-;3125:2;3118:5;3111:17;3165:7;3160:2;3155;3151;3147:11;3143:20;3140:33;3137:2;;;3191:6;3183;3176:22;3137:2;3251;3246;3242;3238:11;3233:2;3226:5;3222:14;3209:45;3274:14;;;3290:2;3270:23;3263:39;;;;-1:-1:-1;2396:936:56;;;;-1:-1:-1;2396:936:56;-1:-1:-1;2396:936:56:o;3337:396::-;;;3463:2;3451:9;3442:7;3438:23;3434:32;3431:2;;;3484:6;3476;3469:22;3431:2;3528:9;3515:23;3547:33;3574:5;3547:33;:::i;:::-;3599:5;-1:-1:-1;3656:2:56;3641:18;;3628:32;3669;3628;3669;:::i;3738:327::-;;;3867:2;3855:9;3846:7;3842:23;3838:32;3835:2;;;3888:6;3880;3873:22;3835:2;3932:9;3919:23;3951:33;3978:5;3951:33;:::i;:::-;4003:5;4055:2;4040:18;;;;4027:32;;-1:-1:-1;;;3825:240:56:o;4070:470::-;;;;4216:2;4204:9;4195:7;4191:23;4187:32;4184:2;;;4237:6;4229;4222:22;4184:2;4281:9;4268:23;4300:33;4327:5;4300:33;:::i;:::-;4352:5;-1:-1:-1;4404:2:56;4389:18;;4376:32;;-1:-1:-1;4460:2:56;4445:18;;4432:32;4473:35;4432:32;4473:35;:::i;:::-;4527:7;4517:17;;;4174:366;;;;;:::o;4545:673::-;;;;;;;4740:3;4728:9;4719:7;4715:23;4711:33;4708:2;;;4762:6;4754;4747:22;4708:2;4806:9;4793:23;4825:33;4852:5;4825:33;:::i;:::-;4877:5;-1:-1:-1;4929:2:56;4914:18;;4901:32;;-1:-1:-1;4980:2:56;4965:18;;4952:32;;-1:-1:-1;5036:2:56;5021:18;;5008:32;5049:33;5008:32;5049:33;:::i;:::-;4698:520;;;;-1:-1:-1;4698:520:56;;5155:3;5140:19;;5127:33;;5207:3;5192:19;;;5179:33;;-1:-1:-1;4698:520:56;-1:-1:-1;;4698:520:56:o;5223:677::-;;;5381:2;5369:9;5360:7;5356:23;5352:32;5349:2;;;5402:6;5394;5387:22;5349:2;5447:9;5434:23;5476:18;5517:2;5509:6;5506:14;5503:2;;;5538:6;5530;5523:22;5503:2;5581:6;5570:9;5566:22;5556:32;;5626:7;5619:4;5615:2;5611:13;5607:27;5597:2;;5653:6;5645;5638:22;5597:2;5698;5685:16;5724:2;5716:6;5713:14;5710:2;;;5745:6;5737;5730:22;5710:2;5804:7;5799:2;5793;5785:6;5781:15;5777:2;5773:24;5769:33;5766:46;5763:2;;;5830:6;5822;5815:22;5763:2;5866;5858:11;;;;;5888:6;;-1:-1:-1;5339:561:56;;-1:-1:-1;;;;5339:561:56:o;5905:352::-;;6016:2;6004:9;5995:7;5991:23;5987:32;5984:2;;;6037:6;6029;6022:22;5984:2;6081:9;6068:23;6131:66;6124:5;6120:78;6113:5;6110:89;6100:2;;6218:6;6210;6203:22;6262:255;;6372:2;6360:9;6351:7;6347:23;6343:32;6340:2;;;6393:6;6385;6378:22;6340:2;6437:9;6424:23;6456:31;6481:5;6456:31;:::i;6522:676::-;;6655:2;6643:9;6634:7;6630:23;6626:32;6623:2;;;6676:6;6668;6661:22;6623:2;6714:9;6708:16;6747:18;6739:6;6736:30;6733:2;;;6784:6;6776;6769:22;6733:2;6812:22;;6865:4;6857:13;;6853:27;-1:-1:-1;6843:2:56;;6899:6;6891;6884:22;6843:2;6933;6927:9;6958:49;6973:33;7003:2;6973:33;:::i;6958:49::-;7030:2;7023:5;7016:17;7070:7;7065:2;7060;7056;7052:11;7048:20;7045:33;7042:2;;;7096:6;7088;7081:22;7042:2;7114:54;7165:2;7160;7153:5;7149:14;7144:2;7140;7136:11;7114:54;:::i;7203:210::-;;7348:3;7336:9;7327:7;7323:23;7319:33;7316:2;;;7370:6;7362;7355:22;7316:2;-1:-1:-1;7398:9:56;7306:107;-1:-1:-1;7306:107:56:o;7418:220::-;;7573:3;7561:9;7552:7;7548:23;7544:33;7541:2;;;7595:6;7587;7580:22;7643:220;;7798:3;7786:9;7777:7;7773:23;7769:33;7766:2;;;7820:6;7812;7805:22;7868:1112;;8005:9;7996:7;7992:23;8035:3;8031:2;8027:12;8024:2;;;8057:6;8049;8042:22;8024:2;8095:4;8089:11;8139:4;8131:6;8127:17;8163:18;8231:6;8219:10;8216:22;8211:2;8199:10;8196:18;8193:46;8190:2;;;8242:9;8190:2;8275:10;8269:4;8262:24;8306:4;8302:2;8298:13;8295:2;;;8329:6;8321;8314:22;8295:2;8379:3;8371:6;8367:16;8347:36;;8437:10;8423:12;8420:28;8415:2;8401:12;8398:20;8395:54;8392:2;;;8452:9;8392:2;;8485:12;8479:4;8472:26;8533:9;8520:23;8507:36;;8552:33;8579:5;8552:33;:::i;:::-;8594:25;;;8671:2;8656:18;;8643:32;;8684:35;8643:32;8684:35;:::i;:::-;8754:7;8747:4;8739:6;8735:17;8728:34;8796:41;8831:4;8820:9;8816:20;8796:41;:::i;:::-;8790:3;8778:16;;8771:67;8847:26;;8906:42;8942:4;8927:20;;8906:42;:::i;:::-;8901:2;8889:15;;8882:67;8893:6;7972:1008;-1:-1:-1;;;;7972:1008:56:o;8985:207::-;;9127:3;9115:9;9106:7;9102:23;9098:33;9095:2;;;9149:6;9141;9134:22;9197:259;;9309:2;9297:9;9288:7;9284:23;9280:32;9277:2;;;9330:6;9322;9315:22;9277:2;9374:9;9361:23;9393:33;9420:5;9393:33;:::i;9461:399::-;;;9601:2;9589:9;9580:7;9576:23;9572:32;9569:2;;;9622:6;9614;9607:22;9569:2;9659:9;9653:16;9678:33;9705:5;9678:33;:::i;:::-;9780:2;9765:18;;9759:25;9730:5;;-1:-1:-1;9793:35:56;9759:25;9793:35;:::i;9865:659::-;;;;;;10056:3;10044:9;10035:7;10031:23;10027:33;10024:2;;;10078:6;10070;10063:22;10024:2;10115:9;10109:16;10134:33;10161:5;10134:33;:::i;:::-;10186:5;10176:15;;;10231:2;10220:9;10216:18;10210:25;10200:35;;10275:2;10264:9;10260:18;10254:25;10244:35;;10324:2;10313:9;10309:18;10303:25;10337:35;10364:7;10337:35;:::i;:::-;10443:3;10428:19;;10422:26;10391:7;;-1:-1:-1;10457:35:56;10422:26;10457:35;:::i;:::-;10511:7;10501:17;;;10014:510;;;;;;;;:::o;10529:916::-;;;;;;;;10744:3;10732:9;10723:7;10719:23;10715:33;10712:2;;;10766:6;10758;10751:22;10712:2;10803:9;10797:16;10822:33;10849:5;10822:33;:::i;:::-;10924:2;10909:18;;10903:25;10874:5;;-1:-1:-1;10937:33:56;10903:25;10937:33;:::i;:::-;10989:7;-1:-1:-1;11015:50:56;11061:2;11046:18;;11015:50;:::i;:::-;11005:60;;11084:50;11130:2;11119:9;11115:18;11084:50;:::i;:::-;11074:60;;11153:51;11199:3;11188:9;11184:19;11153:51;:::i;:::-;11143:61;;11249:3;11238:9;11234:19;11228:26;11263:33;11288:7;11263:33;:::i;:::-;11367:3;11352:19;;11346:26;11315:7;;-1:-1:-1;11381:32:56;11346:26;11381:32;:::i;:::-;11432:7;11422:17;;;10702:743;;;;;;;;;;:::o;11450:196::-;;11561:2;11549:9;11540:7;11536:23;11532:32;11529:2;;;11582:6;11574;11567:22;11529:2;11610:30;11630:9;11610:30;:::i;11651:190::-;;11763:2;11751:9;11742:7;11738:23;11734:32;11731:2;;;11784:6;11776;11769:22;11731:2;-1:-1:-1;11812:23:56;;11721:120;-1:-1:-1;11721:120:56:o;11846:327::-;;;11975:2;11963:9;11954:7;11950:23;11946:32;11943:2;;;11996:6;11988;11981:22;11943:2;12037:9;12024:23;12014:33;;12097:2;12086:9;12082:18;12069:32;12110:33;12137:5;12110:33;:::i;12178:255::-;;;12318:2;12306:9;12297:7;12293:23;12289:32;12286:2;;;12339:6;12331;12324:22;12286:2;-1:-1:-1;;12367:16:56;;12423:2;12408:18;;;12402:25;12367:16;;12402:25;;-1:-1:-1;12276:157:56:o;12438:777::-;;;;;12603:2;12591:9;12582:7;12578:23;12574:32;12571:2;;;12624:6;12616;12609:22;12571:2;12665:9;12652:23;12642:33;;12722:2;12711:9;12707:18;12694:32;12684:42;;12777:2;12766:9;12762:18;12749:32;12800:18;12841:2;12833:6;12830:14;12827:2;;;12862:6;12854;12847:22;12827:2;12905:6;12894:9;12890:22;12880:32;;12950:7;12943:4;12939:2;12935:13;12931:27;12921:2;;12977:6;12969;12962:22;12921:2;13022;13009:16;13048:2;13040:6;13037:14;13034:2;;;13069:6;13061;13054:22;13034:2;13119:7;13114:2;13105:6;13101:2;13097:15;13093:24;13090:37;13087:2;;;13145:6;13137;13130:22;13087:2;12561:654;;;;-1:-1:-1;;13181:2:56;13173:11;;-1:-1:-1;;;12561:654:56:o;13220:318::-;;13301:5;13295:12;13328:6;13323:3;13316:19;13344:63;13400:6;13393:4;13388:3;13384:14;13377:4;13370:5;13366:16;13344:63;:::i;:::-;13452:2;13440:15;-1:-1:-1;;13436:88:56;13427:98;;;;13527:4;13423:109;;13271:267;-1:-1:-1;;13271:267:56:o;13543:93::-;13620:1;13609:20;13597:33;;13587:49::o;13641:121::-;-1:-1:-1;;;;;13709:46:56;13697:59;;13687:75::o;13767:273::-;;13950:6;13942;13937:3;13924:33;13976:16;;14001:15;;;13976:16;13914:126;-1:-1:-1;13914:126:56:o;14045:226::-;-1:-1:-1;;;;;14209:55:56;;;;14191:74;;14179:2;14164:18;;14146:125::o;14276:618::-;;-1:-1:-1;;;;;14531:6:56;14527:55;14516:9;14509:74;14633:6;14630:1;14619:21;14614:2;14603:9;14599:18;14592:49;14691:6;14688:1;14677:21;14672:2;14661:9;14657:18;14650:49;-1:-1:-1;;;;;14739:6:56;14735:47;14730:2;14719:9;14715:18;14708:75;14820:3;14814;14803:9;14799:19;14792:32;14841:47;14883:3;14872:9;14868:19;14860:6;14841:47;:::i;14899:605::-;-1:-1:-1;;;;;15168:55:56;;;;15150:74;;15271:1;15260:21;;;15255:2;15240:18;;15233:49;15318:21;;;;15313:2;15298:18;;15291:49;-1:-1:-1;;;;;15429:15:56;;;15424:2;15409:18;;15402:43;15482:15;15476:3;15461:19;;15454:44;15137:3;15122:19;;15104:400::o;15509:439::-;-1:-1:-1;;;;;15729:55:56;;;;15711:74;;-1:-1:-1;;;;;15874:15:56;;;15869:2;15854:18;;15847:43;15926:15;15921:2;15906:18;;15899:43;15699:2;15684:18;;15666:282::o;15953:865::-;;16142:2;16182;16171:9;16167:18;16212:2;16201:9;16194:21;16235:6;16270;16264:13;16301:6;16293;16286:22;16339:2;16328:9;16324:18;16317:25;;16402:2;16396;16388:6;16384:15;16373:9;16369:31;16365:40;16351:54;;16440:2;16432:6;16428:15;16461:4;16474:315;16488:6;16485:1;16482:13;16474:315;;;16577:66;16565:9;16557:6;16553:22;16549:95;16544:3;16537:108;16668:41;16702:6;16693;16687:13;16668:41;:::i;:::-;16658:51;-1:-1:-1;16767:12:56;;;;16732:15;;;;16510:1;16503:9;16474:315;;;-1:-1:-1;16806:6:56;;16122:696;-1:-1:-1;;;;;;;16122:696:56:o;16823:187::-;16988:14;;16981:22;16963:41;;16951:2;16936:18;;16918:92::o;17015:177::-;17161:25;;;17149:2;17134:18;;17116:76::o;17197:332::-;-1:-1:-1;;;;;17424:55:56;;;;17406:74;;17511:2;17496:18;;17489:34;17394:2;17379:18;;17361:168::o;17534:390::-;17765:1;17754:21;;;17736:40;;17812:21;;;;17807:2;17792:18;;17785:49;-1:-1:-1;;;;;17870:47:56;;;17865:2;17850:18;;17843:75;17724:2;17709:18;;17691:233::o;18316:221::-;;18465:2;18454:9;18447:21;18485:46;18527:2;18516:9;18512:18;18504:6;18485:46;:::i;18542:336::-;18744:2;18726:21;;;18783:2;18763:18;;;18756:30;18822:14;18817:2;18802:18;;18795:42;18869:2;18854:18;;18716:162::o;18883:408::-;19085:2;19067:21;;;19124:2;19104:18;;;19097:30;19163:34;19158:2;19143:18;;19136:62;19234:14;19229:2;19214:18;;19207:42;19281:3;19266:19;;19057:234::o;19296:344::-;19498:2;19480:21;;;19537:2;19517:18;;;19510:30;19576:22;19571:2;19556:18;;19549:50;19631:2;19616:18;;19470:170::o;19645:340::-;19847:2;19829:21;;;19886:2;19866:18;;;19859:30;19925:18;19920:2;19905:18;;19898:46;19976:2;19961:18;;19819:166::o;19990:335::-;20192:2;20174:21;;;20231:2;20211:18;;;20204:30;20270:13;20265:2;20250:18;;20243:41;20316:2;20301:18;;20164:161::o;20330:565::-;20555:13;;20660:9;;-1:-1:-1;;;;;20656:18:56;;;20638:37;;20731:4;20723:13;;;20717:20;20713:29;;20691:20;;;20684:59;20799:4;20791:13;;;20785:20;20807:8;20781:35;20759:20;;;20752:65;;;;20865:17;;20859:24;20855:33;;;20848:4;20833:20;;20826:63;20532:3;20517:19;;20499:396::o;20900:360::-;-1:-1:-1;;;;;21120:47:56;;;;21102:66;;21199:2;21184:18;;21177:34;;;;21242:2;21227:18;;21220:34;21090:2;21075:18;;21057:203::o;21447:432::-;21678:25;;;-1:-1:-1;;;;;21739:47:56;;;;21734:2;21719:18;;21712:75;21818:2;21803:18;;21796:34;21861:2;21846:18;;21839:34;21665:3;21650:19;;21632:247::o;21884:248::-;22058:25;;;22114:2;22099:18;;22092:34;22046:2;22031:18;;22013:119::o;22137:1164::-;22612:26;22600:39;;22582:58;;-1:-1:-1;;;;;22737:15:56;;;22732:2;22717:18;;22710:43;22789:15;;;22784:2;22769:18;;22762:43;22841:15;;22836:2;22821:18;;22814:43;22906:8;22894:21;;22888:3;22873:19;;22866:50;22964:1;22953:21;;;22947:3;22932:19;;22925:50;22569:3;22554:19;;22984:47;23026:3;23011:19;;23003:6;22984:47;:::i;:::-;23040:49;23084:3;23073:9;23069:19;23061:6;23040:49;:::i;:::-;23126:6;23120:3;23109:9;23105:19;23098:35;23170:6;23164:3;23153:9;23149:19;23142:35;23186:50;23231:3;23220:9;23216:19;23207:7;23186:50;:::i;:::-;23245;23290:3;23279:9;23275:19;23266:7;23245:50;:::i;:::-;22536:765;;;;;;;;;;;;;;;:::o;23306:592::-;;;23449:11;23436:25;23539:66;23528:8;23512:14;23508:29;23504:102;23484:18;23480:127;23470:2;;23624:4;23618;23611:18;23470:2;23654:33;;23706:20;;;-1:-1:-1;23749:18:56;23738:30;;23735:2;;;23784:4;23778;23771:18;23735:2;23820:4;23808:17;;-1:-1:-1;23851:14:56;23847:27;;;23837:38;;23834:2;;;23888:1;23885;23878:12;23903:242;23973:2;23967:9;24003:17;;;24050:18;24035:34;;24071:22;;;24032:62;24029:2;;;24097:9;24029:2;24124;24117:22;23947:198;;-1:-1:-1;23947:198:56:o;24150:240::-;;24233:18;24225:6;24222:30;24219:2;;;24255:9;24219:2;-1:-1:-1;24303:4:56;24291:17;-1:-1:-1;;24287:90:56;24379:4;24283:101;;24209:181::o;24395:258::-;24467:1;24477:113;24491:6;24488:1;24485:13;24477:113;;;24567:11;;;24561:18;24548:11;;;24541:39;24513:2;24506:10;24477:113;;;24608:6;24605:1;24602:13;24599:2;;;-1:-1:-1;;24643:1:56;24625:16;;24618:27;24448:205::o;24658:156::-;-1:-1:-1;;;;;24739:5:56;24735:54;24728:5;24725:65;24715:2;;24804:1;24801;24794:12;24819:120;24907:5;24900:13;24893:21;24886:5;24883:32;24873:2;;24929:1;24926;24919:12;24944:120;25033:5;25030:1;25019:20;25012:5;25009:31;24999:2;;25054:1;25051;25044:12;25069:148;-1:-1:-1;;;;;25150:5:56;25146:46;25139:5;25136:57;25126:2;;25207:1;25204;25197:12;25222:116;25308:4;25301:5;25297:16;25290:5;25287:27;25277:2;;25328:1;25325;25318:12"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","SAMB()":"90793ea8","approve(address,uint256)":"095ea7b3","astraCLMintCallback(uint256,uint256,bytes)":"4cb42d2d","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","burn(uint256)":"42966c68","collect((uint256,address,uint128,uint128))":"fc6f7865","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))":"0c49ccbe","factory()":"c45a0155","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","positions(uint256)":"99fbab88","refundAMB()":"c53af304","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","unwrapSAMB(uint256,address)":"a98ce37f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenDescriptor_\",\"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\"},{\"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\":\"SAMB\",\"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\":\"uint256\",\"name\":\"amount0Owed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Owed\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLMintCallback\",\"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\":[{\"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\":\"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\":\"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\":\"refundAMB\",\"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\":\"unwrapSAMB\",\"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}.\"},\"astraCLMintCallback(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 AstraCLPool deployed by the canonical AstraCLFactory.\",\"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 IAstraCLPoolActions#mint call\"}},\"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\"}},\"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 CL 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\"}},\"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`\"}},\"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\"}},\"refundAMB()\":{\"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}.\"},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"stateVariables\":{\"_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\":{\"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\"},\"astraCLMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IAstraCLPool#mint.\"},\"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.\"},\"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\"},\"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\"},\"positions(uint256)\":{\"notice\":\"Returns the position information associated with a given token ID.\"},\"refundAMB()\":{\"notice\":\"Refunds any AMB 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\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"notice\":\"Wraps AstraDEX CL positions in the ERC721 non-fungible token interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/NonfungiblePositionManager.sol\":\"NonfungiblePositionManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":{\"keccak256\":\"0x380f33c6cac2893f4e290a3c1a63f9f0bb9d42aff4a74c9b0fe9eebceb5721c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4cfd26554cf5fd3f7391e73ba4559fb1df2b8f3028c7f27d694b698250371c6c\",\"dweb:/ipfs/QmepfyejMAZbpJETuMC9naUwXLVihfXLXvCQsyMwYq1hy6\"]},\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol\":{\"keccak256\":\"0x85fb78c4f58adb7d5f6e37a1657cd94a050815c7e1ddbbcf8364062cb38b515c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bce55c098b04edf1f75fedeba5ff323eac20e546ff7f8041d13aba9a3c7188e\",\"dweb:/ipfs/QmXFrKKyPhyvLdyyWRcafSMF6zD3tRjkPcVuPzZ7NU69E4\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x2d1f4f73ae0d8f0a210b8d30084659b57c56ac8f2f96011fca36f00a6d417178\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2ba88933f16cd2df398e19c6ad227268f83c03081b70d243c97116d2ed9bc241\",\"dweb:/ipfs/QmTUGxdh8snzEM9VrTSS47StCg9VVWvvLJtJeNnMTFY4xb\"]},\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]},\"contracts/NonfungiblePositionManager.sol\":{\"keccak256\":\"0x60b8b492da0234827d09b3be74ebd1befc532bd720555a8df1ed04482c8a8a3d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c3166d3773e6f8e11eed8d9c3eabd79c0e4b6d95a3deaef7ef3bdb889f5d93e0\",\"dweb:/ipfs/QmZStdwisPDfCGX96NgSvsTwcy712FxoQQ51FDkJBiZN5f\"]},\"contracts/base/BlockTimestamp.sol\":{\"keccak256\":\"0x1aa66f71234064a0c0976f62233f2edbd69554e5ad817dc97f318bc8e11f4da6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b3a40450e9d6b0f9cb91b40ffd6215612505bd74e7d954529958f4edc6ee7b93\",\"dweb:/ipfs/QmewsUCHK5N5KhNtqEwK8JgsXFADyFBrQRS5HoDWM5gi3b\"]},\"contracts/base/ERC721Permit.sol\":{\"keccak256\":\"0x5f49d22648b16a32881b1e22ecb6a396713c459dd9cf76ca263342fb0b07ba62\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://309ee7bc9dc3f03b42b80f196dc0a2df3b4536c4f6f2a8e422c020a982f53db8\",\"dweb:/ipfs/QmYEdL3JkPVuSyKhVm5MV7vyQh14xr5KqvtMiivJ5ydM9x\"]},\"contracts/base/LiquidityManagement.sol\":{\"keccak256\":\"0x6a3ffb66ae47e1abc60e024a1356b50a157ce6b25ebb4a0d32f56fae5d1f603e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://531e5b2ca81216f179ac636f39e95f17ba709e46ea262db104ae02074df8ef50\",\"dweb:/ipfs/QmXCK7mL4738nbWeg4MFo8RrSA1wzhy2KpXU7TA45B4sRp\"]},\"contracts/base/Multicall.sol\":{\"keccak256\":\"0xfcfd78c62d2145634a791d5680a1af7055fbd301c415d29c09333c99c37d9037\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0d1c8f4a18cec8ad49e5269c5b07c7f6fd497dfc1b7b777f8ddcfb8055efd803\",\"dweb:/ipfs/QmdeCTnfHM3RGtQuo3DMX9m7gPspGGwQp7ho6m9cJjjnER\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PeripheryPayments.sol\":{\"keccak256\":\"0x88e12ecce0236f43cac955dee8ae50e8ffba7d133625ba18b590d51b9e030098\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9f10d1317582a91e7842901c6888c4bb28939817cefa3d3f88458c2ec653b6ed\",\"dweb:/ipfs/QmP2qV22Uq6Pou1VkgNzRnXHzNJ71CBpVBYhYDnLccBx8U\"]},\"contracts/base/PeripheryValidation.sol\":{\"keccak256\":\"0xc736bab599912d6212e8414ee4ba7af0c1e08ff6aa11caa85f5f6e07f7d421c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06f6c13a86900c71fa486fc029a59d1b7eb96162bb42885b5f845d995294893e\",\"dweb:/ipfs/QmUcBxMsmncw9n6eXhzzwSasGBvBGKH5FT8HSrAxrsXV4A\"]},\"contracts/base/PoolInitializer.sol\":{\"keccak256\":\"0x7a26153c5ae7025d34ba7bab5a9706b98aaada5a29b1805ec2801f058dea67ca\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9b4f718d03540adab9c16d6df6dbccb7531ca6284f1e7fe1b0d07e5f0ef461ba\",\"dweb:/ipfs/QmXeeKEwUgAekboG7WXgxmr6QwMn3dFSsxEyoTBNoWooRw\"]},\"contracts/base/SelfPermit.sol\":{\"keccak256\":\"0xe75aedfc1eff6c84adac82b2bc41d197127a74530f0c344a7a122a6c8ec186be\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://05150ae691e10f2c9c82ad46de86c8b6683d8eba995e6f9ff82eaefc064902e9\",\"dweb:/ipfs/QmdKxxmxCPxV7qe11MbRhpaQXDAnnKWH1BoTMmEXYPAA7g\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]},\"contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x920448f826d2d8e40aae06ce855644abac394c085a769605399d80cb36bde27f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b299cd039cf1fb92c9c58f666dfbb2753431f3904bed659ddd653ad9a503045\",\"dweb:/ipfs/QmZWb11WyJgGCW35e2opF3Ncstu59krJCDPAZpHWU9rqix\"]},\"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol\":{\"keccak256\":\"0x06bf5ea0c738db5309219a782c0221445a7fb1505fa9ce2a628aa7a80cc46ab7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://39dd81472e18dbc06b8997ff508fcf77ec3b90e3a0626447cce20186b728af06\",\"dweb:/ipfs/QmTxCBtppLbv5GC4ygjui26Qm93hes85cCKS5V6nYn1WBx\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]},\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]},\"contracts/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xfafb0a232f7410fa2fbcae4627e357dfa8f43a58dea6ba796d8bf5523c5c7b89\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f3877e40332b89fc7a14fa3266b4a2bd154725c322816a8985eabfbaeb6ab372\",\"dweb:/ipfs/QmVj7tjRKWdW9H6vhP2JTDgt82Pk8sGHEJHtJJwPqmgrRi\"]},\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/ChainId.sol\":{\"keccak256\":\"0x19478399e251074e5c8835eccedca8d3c223479d025e75cd3730131c1f65bdac\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://21cf1f666bb74f1a4180324a4254918cf28d68236a1828140e7e6b21d4bfe857\",\"dweb:/ipfs/QmcTVMseerQiMm2cS5gQ3SEx9kprpyMgWCbiD9VL2kKS2u\"]},\"contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x0845f1c8b6a30b2c243a0d285a30ec5653442aec2bc88cd27c83215c6e0f577f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e6303005c2e69c3315875ace1d618459cd8edf4ea499a0f167a83680bd835ae5\",\"dweb:/ipfs/QmcMpVTkGZh6SJoFAbN29w2ABD25zACxRouuqAtCBHATyd\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/libraries/PositionKey.sol\":{\"keccak256\":\"0xd72d0eeec86263f20e0f09a5997df27da1d0e1da31c3fd4874d6b67038066a9b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1aa47fde0fcab8f874815218f74005d5d569ec73b181a49014159f635a57b61b\",\"dweb:/ipfs/QmZGYC5na1nGcenPAHRJM8QfqQhrw7WYKFPHbE3MpQYP1s\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/base/BlockTimestamp.sol":{"BlockTimestamp":{"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\":{\"details\":\"Base contract that is overridden for tests\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Function for getting block timestamp\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/BlockTimestamp.sol\":\"BlockTimestamp\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/base/BlockTimestamp.sol\":{\"keccak256\":\"0x1aa66f71234064a0c0976f62233f2edbd69554e5ad817dc97f318bc8e11f4da6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b3a40450e9d6b0f9cb91b40ffd6215612505bd74e7d954529958f4edc6ee7b93\",\"dweb:/ipfs/QmewsUCHK5N5KhNtqEwK8JgsXFADyFBrQRS5HoDWM5gi3b\"]}},\"version\":1}"}},"contracts/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/base/ERC721Permit.sol\":\"ERC721Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]},\"contracts/base/BlockTimestamp.sol\":{\"keccak256\":\"0x1aa66f71234064a0c0976f62233f2edbd69554e5ad817dc97f318bc8e11f4da6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b3a40450e9d6b0f9cb91b40ffd6215612505bd74e7d954529958f4edc6ee7b93\",\"dweb:/ipfs/QmewsUCHK5N5KhNtqEwK8JgsXFADyFBrQRS5HoDWM5gi3b\"]},\"contracts/base/ERC721Permit.sol\":{\"keccak256\":\"0x5f49d22648b16a32881b1e22ecb6a396713c459dd9cf76ca263342fb0b07ba62\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://309ee7bc9dc3f03b42b80f196dc0a2df3b4536c4f6f2a8e422c020a982f53db8\",\"dweb:/ipfs/QmYEdL3JkPVuSyKhVm5MV7vyQh14xr5KqvtMiivJ5ydM9x\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xfafb0a232f7410fa2fbcae4627e357dfa8f43a58dea6ba796d8bf5523c5c7b89\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f3877e40332b89fc7a14fa3266b4a2bd154725c322816a8985eabfbaeb6ab372\",\"dweb:/ipfs/QmVj7tjRKWdW9H6vhP2JTDgt82Pk8sGHEJHtJJwPqmgrRi\"]},\"contracts/libraries/ChainId.sol\":{\"keccak256\":\"0x19478399e251074e5c8835eccedca8d3c223479d025e75cd3730131c1f65bdac\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://21cf1f666bb74f1a4180324a4254918cf28d68236a1828140e7e6b21d4bfe857\",\"dweb:/ipfs/QmcTVMseerQiMm2cS5gQ3SEx9kprpyMgWCbiD9VL2kKS2u\"]}},\"version\":1}"}},"contracts/base/LiquidityManagement.sol":{"LiquidityManagement":{"abi":[{"inputs":[],"name":"SAMB","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":"astraCLMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundAMB","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":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"SAMB()":"90793ea8","astraCLMintCallback(uint256,uint256,bytes)":"4cb42d2d","factory()":"c45a0155","refundAMB()":"c53af304","sweepToken(address,uint256,address)":"df2ab5bb","unwrapSAMB(uint256,address)":"a98ce37f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"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\":\"astraCLMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundAMB\",\"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\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLMintCallback(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 AstraCLPool deployed by the canonical AstraCLFactory.\",\"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 IAstraCLPoolActions#mint call\"}},\"refundAMB()\":{\"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`\"}},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"title\":\"Liquidity management functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IAstraCLPool#mint.\"},\"refundAMB()\":{\"notice\":\"Refunds any AMB 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\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"notice\":\"Internal functions for safely managing liquidity in AstraDEX CL\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/LiquidityManagement.sol\":\"LiquidityManagement\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":{\"keccak256\":\"0x380f33c6cac2893f4e290a3c1a63f9f0bb9d42aff4a74c9b0fe9eebceb5721c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4cfd26554cf5fd3f7391e73ba4559fb1df2b8f3028c7f27d694b698250371c6c\",\"dweb:/ipfs/QmepfyejMAZbpJETuMC9naUwXLVihfXLXvCQsyMwYq1hy6\"]},\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol\":{\"keccak256\":\"0x85fb78c4f58adb7d5f6e37a1657cd94a050815c7e1ddbbcf8364062cb38b515c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bce55c098b04edf1f75fedeba5ff323eac20e546ff7f8041d13aba9a3c7188e\",\"dweb:/ipfs/QmXFrKKyPhyvLdyyWRcafSMF6zD3tRjkPcVuPzZ7NU69E4\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/base/LiquidityManagement.sol\":{\"keccak256\":\"0x6a3ffb66ae47e1abc60e024a1356b50a157ce6b25ebb4a0d32f56fae5d1f603e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://531e5b2ca81216f179ac636f39e95f17ba709e46ea262db104ae02074df8ef50\",\"dweb:/ipfs/QmXCK7mL4738nbWeg4MFo8RrSA1wzhy2KpXU7TA45B4sRp\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PeripheryPayments.sol\":{\"keccak256\":\"0x88e12ecce0236f43cac955dee8ae50e8ffba7d133625ba18b590d51b9e030098\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9f10d1317582a91e7842901c6888c4bb28939817cefa3d3f88458c2ec653b6ed\",\"dweb:/ipfs/QmP2qV22Uq6Pou1VkgNzRnXHzNJ71CBpVBYhYDnLccBx8U\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x0845f1c8b6a30b2c243a0d285a30ec5653442aec2bc88cd27c83215c6e0f577f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e6303005c2e69c3315875ace1d618459cd8edf4ea499a0f167a83680bd835ae5\",\"dweb:/ipfs/QmcMpVTkGZh6SJoFAbN29w2ABD25zACxRouuqAtCBHATyd\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/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/base/Multicall.sol\":\"Multicall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/base/Multicall.sol\":{\"keccak256\":\"0xfcfd78c62d2145634a791d5680a1af7055fbd301c415d29c09333c99c37d9037\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0d1c8f4a18cec8ad49e5269c5b07c7f6fd497dfc1b7b777f8ddcfb8055efd803\",\"dweb:/ipfs/QmdeCTnfHM3RGtQuo3DMX9m7gPspGGwQp7ho6m9cJjjnER\"]},\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]}},\"version\":1}"}},"contracts/base/PeripheryImmutableState.sol":{"PeripheryImmutableState":{"abi":[{"inputs":[],"name":"SAMB","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":{"SAMB()":"90793ea8","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"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\":{\"SAMB\":{\"return\":\"Returns the address of SAMB\"},\"factory\":{\"return\":\"Returns the address of the AstraDEX CL factory\"}},\"title\":\"Immutable state\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Immutable state used by periphery contracts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/PeripheryImmutableState.sol\":\"PeripheryImmutableState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]}},\"version\":1}"}},"contracts/base/PeripheryPayments.sol":{"PeripheryPayments":{"abi":[{"inputs":[],"name":"SAMB","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":"refundAMB","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":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"SAMB()":"90793ea8","factory()":"c45a0155","refundAMB()":"c53af304","sweepToken(address,uint256,address)":"df2ab5bb","unwrapSAMB(uint256,address)":"a98ce37f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"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\":\"refundAMB\",\"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\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundAMB()\":{\"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`\"}},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundAMB()\":{\"notice\":\"Refunds any AMB 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\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/PeripheryPayments.sol\":\"PeripheryPayments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PeripheryPayments.sol\":{\"keccak256\":\"0x88e12ecce0236f43cac955dee8ae50e8ffba7d133625ba18b590d51b9e030098\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9f10d1317582a91e7842901c6888c4bb28939817cefa3d3f88458c2ec653b6ed\",\"dweb:/ipfs/QmP2qV22Uq6Pou1VkgNzRnXHzNJ71CBpVBYhYDnLccBx8U\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/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/base/PeripheryValidation.sol\":\"PeripheryValidation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/base/BlockTimestamp.sol\":{\"keccak256\":\"0x1aa66f71234064a0c0976f62233f2edbd69554e5ad817dc97f318bc8e11f4da6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b3a40450e9d6b0f9cb91b40ffd6215612505bd74e7d954529958f4edc6ee7b93\",\"dweb:/ipfs/QmewsUCHK5N5KhNtqEwK8JgsXFADyFBrQRS5HoDWM5gi3b\"]},\"contracts/base/PeripheryValidation.sol\":{\"keccak256\":\"0xc736bab599912d6212e8414ee4ba7af0c1e08ff6aa11caa85f5f6e07f7d421c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06f6c13a86900c71fa486fc029a59d1b7eb96162bb42885b5f845d995294893e\",\"dweb:/ipfs/QmUcBxMsmncw9n6eXhzzwSasGBvBGKH5FT8HSrAxrsXV4A\"]}},\"version\":1}"}},"contracts/base/PoolInitializer.sol":{"PoolInitializer":{"abi":[{"inputs":[],"name":"SAMB","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":{"SAMB()":"90793ea8","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"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 CL 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 CL 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/base/PoolInitializer.sol\":\"PoolInitializer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":{\"keccak256\":\"0x380f33c6cac2893f4e290a3c1a63f9f0bb9d42aff4a74c9b0fe9eebceb5721c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4cfd26554cf5fd3f7391e73ba4559fb1df2b8f3028c7f27d694b698250371c6c\",\"dweb:/ipfs/QmepfyejMAZbpJETuMC9naUwXLVihfXLXvCQsyMwYq1hy6\"]},\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PoolInitializer.sol\":{\"keccak256\":\"0x7a26153c5ae7025d34ba7bab5a9706b98aaada5a29b1805ec2801f058dea67ca\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9b4f718d03540adab9c16d6df6dbccb7531ca6284f1e7fe1b0d07e5f0ef461ba\",\"dweb:/ipfs/QmXeeKEwUgAekboG7WXgxmr6QwMn3dFSsxEyoTBNoWooRw\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]}},\"version\":1}"}},"contracts/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/base/SelfPermit.sol\":\"SelfPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/base/SelfPermit.sol\":{\"keccak256\":\"0xe75aedfc1eff6c84adac82b2bc41d197127a74530f0c344a7a122a6c8ec186be\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://05150ae691e10f2c9c82ad46de86c8b6683d8eba995e6f9ff82eaefc064902e9\",\"dweb:/ipfs/QmdKxxmxCPxV7qe11MbRhpaQXDAnnKWH1BoTMmEXYPAA7g\"]},\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]},\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]}},\"version\":1}"}},"contracts/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/interfaces/IERC721Permit.sol\":\"IERC721Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]}},\"version\":1}"}},"contracts/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/interfaces/IMulticall.sol\":\"IMulticall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]}},\"version\":1}"}},"contracts/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"},{"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":"SAMB","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":[{"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":"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":"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":"refundAMB","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":"unwrapSAMB","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","SAMB()":"90793ea8","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","collect((uint256,address,uint128,uint128))":"fc6f7865","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))":"0c49ccbe","factory()":"c45a0155","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","positions(uint256)":"99fbab88","refundAMB()":"c53af304","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","unwrapSAMB(uint256,address)":"a98ce37f"}},"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\"},{\"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\":\"SAMB\",\"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\":[{\"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\":\"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\":\"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\":\"refundAMB\",\"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\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"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\"}},\"SAMB()\":{\"returns\":{\"_0\":\"Returns the address of SAMB\"}},\"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\"}},\"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 CL 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 AstraDEX CL factory\"}},\"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`\"}},\"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\"}},\"refundAMB()\":{\"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.\"},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"title\":\"Non-fungible token for positions\",\"version\":1},\"userdoc\":{\"events\":{\"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.\"},\"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\"},\"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\"},\"positions(uint256)\":{\"notice\":\"Returns the position information associated with a given token ID.\"},\"refundAMB()\":{\"notice\":\"Refunds any AMB 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\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"notice\":\"Wraps AstraDEX CL positions in a non-fungible token interface which allows for them to be transferred and authorized.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/INonfungiblePositionManager.sol\":\"INonfungiblePositionManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x920448f826d2d8e40aae06ce855644abac394c085a769605399d80cb36bde27f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b299cd039cf1fb92c9c58f666dfbb2753431f3904bed659ddd653ad9a503045\",\"dweb:/ipfs/QmZWb11WyJgGCW35e2opF3Ncstu59krJCDPAZpHWU9rqix\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]}},\"version\":1}"}},"contracts/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/interfaces/INonfungibleTokenPositionDescriptor.sol\":\"INonfungibleTokenPositionDescriptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x920448f826d2d8e40aae06ce855644abac394c085a769605399d80cb36bde27f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b299cd039cf1fb92c9c58f666dfbb2753431f3904bed659ddd653ad9a503045\",\"dweb:/ipfs/QmZWb11WyJgGCW35e2opF3Ncstu59krJCDPAZpHWU9rqix\"]},\"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol\":{\"keccak256\":\"0x06bf5ea0c738db5309219a782c0221445a7fb1505fa9ce2a628aa7a80cc46ab7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://39dd81472e18dbc06b8997ff508fcf77ec3b90e3a0626447cce20186b728af06\",\"dweb:/ipfs/QmTxCBtppLbv5GC4ygjui26Qm93hes85cCKS5V6nYn1WBx\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]}},\"version\":1}"}},"contracts/interfaces/IPeripheryImmutableState.sol":{"IPeripheryImmutableState":{"abi":[{"inputs":[],"name":"SAMB","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":{"SAMB()":"90793ea8","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"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\":{\"SAMB()\":{\"returns\":{\"_0\":\"Returns the address of SAMB\"}},\"factory()\":{\"returns\":{\"_0\":\"Returns the address of the AstraDEX CL factory\"}}},\"title\":\"Immutable state\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Functions that return immutable state of the router\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPeripheryImmutableState.sol\":\"IPeripheryImmutableState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]}},\"version\":1}"}},"contracts/interfaces/IPeripheryPayments.sol":{"IPeripheryPayments":{"abi":[{"inputs":[],"name":"refundAMB","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":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"refundAMB()":"c53af304","sweepToken(address,uint256,address)":"df2ab5bb","unwrapSAMB(uint256,address)":"a98ce37f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"refundAMB\",\"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\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundAMB()\":{\"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`\"}},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"title\":\"Periphery Payments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundAMB()\":{\"notice\":\"Refunds any AMB 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\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"notice\":\"Functions to ease deposits and withdrawals of AMB\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPeripheryPayments.sol\":\"IPeripheryPayments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]}},\"version\":1}"}},"contracts/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 CL 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 CL 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/interfaces/IPoolInitializer.sol\":\"IPoolInitializer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]}},\"version\":1}"}},"contracts/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/interfaces/ISelfPermit.sol\":\"ISelfPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]}},\"version\":1}"}},"contracts/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/interfaces/external/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xfafb0a232f7410fa2fbcae4627e357dfa8f43a58dea6ba796d8bf5523c5c7b89\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f3877e40332b89fc7a14fa3266b4a2bd154725c322816a8985eabfbaeb6ab372\",\"dweb:/ipfs/QmVj7tjRKWdW9H6vhP2JTDgt82Pk8sGHEJHtJJwPqmgrRi\"]}},\"version\":1}"}},"contracts/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/interfaces/external/IERC20PermitAllowed.sol\":\"IERC20PermitAllowed\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]}},\"version\":1}"}},"contracts/interfaces/external/ISAMB.sol":{"ISAMB":{"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 SAMB\",\"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/interfaces/external/ISAMB.sol\":\"ISAMB\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]}},\"version\":1}"}},"contracts/libraries/CallbackValidation.sol":{"CallbackValidation":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"291:1228:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"291:1228:49:-: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 AstraDEX CL Pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/CallbackValidation.sol\":\"CallbackValidation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]}},\"version\":1}"}},"contracts/libraries/ChainId.sol":{"ChainId":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"124:232:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"124:232:50:-: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/libraries/ChainId.sol\":\"ChainId\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/libraries/ChainId.sol\":{\"keccak256\":\"0x19478399e251074e5c8835eccedca8d3c223479d025e75cd3730131c1f65bdac\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://21cf1f666bb74f1a4180324a4254918cf28d68236a1828140e7e6b21d4bfe857\",\"dweb:/ipfs/QmcTVMseerQiMm2cS5gQ3SEx9kprpyMgWCbiD9VL2kKS2u\"]}},\"version\":1}"}},"contracts/libraries/LiquidityAmounts.sol":{"LiquidityAmounts":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"443:6487:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"443:6487:51:-: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/libraries/LiquidityAmounts.sol\":\"LiquidityAmounts\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x0845f1c8b6a30b2c243a0d285a30ec5653442aec2bc88cd27c83215c6e0f577f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e6303005c2e69c3315875ace1d618459cd8edf4ea499a0f167a83680bd835ae5\",\"dweb:/ipfs/QmcMpVTkGZh6SJoFAbN29w2ABD25zACxRouuqAtCBHATyd\"]}},\"version\":1}"}},"contracts/libraries/PoolAddress.sol":{"PoolAddress":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"167:1623:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"167:1623:52:-: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/libraries/PoolAddress.sol\":\"PoolAddress\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]}},\"version\":1}"}},"contracts/libraries/PositionKey.sol":{"PositionKey":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"71:271:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"71:271:53:-: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/libraries/PositionKey.sol\":\"PositionKey\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"contracts/libraries/PositionKey.sol\":{\"keccak256\":\"0xd72d0eeec86263f20e0f09a5997df27da1d0e1da31c3fd4874d6b67038066a9b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1aa47fde0fcab8f874815218f74005d5d569ec73b181a49014159f635a57b61b\",\"dweb:/ipfs/QmZGYC5na1nGcenPAHRJM8QfqQhrw7WYKFPHbE3MpQYP1s\"]}},\"version\":1}"}},"contracts/libraries/TransferHelper.sol":{"TransferHelper":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D 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 LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"129:2320:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"129:2320:54:-: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/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/test/MockTimeNonfungiblePositionManager.sol":{"MockTimeNonfungiblePositionManager":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"},{"internalType":"address","name":"_tokenDescriptor","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"},{"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":"SAMB","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":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLMintCallback","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":[{"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":"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":"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":"refundAMB","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":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:594: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":"313:279:56","statements":[{"body":{"nodeType":"YulBlock","src":"359:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"368:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"376:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"361:6:56"},"nodeType":"YulFunctionCall","src":"361:22:56"},"nodeType":"YulExpressionStatement","src":"361:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"334:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"343:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"330:3:56"},"nodeType":"YulFunctionCall","src":"330:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"355:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"326:3:56"},"nodeType":"YulFunctionCall","src":"326:32:56"},"nodeType":"YulIf","src":"323:2:56"},{"nodeType":"YulAssignment","src":"394:52:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"436:9:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"404:31:56"},"nodeType":"YulFunctionCall","src":"404:42:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"394:6:56"}]},{"nodeType":"YulAssignment","src":"455:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"501:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"512:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"497:3:56"},"nodeType":"YulFunctionCall","src":"497:18:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"465:31:56"},"nodeType":"YulFunctionCall","src":"465:51:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"455:6:56"}]},{"nodeType":"YulAssignment","src":"525:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"582:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"567:3:56"},"nodeType":"YulFunctionCall","src":"567:18:56"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"535:31:56"},"nodeType":"YulFunctionCall","src":"535:51:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"525:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"263:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"274:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"286:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"294:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"302:6:56","type":""}],"src":"198:394: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_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { 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    }\n}","id":56,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"610120604052600d80546001600160b01b0319166001176001600160b01b0316600160b01b1790553480156200003457600080fd5b5060405162006331380380620063318339810160408190526200005791620002e1565b82828282826040518060400160405280601c81526020017f417374726144455820434c20506f736974696f6e73204e46542d5631000000008152506040518060400160405280600a8152602001694153542d434c2d504f5360b01b815250604051806040016040528060018152602001603160f81b8152508282620000e96301ffc9a760e01b6200019360201b60201c565b8151620000fe90600690602085019062000218565b5080516200011490600790602084019062000218565b50620001276380ac58cd60e01b62000193565b62000139635b5e139f60e01b62000193565b6200014b63780e9d6360e01b62000193565b50508251602093840120608052805192019190912060a052506001600160601b0319606092831b811660c05290821b811660e05291901b1661010052506200032a9350505050565b6001600160e01b03198082161415620001f3576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200025057600085556200029b565b82601f106200026b57805160ff19168380011785556200029b565b828001600101855582156200029b579182015b828111156200029b5782518255916020019190600101906200027e565b50620002a9929150620002ad565b5090565b5b80821115620002a95760008155600101620002ae565b80516001600160a01b0381168114620002dc57600080fd5b919050565b600080600060608486031215620002f6578283fd5b6200030184620002c4565b92506200031160208501620002c4565b91506200032160408501620002c4565b90509250925092565b60805160a05160c05160601c60e05160601c6101005160601c615f82620003af60003980612b415250806102b4528061227a528061270552806127fb5280613a565280613a9c5280613b10525080610ae25280610e075280610ece52806117575280612ac95280612e84528061361a5250806115285250806115075250615f826000f3fe6080604052600436106102a45760003560e01c80636c0360eb1161016e578063ac9650d8116100cb578063c87b56dd1161007f578063e985e9c511610064578063e985e9c514610730578063f3995c6714610750578063fc6f78651461076357610328565b8063c87b56dd146106fd578063df2ab5bb1461071d57610328565b8063c2e3140a116100b0578063c2e3140a146106cd578063c45a0155146106e0578063c53af304146106f557610328565b8063ac9650d81461068d578063b88d4fde146106ad57610328565b806395d89b4111610122578063a22cb46511610107578063a22cb46514610647578063a4a78f0c14610667578063a98ce37f1461067a57610328565b806395d89b41146105fa57806399fbab881461060f57610328565b80637ac2ff7b116101535780637ac2ff7b146105af57806388316456146105c257806390793ea8146105e557610328565b80636c0360eb1461057a57806370a082311461058f57610328565b80632f745c591161021c57806342966c68116101d05780634cb42d2d116101b55780634cb42d2d1461051a5780634f6ccce71461053a5780636352211e1461055a57610328565b806342966c68146104f45780634659a4941461050757610328565b80633644e515116102015780633644e5151461049f5780633beb26c4146104b457806342842e0e146104d457610328565b80632f745c591461046a57806330adf81f1461048a57610328565b80630c49ccbe1161027357806318160ddd1161025857806318160ddd14610406578063219f5d171461042857806323b872dd1461044a57610328565b80630c49ccbe146103d257806313ead562146103f357610328565b806301ffc9a71461032d57806306fdde0314610363578063081812fc14610385578063095ea7b3146103b257610328565b3661032857336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610326576040805162461bcd60e51b815260206004820152600860248201527f4e6f742053414d42000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561033957600080fd5b5061034d6103483660046153e8565b610776565b60405161035a9190615960565b60405180910390f35b34801561036f57600080fd5b506103786107b1565b60405161035a91906159b3565b34801561039157600080fd5b506103a56103a03660046156fa565b610847565b60405161035a9190615824565b3480156103be57600080fd5b506103266103cd3660046152b2565b6108a3565b6103e56103e03660046154c5565b610979565b60405161035a929190615b84565b6103a5610401366004615145565b610de5565b34801561041257600080fd5b5061041b6110f2565b60405161035a919061596b565b61043b6104363660046154d6565b611103565b60405161035a93929190615b3f565b34801561045657600080fd5b5061032661046536600461519e565b61143c565b34801561047657600080fd5b5061041b6104853660046152b2565b611493565b34801561049657600080fd5b5061041b6114be565b3480156104ab57600080fd5b5061041b6114e2565b3480156104c057600080fd5b506103266104cf3660046156fa565b6115a0565b3480156104e057600080fd5b506103266104ef36600461519e565b6115a5565b6103266105023660046156fa565b6115c0565b61032661051536600461531e565b61168f565b34801561052657600080fd5b50610326610535366004615759565b611742565b34801561054657600080fd5b5061041b6105553660046156fa565b6117c0565b34801561056657600080fd5b506103a56105753660046156fa565b6117d6565b34801561058657600080fd5b506103786117fe565b34801561059b57600080fd5b5061041b6105aa3660046150f1565b611803565b6103266105bd36600461531e565b61186b565b6105d56105d0366004615592565b611d17565b60405161035a9493929190615b60565b3480156105f157600080fd5b506103a5612278565b34801561060657600080fd5b5061037861229c565b34801561061b57600080fd5b5061062f61062a3660046156fa565b6122fd565b60405161035a9c9b9a99989796959493929190615b92565b34801561065357600080fd5b50610326610662366004615285565b61252c565b61032661067536600461531e565b61264f565b610326610688366004615712565b612701565b6106a061069b366004615379565b612881565b60405161035a91906158e2565b3480156106b957600080fd5b506103266106c83660046151de565b6129c1565b6103266106db36600461531e565b612a1f565b3480156106ec57600080fd5b506103a5612ac7565b610326612aeb565b34801561070957600080fd5b506103786107183660046156fa565b612afd565b61032661072b3660046152dd565b612bcc565b34801561073c57600080fd5b5061034d61074b36600461510d565b612caf565b61032661075e36600461531e565b612cdd565b6103e56107713660046154ae565b612d68565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561083d5780601f106108125761010080835404028352916020019161083d565b820191906000526020600020905b81548152906001019060200180831161082057829003601f168201915b5050505050905090565b600061085282613286565b6108775760405162461bcd60e51b815260040161086e906159fd565b60405180910390fd5b506000908152600c60205260409020546c0100000000000000000000000090046001600160a01b031690565b60006108ae826117d6565b9050806001600160a01b0316836001600160a01b031614156109015760405162461bcd60e51b8152600401808060200182810382526021815260200180615f246021913960400191505060405180910390fd5b806001600160a01b0316610913613293565b6001600160a01b0316148061092f575061092f8161074b613293565b61096a5760405162461bcd60e51b8152600401808060200182810382526038815260200180615e4e6038913960400191505060405180910390fd5b6109748383613297565b505050565b6000808235610988338261331b565b6109a45760405162461bcd60e51b815260040161086e906159c6565b8360800135806109b26133b7565b1115610a05576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b6000610a1760408701602088016155a4565b6001600160801b031611610a2a57600080fd5b84356000908152600c602090815260409182902060018101549092600160801b9091046001600160801b031691610a659189019089016155a4565b6001600160801b0316816001600160801b03161015610a8357600080fd5b60018281015469ffffffffffffffffffff166000908152600b60209081526040808320815160608101835281546001600160a01b039081168252919095015490811692850192909252600160a01b90910462ffffff1690830152610b077f0000000000000000000000000000000000000000000000000000000000000000836133bd565b60018501549091506001600160a01b0382169063a34123a7906a01000000000000000000008104600290810b91600160681b9004900b610b4d60408e0160208f016155a4565b6040518463ffffffff1660e01b8152600401610b6b9392919061598d565b6040805180830381600087803b158015610b8457600080fd5b505af1158015610b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190615736565b909850965060408901358810801590610bd9575088606001358710155b610bf55760405162461bcd60e51b815260040161086e90615a5a565b6001840154600090610c259030906a01000000000000000000008104600290810b91600160681b9004900b6134b9565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610c56919061596b565b60a06040518083038186803b158015610c6e57600080fd5b505afa158015610c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca691906155ee565b50509250925050610ccb87600201548303876001600160801b0316600160801b613513565b6004880180546fffffffffffffffffffffffffffffffff198116928e016001600160801b039182160181169290921790556003880154610d1591908303908816600160801b613513565b6004880180546001600160801b03808216938e01600160801b9283900482160116029190911790556002870182905560038701819055610d5b60408d0160208e016155a4565b86038760010160106101000a8154816001600160801b0302191690836001600160801b031602179055508b600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48d6020016020810190610dbe91906155a4565b8d8d604051610dcf93929190615b3f565b60405180910390a2505050505050505050915091565b6000836001600160a01b0316856001600160a01b031610610e0557600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b158015610e9057600080fd5b505afa158015610ea4573d6000803e3d6000fd5b505050506040513d6020811015610eba57600080fd5b505190506001600160a01b038116611009577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b158015610f5957600080fd5b505af1158015610f6d573d6000803e3d6000fd5b505050506040513d6020811015610f8357600080fd5b5051604080517ff637731d0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b158015610fec57600080fd5b505af1158015611000573d6000803e3d6000fd5b505050506110ea565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d60e081101561106e57600080fd5b505190506001600160a01b0381166110e857816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156110cf57600080fd5b505af11580156110e3573d6000803e3d6000fd5b505050505b505b949350505050565b60006110fe60026135c2565b905090565b60008060008360a00135806111166133b7565b1115611169576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b84356000908152600c6020908152604080832060018082015469ffffffffffffffffffff81168652600b855283862084516060808201875282546001600160a01b039081168352929094015480831682890190815262ffffff600160a01b9092048216838901908152885161014081018a528451861681529151909416818a01529251168287015230828501526a01000000000000000000008304600290810b810b608080850191909152600160681b909404810b900b60a0830152958c013560c0820152938b013560e0850152908a01356101008401528901356101208301529290611255906135cd565b6001870154939a509198509650915060009061128f9030906a01000000000000000000008104600290810b91600160681b9004900b6134b9565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016112c0919061596b565b60a06040518083038186803b1580156112d857600080fd5b505afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131091906155ee565b5050925092505061134c866002015483038760010160109054906101000a90046001600160801b03166001600160801b0316600160801b613513565b6004870180546001600160801b0380821690930183166fffffffffffffffffffffffffffffffff199091161790556003870154600188015461139c9291840391600160801b918290041690613513565b6004870180546001600160801b03600160801b80830482169094018116840291811691909117909155600288018490556003880183905560018801805483810483168e018316909302929091169190911790556040518b35907f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f90611426908d908d908d90615b3f565b60405180910390a2505050505050509193909250565b61144d611447613293565b8261331b565b6114885760405162461bcd60e51b8152600401808060200182810382526031815260200180615f456031913960400191505060405180910390fd5b610974838383613808565b6001600160a01b03821660009081526001602052604081206114b59083613954565b90505b92915050565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061154f613960565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b600e55565b610974838383604051806020016040528060008152506129c1565b806115cb338261331b565b6115e75760405162461bcd60e51b815260040161086e906159c6565b6000828152600c602052604090206001810154600160801b90046001600160801b0316158015611622575060048101546001600160801b0316155b801561164057506004810154600160801b90046001600160801b0316155b61165c5760405162461bcd60e51b815260040161086e90615ac8565b6000838152600c602052604081208181556001810182905560028101829055600381018290556004015561097483613964565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561172257600080fd5b505af1158015611736573d6000803e3d6000fd5b50505050505050505050565b6000611750828401846154e7565b90506117807f00000000000000000000000000000000000000000000000000000000000000008260000151613a31565b50841561179b57805151602082015161179b91903388613a54565b83156117b9576117b981600001516020015182602001513387613a54565b5050505050565b6000806117ce600284613be4565b509392505050565b60006114b882604051806060016040528060298152602001615eb06029913960029190613c02565b606090565b60006001600160a01b03821661184a5760405162461bcd60e51b815260040180806020018281038252602a815260200180615e86602a913960400191505060405180910390fd5b6001600160a01b03821660009081526001602052604090206114b8906135c2565b836118746133b7565b11156118c7576040805162461bcd60e51b815260206004820152600e60248201527f5065726d69742065787069726564000000000000000000000000000000000000604482015290519081900360640190fd5b60006118d16114e2565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad88886118fd81613c0f565b604080516020808201969096526001600160a01b03909416848201526060840192909252608083015260a08083018a90528151808403909101815260c0830182528051908401207f190100000000000000000000000000000000000000000000000000000000000060e084015260e2830194909452610102808301949094528051808303909401845261012290910190528151910120905060006119a0876117d6565b9050806001600160a01b0316886001600160a01b031614156119f35760405162461bcd60e51b8152600401808060200182810382526027815260200180615db16027913960400191505060405180910390fd5b6119fc81613c4e565b15611bd7576040805160208082018790528183018690527fff0000000000000000000000000000000000000000000000000000000000000060f889901b16606083015282516041818403018152606183018085527f1626ba7e0000000000000000000000000000000000000000000000000000000090526065830186815260858401948552815160a585015281516001600160a01b03871695631626ba7e958995919260c59091019185019080838360005b83811015611ac6578181015183820152602001611aae565b50505050905090810190601f168015611af35780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d6020811015611b3b57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014611bd2576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b611d03565b600060018387878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611c33573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c9b576040805162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e6174757265000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316816001600160a01b031614611d01576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b505b611d0d8888613297565b5050505050505050565b60008060008084610140013580611d2c6133b7565b1115611d7f576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b604080516101408101909152600090611e4b9080611da060208b018b6150f1565b6001600160a01b03168152602001896020016020810190611dc191906150f1565b6001600160a01b03168152602001611ddf60608b0160408c016156e0565b62ffffff168152306020820152604001611dff60808b0160608c01615428565b60020b8152602001611e1760a08b0160808c01615428565b60020b81526020018960a0013581526020018960c0013581526020018960e0013581526020018961010001358152506135cd565b92975090955093509050611ebf611e6a61014089016101208a016150f1565b600d80547fffffffffffffffffffff000000000000000000000000000000000000000000008116600175ffffffffffffffffffffffffffffffffffffffffffff92831690810190921617909155975087613c54565b6000611eea30611ed560808b0160608c01615428565b611ee560a08c0160808d01615428565b6134b9565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401611f1b919061596b565b60a06040518083038186803b158015611f3357600080fd5b505afa158015611f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6b91906155ee565b505092509250506000611fe48560405180606001604052808e6000016020810190611f9691906150f1565b6001600160a01b031681526020018e6020016020810190611fb791906150f1565b6001600160a01b031681526020018e6040016020810190611fd891906156e0565b62ffffff169052613d82565b905060405180610140016040528060006bffffffffffffffffffffffff16815260200160006001600160a01b031681526020018269ffffffffffffffffffff1681526020018c606001602081019061203c9190615428565b60020b815260200161205460a08e0160808f01615428565b60020b81526020018a6001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815250600c60008c815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b03160217905550905050897f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f8a8a8a60405161226393929190615b3f565b60405180910390a25050505050509193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561083d5780601f106108125761010080835404028352916020019161083d565b6000818152600c6020908152604080832081516101408101835281546bffffffffffffffffffffffff811682526001600160a01b036c010000000000000000000000009091041693810193909352600181015469ffffffffffffffffffff81169284018390526a01000000000000000000008104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e0860152600490920154808316610100860152041661012083015282918291829182918291829182918291829182918291906124065760405162461bcd60e51b815260040161086e90615a91565b6000600b6000836040015169ffffffffffffffffffff1669ffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681525050905081600001518260200151826000015183602001518460400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001519d509d509d509d509d509d509d509d509d509d509d509d50505091939597999b5091939597999b565b612534613293565b6001600160a01b0316826001600160a01b0316141561259a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b80600560006125a7613293565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155612609613293565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156126b957600080fd5b505afa1580156126cd573d6000803e3d6000fd5b505050506040513d60208110156126e357600080fd5b505110156126f9576126f986868686868661168f565b505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d602081101561279a57600080fd5b50519050828110156127f3576040805162461bcd60e51b815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b8015610974577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561285f57600080fd5b505af1158015612873573d6000803e3d6000fd5b505050506109748282613ed2565b60608167ffffffffffffffff8111801561289a57600080fd5b506040519080825280602002602001820160405280156128ce57816020015b60608152602001906001900390816128b95790505b50905060005b828110156129ba57600080308686858181106128ec57fe5b90506020028101906128fe9190615c31565b60405161290c929190615814565b600060405180830381855af49150503d8060008114612947576040519150601f19603f3d011682016040523d82523d6000602084013e61294c565b606091505b5091509150816129985760448151101561296557600080fd5b6004810190508080602001905181019061297f9190615444565b60405162461bcd60e51b815260040161086e91906159b3565b808484815181106129a557fe5b602090810291909101015250506001016128d4565b5092915050565b6129d26129cc613293565b8361331b565b612a0d5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f456031913960400191505060405180910390fd5b612a1984848484613fdb565b50505050565b604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015612a8757600080fd5b505afa158015612a9b573d6000803e3d6000fd5b505050506040513d6020811015612ab157600080fd5b505110156126f9576126f9868686868686612cdd565b7f000000000000000000000000000000000000000000000000000000000000000081565b4715612afb57612afb3347613ed2565b565b6060612b0882613286565b612b1157600080fd5b6040517fe9dc63750000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e9dc637590612b789030908690600401615974565b60006040518083038186803b158015612b9057600080fd5b505afa158015612ba4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114b89190810190615444565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612c1b57600080fd5b505afa158015612c2f573d6000803e3d6000fd5b505050506040513d6020811015612c4557600080fd5b5051905082811015612c9e576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015612a1957612a1984838361402d565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561172257600080fd5b6000808235612d77338261331b565b612d935760405162461bcd60e51b815260040161086e906159c6565b6000612da560608601604087016155a4565b6001600160801b03161180612dd257506000612dc760808601606087016155a4565b6001600160801b0316115b612ddb57600080fd5b600080612dee60408701602088016150f1565b6001600160a01b031614612e1157612e0c60408601602087016150f1565b612e13565b305b85356000908152600c6020908152604080832060018082015469ffffffffffffffffffff168552600b8452828520835160608101855281546001600160a01b039081168252919092015490811694820194909452600160a01b90930462ffffff169183019190915292935090612ea97f0000000000000000000000000000000000000000000000000000000000000000836133bd565b600484015460018501549192506001600160801b0380821692600160801b92839004821692900416156130c65760018501546040517fa34123a70000000000000000000000000000000000000000000000000000000081526001600160a01b0385169163a34123a791612f40916a01000000000000000000008104600290810b92600160681b909204900b9060009060040161598d565b6040805180830381600087803b158015612f5957600080fd5b505af1158015612f6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f919190615736565b5050600185015460009081906001600160a01b0386169063514ea4bf90612fd69030906a01000000000000000000008104600290810b91600160681b9004900b6134b9565b6040518263ffffffff1660e01b8152600401612ff2919061596b565b60a06040518083038186803b15801561300a57600080fd5b505afa15801561301e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304291906155ee565b5050925092505061307e876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613513565b840193506130b7876003015482038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613513565b60028801929092556003870155015b6000806001600160801b0384166130e360608e0160408f016155a4565b6001600160801b0316116131065761310160608d0160408e016155a4565b613108565b835b836001600160801b03168d606001602081019061312591906155a4565b6001600160801b0316116131485761314360808e0160608f016155a4565b61314a565b835b60018901546040517f4f1eb3d80000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03871691634f1eb3d8916131bd918c916a01000000000000000000008104600290810b92600160681b909204900b908890889060040161587b565b6040805180830381600087803b1580156131d657600080fd5b505af11580156131ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320e91906155c0565b6004890180546fffffffffffffffffffffffffffffffff196001600160801b03918216600160801b878a0384160217168689038216179091556040519281169d50169a508c35907f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f0190610dcf908b90869086906158b8565b60006114b86002836141bd565b3390565b6000818152600c6020526040902080546bffffffffffffffffffffffff166c010000000000000000000000006001600160a01b0385169081029190911790915581906132e2826117d6565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061332682613286565b6133615760405162461bcd60e51b815260040180806020018281038252602c815260200180615e22602c913960400191505060405180910390fd5b600061336c836117d6565b9050806001600160a01b0316846001600160a01b031614806133a75750836001600160a01b031661339c84610847565b6001600160a01b0316145b806110ea57506110ea8185612caf565b600e5490565b600081602001516001600160a01b031682600001516001600160a01b0316106133e557600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516bffffffffffffffffffffffff19606086901b16602080830191909152600285810b60e890811b60348501529085900b901b60378301528251601a818403018152603a90920190925280519101205b9392505050565b6000808060001985870986860292508281109083900303905080613549576000841161353e57600080fd5b50829004905061350c565b80841161355557600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006114b8826141c9565b6000806000806000604051806060016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001876040015162ffffff16815250905061363f7f0000000000000000000000000000000000000000000000000000000000000000826133bd565b91506000826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561367c57600080fd5b505afa158015613690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b4919061564f565b505050505050905060006136cb88608001516141cd565b905060006136dc8960a001516141cd565b90506136f38383838c60c001518d60e0015161451b565b9750505050816001600160a01b0316633c8a7d8d876060015188608001518960a00151896040518060400160405280888152602001336001600160a01b03168152506040516020016137459190615aff565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401613774959493929190615838565b6040805180830381600087803b15801561378d57600080fd5b505af11580156137a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c59190615736565b610100880151919550935084108015906137e457508561012001518310155b6138005760405162461bcd60e51b815260040161086e90615a5a565b509193509193565b826001600160a01b031661381b826117d6565b6001600160a01b0316146138605760405162461bcd60e51b8152600401808060200182810382526029815260200180615efb6029913960400191505060405180910390fd5b6001600160a01b0382166138a55760405162461bcd60e51b8152600401808060200182810382526024815260200180615dd86024913960400191505060405180910390fd5b6138b0838383610974565b6138bb600082613297565b6001600160a01b03831660009081526001602052604090206138dd90826145df565b506001600160a01b038216600090815260016020526040902061390090826145eb565b5061390d600282846145f7565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006114b5838361460d565b4690565b600061396f826117d6565b905061397d81600084610974565b613988600083613297565b60008281526008602052604090205460026000196101006001841615020190911604156139c65760008281526008602052604081206139c691615061565b6001600160a01b03811660009081526001602052604090206139e890836145df565b506139f4600283614671565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000613a3d83836133bd565b9050336001600160a01b038216146114b857600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015613a955750804710155b15613bb7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613af557600080fd5b505af1158015613b09573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613b8557600080fd5b505af1158015613b99573d6000803e3d6000fd5b505050506040513d6020811015613baf57600080fd5b50612a199050565b6001600160a01b038316301415613bd857613bd384838361402d565b612a19565b612a198484848461467d565b6000808080613bf38686614815565b909450925050505b9250929050565b60006110ea848484614890565b6000908152600c6020526040902080546bffffffffffffffffffffffff19811660016bffffffffffffffffffffffff9283169081019092161790915590565b3b151590565b6001600160a01b038216613caf576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613cb881613286565b15613d0a576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b613d1660008383610974565b6001600160a01b0382166000908152600160205260409020613d3890826145eb565b50613d45600282846145f7565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0382166000908152600a602052604090205469ffffffffffffffffffff16806114b85750600d8054600169ffffffffffffffffffff76010000000000000000000000000000000000000000000080840482168381019092160275ffffffffffffffffffffffffffffffffffffffffffff909316929092179092556001600160a01b038085166000908152600a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffff000000000000000000001686179055848352600b825291829020865181549085167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825591870151950180549287015162ffffff16600160a01b027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff969094169290911691909117939093161790915592915050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613f1e5780518252601f199092019160209182019101613eff565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f80576040519150601f19603f3d011682016040523d82523d6000602084013e613f85565b606091505b5050905080610974576040805162461bcd60e51b815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b613fe6848484613808565b613ff28484848461495a565b612a195760405162461bcd60e51b8152600401808060200182810382526032815260200180615d7f6032913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b602083106140d75780518252601f1990920191602091820191016140b8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614139576040519150601f19603f3d011682016040523d82523d6000602084013e61413e565b606091505b509150915081801561416c57508051158061416c575080806020019051602081101561416957600080fd5b50515b6117b9576040805162461bcd60e51b815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006114b58383614b36565b5490565b60008060008360020b126141e4578260020b6141ec565b8260020b6000035b9050620d89e8811115614246576040805162461bcd60e51b815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006001821661425a57600160801b61426c565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156142a0576ffff97272373d413259a46990580e213a0260801c5b60048216156142bf576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156142de576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156142fd576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561431c576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561433b576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561435a576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561437a576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561439a576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156143ba576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156143da576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156143fa576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561441a576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561443a576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561445a576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561447b576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561449b576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156144ba576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156144d7576b048a170391f7dc42444e8fa20260801c5b60008460020b13156144f25780600019816144ee57fe5b0490505b640100000000810615614506576001614509565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b0316111561453b579293925b846001600160a01b0316866001600160a01b0316116145665761455f858585614b4e565b90506145d6565b836001600160a01b0316866001600160a01b031610156145c857600061458d878686614b4e565b9050600061459c878986614bba565b9050806001600160801b0316826001600160801b0316106145bd57806145bf565b815b925050506145d6565b6145d3858584614bba565b90505b95945050505050565b60006114b58383614c00565b60006114b58383614cc6565b60006110ea84846001600160a01b038516614d10565b8154600090821061464f5760405162461bcd60e51b8152600401808060200182810382526022815260200180615d5d6022913960400191505060405180910390fd5b82600001828154811061465e57fe5b9060005260206000200154905092915050565b60006114b58383614da7565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b6020831061472f5780518252601f199092019160209182019101614710565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614791576040519150601f19603f3d011682016040523d82523d6000602084013e614796565b606091505b50915091508180156147c45750805115806147c457508080602001905160208110156147c157600080fd5b50515b6126f9576040805162461bcd60e51b815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8154600090819083106148595760405162461bcd60e51b8152600401808060200182810382526022815260200180615ed96022913960400191505060405180910390fd5b600084600001848154811061486a57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161492b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156148f05781810151838201526020016148d8565b50505050905090810190601f16801561491d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061493e57fe5b9060005260206000209060020201600101549150509392505050565b600061496e846001600160a01b0316613c4e565b61497a575060016110ea565b6000614acb7f150b7a02000000000000000000000000000000000000000000000000000000006149a8613293565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614a0f5781810151838201526020016149f7565b50505050905090810190601f168015614a3c5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001615d7f603291396001600160a01b0388169190614e7b565b90506000818060200190516020811015614ae457600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b60009081526001919091016020526040902054151590565b6000826001600160a01b0316846001600160a01b03161115614b6e579192915b6000614b9a856001600160a01b0316856001600160a01b03166c01000000000000000000000000613513565b90506145d6614bb584838888036001600160a01b0316613513565b614e8a565b6000826001600160a01b0316846001600160a01b03161115614bda579192915b6110ea614bb5836c010000000000000000000000008787036001600160a01b0316613513565b60008181526001830160205260408120548015614cbc5783546000198083019190810190600090879083908110614c3357fe5b9060005260206000200154905080876000018481548110614c5057fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614c8057fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506114b8565b60009150506114b8565b6000614cd28383614b36565b614d08575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556114b8565b5060006114b8565b600082815260018401602052604081205480614d7557505060408051808201825283815260208082018481528654600181810189556000898152848120955160029093029095019182559151908201558654868452818801909252929091205561350c565b82856000016001830381548110614d8857fe5b906000526020600020906002020160010181905550600091505061350c565b60008181526001830160205260408120548015614cbc5783546000198083019190810190600090879083908110614dda57fe5b9060005260206000209060020201905080876000018481548110614dfa57fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614e3957fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506114b89350505050565b60606110ea8484600085614ea0565b806001600160801b03811681146107ac57600080fd5b606082471015614ee15760405162461bcd60e51b8152600401808060200182810382526026815260200180615dfc6026913960400191505060405180910390fd5b614eea85613c4e565b614f3b576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614f795780518252601f199092019160209182019101614f5a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fdb576040519150601f19603f3d011682016040523d82523d6000602084013e614fe0565b606091505b5091509150614ff0828286614ffb565b979650505050505050565b6060831561500a57508161350c565b82511561501a5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156148f05781810151838201526020016148d8565b50805460018160011615610100020316600290046000825580601f1061508757506150a5565b601f0160209004906000526020600020908101906150a591906150a8565b50565b5b808211156150bd57600081556001016150a9565b5090565b80356107ac81615d06565b805161ffff811681146107ac57600080fd5b803562ffffff811681146107ac57600080fd5b600060208284031215615102578081fd5b813561350c81615d06565b6000806040838503121561511f578081fd5b823561512a81615d06565b9150602083013561513a81615d06565b809150509250929050565b6000806000806080858703121561515a578182fd5b843561516581615d06565b9350602085013561517581615d06565b9250615183604086016150de565b9150606085013561519381615d06565b939692955090935050565b6000806000606084860312156151b2578081fd5b83356151bd81615d06565b925060208401356151cd81615d06565b929592945050506040919091013590565b600080600080608085870312156151f3578182fd5b84356151fe81615d06565b9350602085013561520e81615d06565b925060408501359150606085013567ffffffffffffffff811115615230578182fd5b8501601f81018713615240578182fd5b803561525361524e82615cb8565b615c94565b818152886020838501011115615267578384fd5b81602084016020830137908101602001929092525092959194509250565b60008060408385031215615297578182fd5b82356152a281615d06565b9150602083013561513a81615d1b565b600080604083850312156152c4578182fd5b82356152cf81615d06565b946020939093013593505050565b6000806000606084860312156152f1578081fd5b83356152fc81615d06565b925060208401359150604084013561531381615d06565b809150509250925092565b60008060008060008060c08789031215615336578384fd5b863561534181615d06565b95506020870135945060408701359350606087013561535f81615d4d565b9598949750929560808101359460a0909101359350915050565b6000806020838503121561538b578182fd5b823567ffffffffffffffff808211156153a2578384fd5b818501915085601f8301126153b5578384fd5b8135818111156153c3578485fd5b86602080830285010111156153d6578485fd5b60209290920196919550909350505050565b6000602082840312156153f9578081fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461350c578182fd5b600060208284031215615439578081fd5b813561350c81615d29565b600060208284031215615455578081fd5b815167ffffffffffffffff81111561546b578182fd5b8201601f8101841361547b578182fd5b805161548961524e82615cb8565b81815285602083850101111561549d578384fd5b6145d6826020830160208601615cda565b6000608082840312156154bf578081fd5b50919050565b600060a082840312156154bf578081fd5b600060c082840312156154bf578081fd5b600081830360808112156154f9578182fd5b6040516040810167ffffffffffffffff828210818311171561551757fe5b816040526060841215615528578485fd5b60a083019350818410818511171561553c57fe5b50826040528435925061554e83615d06565b91825260208401359161556083615d06565b826060830152615572604086016150de565b60808301528152615585606085016150c1565b6020820152949350505050565b600061016082840312156154bf578081fd5b6000602082840312156155b5578081fd5b813561350c81615d38565b600080604083850312156155d2578182fd5b82516155dd81615d38565b602084015190925061513a81615d38565b600080600080600060a08688031215615605578283fd5b855161561081615d38565b809550506020860151935060408601519250606086015161563081615d38565b608087015190925061564181615d38565b809150509295509295909350565b600080600080600080600060e0888a031215615669578485fd5b875161567481615d06565b602089015190975061568581615d29565b9550615693604089016150cc565b94506156a1606089016150cc565b93506156af608089016150cc565b925060a08801516156bf81615d4d565b60c08901519092506156d081615d1b565b8091505092959891949750929550565b6000602082840312156156f1578081fd5b6114b5826150de565b60006020828403121561570b578081fd5b5035919050565b60008060408385031215615724578182fd5b82359150602083013561513a81615d06565b60008060408385031215615748578182fd5b505080516020909101519092909150565b6000806000806060858703121561576e578182fd5b8435935060208501359250604085013567ffffffffffffffff80821115615793578384fd5b818701915087601f8301126157a6578384fd5b8135818111156157b4578485fd5b8860208285010111156157c5578485fd5b95989497505060200194505050565b600081518084526157ec816020860160208601615cda565b601f01601f19169290920160200192915050565b60020b9052565b6001600160801b03169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b03871682528560020b60208301528460020b60408301526001600160801b038416606083015260a06080830152614ff060a08301846157d4565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039390931683526001600160801b03918216602084015216604082015260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015615953577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526159418583516157d4565b94509285019290850190600101615907565b5092979650505050505050565b901515815260200190565b90815260200190565b6001600160a01b03929092168252602082015260400190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b6000602082526114b560208301846157d4565b6020808252600c908201527f4e6f7420617070726f7665640000000000000000000000000000000000000000604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f507269636520736c69707061676520636865636b000000000000000000000000604082015260600190565b60208082526010908201527f496e76616c696420746f6b656e20494400000000000000000000000000000000604082015260600190565b6020808252600b908201527f4e6f7420636c6561726564000000000000000000000000000000000000000000604082015260600190565b815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b6001600160801b039390931683526020830191909152604082015260600190565b9384526001600160801b039290921660208401526040830152606082015260800190565b918252602082015260400190565b6bffffffffffffffffffffffff8d1681526001600160a01b038c811660208301528b811660408301528a16606082015262ffffff89166080820152600288900b60a08201526101808101615be960c0830189615800565b615bf660e0830188615807565b8561010083015284610120830152615c12610140830185615807565b615c20610160830184615807565b9d9c50505050505050505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615c65578283fd5b83018035915067ffffffffffffffff821115615c7f578283fd5b602001915036819003821315613bfb57600080fd5b60405181810167ffffffffffffffff81118282101715615cb057fe5b604052919050565b600067ffffffffffffffff821115615ccc57fe5b50601f01601f191660200190565b60005b83811015615cf5578181015183820152602001615cdd565b83811115612a195750506000910152565b6001600160a01b03811681146150a557600080fd5b80151581146150a557600080fd5b8060020b81146150a557600080fd5b6001600160801b03811681146150a557600080fd5b60ff811681146150a557600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732315065726d69743a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a164736f6c6343000706000a","opcodes":"PUSH2 0x120 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 0x6331 CODESIZE SUB DUP1 PUSH3 0x6331 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x57 SWAP2 PUSH3 0x2E1 JUMP JUMPDEST DUP3 DUP3 DUP3 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x417374726144455820434C20506F736974696F6E73204E46542D563100000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH10 0x4153542D434C2D504F53 PUSH1 0xB0 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 0xE9 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH3 0x193 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 MLOAD PUSH3 0xFE SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x218 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x114 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x218 JUMP JUMPDEST POP PUSH3 0x127 PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH3 0x193 JUMP JUMPDEST PUSH3 0x139 PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH3 0x193 JUMP JUMPDEST PUSH3 0x14B PUSH4 0x780E9D63 PUSH1 0xE0 SHL PUSH3 0x193 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 SWAP1 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP2 SWAP1 SHL AND PUSH2 0x100 MSTORE POP PUSH3 0x32A SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x1F3 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 0x250 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x29B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x26B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x29B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x29B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x29B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x27E JUMP JUMPDEST POP PUSH3 0x2A9 SWAP3 SWAP2 POP PUSH3 0x2AD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2A9 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2AE JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x2F6 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH3 0x301 DUP5 PUSH3 0x2C4 JUMP JUMPDEST SWAP3 POP PUSH3 0x311 PUSH1 0x20 DUP6 ADD PUSH3 0x2C4 JUMP JUMPDEST SWAP2 POP PUSH3 0x321 PUSH1 0x40 DUP6 ADD PUSH3 0x2C4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x5F82 PUSH3 0x3AF PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2B41 MSTORE POP DUP1 PUSH2 0x2B4 MSTORE DUP1 PUSH2 0x227A MSTORE DUP1 PUSH2 0x2705 MSTORE DUP1 PUSH2 0x27FB MSTORE DUP1 PUSH2 0x3A56 MSTORE DUP1 PUSH2 0x3A9C MSTORE DUP1 PUSH2 0x3B10 MSTORE POP DUP1 PUSH2 0xAE2 MSTORE DUP1 PUSH2 0xE07 MSTORE DUP1 PUSH2 0xECE MSTORE DUP1 PUSH2 0x1757 MSTORE DUP1 PUSH2 0x2AC9 MSTORE DUP1 PUSH2 0x2E84 MSTORE DUP1 PUSH2 0x361A MSTORE POP DUP1 PUSH2 0x1528 MSTORE POP DUP1 PUSH2 0x1507 MSTORE POP PUSH2 0x5F82 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2A4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C0360EB GT PUSH2 0x16E JUMPI DUP1 PUSH4 0xAC9650D8 GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x730 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x750 JUMPI DUP1 PUSH4 0xFC6F7865 EQ PUSH2 0x763 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x6FD JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x71D JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0xC2E3140A GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x6CD JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x6E0 JUMPI DUP1 PUSH4 0xC53AF304 EQ PUSH2 0x6F5 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x68D JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x6AD JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x122 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x667 JUMPI DUP1 PUSH4 0xA98CE37F EQ PUSH2 0x67A JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x99FBAB88 EQ PUSH2 0x60F JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x7AC2FF7B GT PUSH2 0x153 JUMPI DUP1 PUSH4 0x7AC2FF7B EQ PUSH2 0x5AF JUMPI DUP1 PUSH4 0x88316456 EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x5E5 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x58F JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x2F745C59 GT PUSH2 0x21C JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x4CB42D2D GT PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x4CB42D2D EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x55A JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x42966C68 EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x507 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x201 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x49F JUMPI DUP1 PUSH4 0x3BEB26C4 EQ PUSH2 0x4B4 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x4D4 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x48A JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0xC49CCBE GT PUSH2 0x273 JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x258 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x219F5D17 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x44A JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0xC49CCBE EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x3F3 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x32D JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3B2 JUMPI PUSH2 0x328 JUMP JUMPDEST CALLDATASIZE PUSH2 0x328 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x326 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 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 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x34D PUSH2 0x348 CALLDATASIZE PUSH1 0x4 PUSH2 0x53E8 JUMP JUMPDEST PUSH2 0x776 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x5960 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x378 PUSH2 0x7B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x59B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x847 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x5824 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x3CD CALLDATASIZE PUSH1 0x4 PUSH2 0x52B2 JUMP JUMPDEST PUSH2 0x8A3 JUMP JUMPDEST PUSH2 0x3E5 PUSH2 0x3E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x54C5 JUMP JUMPDEST PUSH2 0x979 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP3 SWAP2 SWAP1 PUSH2 0x5B84 JUMP JUMPDEST PUSH2 0x3A5 PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x5145 JUMP JUMPDEST PUSH2 0xDE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH2 0x43B PUSH2 0x436 CALLDATASIZE PUSH1 0x4 PUSH2 0x54D6 JUMP JUMPDEST PUSH2 0x1103 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x519E JUMP JUMPDEST PUSH2 0x143C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x52B2 JUMP JUMPDEST PUSH2 0x1493 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x14BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x14E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x4CF CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x15A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x4EF CALLDATASIZE PUSH1 0x4 PUSH2 0x519E JUMP JUMPDEST PUSH2 0x15A5 JUMP JUMPDEST PUSH2 0x326 PUSH2 0x502 CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x15C0 JUMP JUMPDEST PUSH2 0x326 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x531E JUMP JUMPDEST PUSH2 0x168F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x535 CALLDATASIZE PUSH1 0x4 PUSH2 0x5759 JUMP JUMPDEST PUSH2 0x1742 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x555 CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x17C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x575 CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x17D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x378 PUSH2 0x17FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x50F1 JUMP JUMPDEST PUSH2 0x1803 JUMP JUMPDEST PUSH2 0x326 PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x531E JUMP JUMPDEST PUSH2 0x186B JUMP JUMPDEST PUSH2 0x5D5 PUSH2 0x5D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x5592 JUMP JUMPDEST PUSH2 0x1D17 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x2278 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x378 PUSH2 0x229C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x62F PUSH2 0x62A CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x22FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x662 CALLDATASIZE PUSH1 0x4 PUSH2 0x5285 JUMP JUMPDEST PUSH2 0x252C JUMP JUMPDEST PUSH2 0x326 PUSH2 0x675 CALLDATASIZE PUSH1 0x4 PUSH2 0x531E JUMP JUMPDEST PUSH2 0x264F JUMP JUMPDEST PUSH2 0x326 PUSH2 0x688 CALLDATASIZE PUSH1 0x4 PUSH2 0x5712 JUMP JUMPDEST PUSH2 0x2701 JUMP JUMPDEST PUSH2 0x6A0 PUSH2 0x69B CALLDATASIZE PUSH1 0x4 PUSH2 0x5379 JUMP JUMPDEST PUSH2 0x2881 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x58E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x51DE JUMP JUMPDEST PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x326 PUSH2 0x6DB CALLDATASIZE PUSH1 0x4 PUSH2 0x531E JUMP JUMPDEST PUSH2 0x2A1F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x2AC7 JUMP JUMPDEST PUSH2 0x326 PUSH2 0x2AEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x378 PUSH2 0x718 CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x2AFD JUMP JUMPDEST PUSH2 0x326 PUSH2 0x72B CALLDATASIZE PUSH1 0x4 PUSH2 0x52DD JUMP JUMPDEST PUSH2 0x2BCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x34D PUSH2 0x74B CALLDATASIZE PUSH1 0x4 PUSH2 0x510D JUMP JUMPDEST PUSH2 0x2CAF JUMP JUMPDEST PUSH2 0x326 PUSH2 0x75E CALLDATASIZE PUSH1 0x4 PUSH2 0x531E JUMP JUMPDEST PUSH2 0x2CDD JUMP JUMPDEST PUSH2 0x3E5 PUSH2 0x771 CALLDATASIZE PUSH1 0x4 PUSH2 0x54AE JUMP JUMPDEST PUSH2 0x2D68 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 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 0x83D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x812 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x83D 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 0x820 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x852 DUP3 PUSH2 0x3286 JUMP JUMPDEST PUSH2 0x877 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x59FD 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 PUSH13 0x1000000000000000000000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8AE DUP3 PUSH2 0x17D6 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 0x901 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 0x5F24 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 0x913 PUSH2 0x3293 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x92F JUMPI POP PUSH2 0x92F DUP2 PUSH2 0x74B PUSH2 0x3293 JUMP JUMPDEST PUSH2 0x96A 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 0x5E4E PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x974 DUP4 DUP4 PUSH2 0x3297 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x988 CALLER DUP3 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x9A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x59C6 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0x9B2 PUSH2 0x33B7 JUMP JUMPDEST GT ISZERO PUSH2 0xA05 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA17 PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0xA2A 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 0xA65 SWAP2 DUP10 ADD SWAP1 DUP10 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0xA83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP3 DUP2 ADD SLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0xB07 PUSH32 0x0 DUP4 PUSH2 0x33BD JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA34123A7 SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0xB4D PUSH1 0x40 DUP15 ADD PUSH1 0x20 DUP16 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB6B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x598D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBBC SWAP2 SWAP1 PUSH2 0x5736 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD DUP9 LT DUP1 ISZERO SWAP1 PUSH2 0xBD9 JUMPI POP DUP9 PUSH1 0x60 ADD CALLDATALOAD DUP8 LT ISZERO JUMPDEST PUSH2 0xBF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x5A5A JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0xC25 SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x34B9 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 0xC56 SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA6 SWAP2 SWAP1 PUSH2 0x55EE JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0xCCB DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3513 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xD15 SWAP2 SWAP1 DUP4 SUB SWAP1 DUP9 AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3513 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 0xD5B PUSH1 0x40 DUP14 ADD PUSH1 0x20 DUP15 ADD PUSH2 0x55A4 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 0xDBE SWAP2 SWAP1 PUSH2 0x55A4 JUMP JUMPDEST DUP14 DUP14 PUSH1 0x40 MLOAD PUSH2 0xDCF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP SWAP2 POP SWAP2 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 0xE05 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 0xE90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEA4 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 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1009 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 0xF59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF6D 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 0xF83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF637731D00000000000000000000000000000000000000000000000000000000 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 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 PUSH2 0x10EA 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 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1058 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 0x106E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x10E8 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 0x10CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10E3 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 0x10FE PUSH1 0x2 PUSH2 0x35C2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0xA0 ADD CALLDATALOAD DUP1 PUSH2 0x1116 PUSH2 0x33B7 JUMP JUMPDEST GT ISZERO PUSH2 0x1169 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 PUSH11 0x100000000000000000000 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 0x1255 SWAP1 PUSH2 0x35CD JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD SWAP4 SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x128F SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x34B9 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 0x12C0 SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1310 SWAP2 SWAP1 PUSH2 0x55EE JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x134C 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 0x3513 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP1 SWAP4 ADD DUP4 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x139C SWAP3 SWAP2 DUP5 SUB SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV AND SWAP1 PUSH2 0x3513 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 DUP5 MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP9 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 DUP9 ADD DUP4 SWAP1 SSTORE PUSH1 0x1 DUP9 ADD DUP1 SLOAD DUP4 DUP2 DIV DUP4 AND DUP15 ADD DUP4 AND SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP12 CALLDATALOAD SWAP1 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F SWAP1 PUSH2 0x1426 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH2 0x5B3F 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 0x144D PUSH2 0x1447 PUSH2 0x3293 JUMP JUMPDEST DUP3 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x1488 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 0x5F45 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x974 DUP4 DUP4 DUP4 PUSH2 0x3808 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 0x14B5 SWAP1 DUP4 PUSH2 0x3954 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 0x154F PUSH2 0x3960 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 0xE SSTORE JUMP JUMPDEST PUSH2 0x974 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x29C1 JUMP JUMPDEST DUP1 PUSH2 0x15CB CALLER DUP3 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x15E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x59C6 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 0x1622 JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1640 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 PUSH2 0x165C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x5AC8 JUMP 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 ADD SSTORE PUSH2 0x974 DUP4 PUSH2 0x3964 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 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 0x1722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1736 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 PUSH2 0x1750 DUP3 DUP5 ADD DUP5 PUSH2 0x54E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x1780 PUSH32 0x0 DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x3A31 JUMP JUMPDEST POP DUP5 ISZERO PUSH2 0x179B JUMPI DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x179B SWAP2 SWAP1 CALLER DUP9 PUSH2 0x3A54 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x17B9 JUMPI PUSH2 0x17B9 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x3A54 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17CE PUSH1 0x2 DUP5 PUSH2 0x3BE4 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B8 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5EB0 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0x3C02 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x184A 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 0x5E86 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 0x14B8 SWAP1 PUSH2 0x35C2 JUMP JUMPDEST DUP4 PUSH2 0x1874 PUSH2 0x33B7 JUMP JUMPDEST GT ISZERO PUSH2 0x18C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5065726D69742065787069726564000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18D1 PUSH2 0x14E2 JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP9 DUP9 PUSH2 0x18FD DUP2 PUSH2 0x3C0F 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 DUP11 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 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 0x19A0 DUP8 PUSH2 0x17D6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x19F3 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 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DB1 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19FC DUP2 PUSH2 0x3C4E JUMP JUMPDEST ISZERO PUSH2 0x1BD7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP10 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 PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 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 0x1AC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1AAE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AF3 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 0x1B11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B25 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 0x1B3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1BD2 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 PUSH32 0x556E617574686F72697A65640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP8 DUP8 DUP8 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 0x1C33 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 PUSH2 0x1C9B 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 PUSH32 0x496E76616C6964207369676E6174757265000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1D01 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 PUSH32 0x556E617574686F72697A65640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x1D0D DUP9 DUP9 PUSH2 0x3297 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH2 0x140 ADD CALLDATALOAD DUP1 PUSH2 0x1D2C PUSH2 0x33B7 JUMP JUMPDEST GT ISZERO PUSH2 0x1D7F 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1E4B SWAP1 DUP1 PUSH2 0x1DA0 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x50F1 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 0x1DC1 SWAP2 SWAP1 PUSH2 0x50F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DDF PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x56E0 JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x1DFF PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x5428 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E17 PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x5428 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 0x35CD JUMP JUMPDEST SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH2 0x1EBF PUSH2 0x1E6A PUSH2 0x140 DUP10 ADD PUSH2 0x120 DUP11 ADD PUSH2 0x50F1 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 DUP2 AND PUSH1 0x1 PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP8 POP DUP8 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EEA ADDRESS PUSH2 0x1ED5 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x5428 JUMP JUMPDEST PUSH2 0x1EE5 PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x5428 JUMP JUMPDEST PUSH2 0x34B9 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 0x1F1B SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F6B SWAP2 SWAP1 PUSH2 0x55EE JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0x1FE4 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP15 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1F96 SWAP2 SWAP1 PUSH2 0x50F1 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 0x1FB7 SWAP2 SWAP1 PUSH2 0x50F1 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 0x1FD8 SWAP2 SWAP1 PUSH2 0x56E0 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE PUSH2 0x3D82 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x203C SWAP2 SWAP1 PUSH2 0x5428 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2054 PUSH1 0xA0 DUP15 ADD PUSH1 0x80 DUP16 ADD PUSH2 0x5428 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 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 SWAP1 POP POP DUP10 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x2263 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH32 0x0 DUP2 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 0x83D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x812 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x83D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x140 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH13 0x1000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH11 0x100000000000000000000 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 SWAP1 SWAP3 ADD SLOAD DUP1 DUP4 AND PUSH2 0x100 DUP7 ADD MSTORE DIV AND PUSH2 0x120 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 0x2406 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x5A91 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0x2534 PUSH2 0x3293 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x259A 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 PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x25A7 PUSH2 0x3293 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 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x2609 PUSH2 0x3293 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 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 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 0x26B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26CD 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 0x26E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x26F9 JUMPI PUSH2 0x26F9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x168F JUMP JUMPDEST 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 0x2770 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2784 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 0x279A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x27F3 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 PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x974 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 0x285F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2873 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x974 DUP3 DUP3 PUSH2 0x3ED2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x289A 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 0x28CE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x28B9 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x29BA JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x28EC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x28FE SWAP2 SWAP1 PUSH2 0x5C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x290C SWAP3 SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2947 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 0x294C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2998 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x2965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x297F SWAP2 SWAP1 PUSH2 0x5444 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP2 SWAP1 PUSH2 0x59B3 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x29A5 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x28D4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x29D2 PUSH2 0x29CC PUSH2 0x3293 JUMP JUMPDEST DUP4 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x2A0D 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 0x5F45 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A19 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3FDB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 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 0x2A87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A9B 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 0x2AB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x26F9 JUMPI PUSH2 0x26F9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2CDD JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0x2AFB JUMPI PUSH2 0x2AFB CALLER SELFBALANCE PUSH2 0x3ED2 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2B08 DUP3 PUSH2 0x3286 JUMP JUMPDEST PUSH2 0x2B11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE9DC637500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE9DC6375 SWAP1 PUSH2 0x2B78 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5974 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA4 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 0x14B8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5444 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 0x2C1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C2F 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 0x2C45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x2C9E 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 PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2A19 JUMPI PUSH2 0x2A19 DUP5 DUP4 DUP4 PUSH2 0x402D 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 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 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 0x1722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x2D77 CALLER DUP3 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x2D93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x59C6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DA5 PUSH1 0x60 DUP7 ADD PUSH1 0x40 DUP8 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT DUP1 PUSH2 0x2DD2 JUMPI POP PUSH1 0x0 PUSH2 0x2DC7 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST PUSH2 0x2DDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DEE PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x50F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2E11 JUMPI PUSH2 0x2E0C PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x50F1 JUMP JUMPDEST PUSH2 0x2E13 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0x2EA9 PUSH32 0x0 DUP4 PUSH2 0x33BD 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 0x30C6 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0xA34123A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xA34123A7 SWAP2 PUSH2 0x2F40 SWAP2 PUSH11 0x100000000000000000000 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 0x598D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F91 SWAP2 SWAP1 PUSH2 0x5736 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 0x2FD6 SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x34B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FF2 SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x300A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x301E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3042 SWAP2 SWAP1 PUSH2 0x55EE JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x307E 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 0x3513 JUMP JUMPDEST DUP5 ADD SWAP4 POP PUSH2 0x30B7 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 0x3513 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 0x30E3 PUSH1 0x60 DUP15 ADD PUSH1 0x40 DUP16 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x3106 JUMPI PUSH2 0x3101 PUSH1 0x60 DUP14 ADD PUSH1 0x40 DUP15 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH2 0x3108 JUMP JUMPDEST DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP14 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3125 SWAP2 SWAP1 PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x3148 JUMPI PUSH2 0x3143 PUSH1 0x80 DUP15 ADD PUSH1 0x60 DUP16 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH2 0x314A JUMP JUMPDEST DUP4 JUMPDEST PUSH1 0x1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0x4F1EB3D800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0x4F1EB3D8 SWAP2 PUSH2 0x31BD SWAP2 DUP13 SWAP2 PUSH11 0x100000000000000000000 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 0x587B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x320E SWAP2 SWAP1 PUSH2 0x55C0 JUMP JUMPDEST PUSH1 0x4 DUP10 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xDCF SWAP1 DUP12 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH2 0x58B8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B8 PUSH1 0x2 DUP4 PUSH2 0x41BD JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x32E2 DUP3 PUSH2 0x17D6 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 0x3326 DUP3 PUSH2 0x3286 JUMP JUMPDEST PUSH2 0x3361 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 0x5E22 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x336C DUP4 PUSH2 0x17D6 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 0x33A7 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x339C DUP5 PUSH2 0x847 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x10EA JUMPI POP PUSH2 0x10EA DUP2 DUP6 PUSH2 0x2CAF JUMP JUMPDEST PUSH1 0xE SLOAD SWAP1 JUMP 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 0x33E5 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 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 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 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3549 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x353E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x350C JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B8 DUP3 PUSH2 0x41C9 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 0x363F PUSH32 0x0 DUP3 PUSH2 0x33BD 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 0x367C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3690 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x36B4 SWAP2 SWAP1 PUSH2 0x564F JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x36CB DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x36DC DUP10 PUSH1 0xA0 ADD MLOAD PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x36F3 DUP4 DUP4 DUP4 DUP13 PUSH1 0xC0 ADD MLOAD DUP14 PUSH1 0xE0 ADD MLOAD PUSH2 0x451B 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 0x3745 SWAP2 SWAP1 PUSH2 0x5AFF 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 0x3774 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5838 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x378D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37C5 SWAP2 SWAP1 PUSH2 0x5736 JUMP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP DUP5 LT DUP1 ISZERO SWAP1 PUSH2 0x37E4 JUMPI POP DUP6 PUSH2 0x120 ADD MLOAD DUP4 LT ISZERO JUMPDEST PUSH2 0x3800 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x5A5A JUMP JUMPDEST POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x381B DUP3 PUSH2 0x17D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3860 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 0x5EFB 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 0x38A5 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 0x5DD8 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x38B0 DUP4 DUP4 DUP4 PUSH2 0x974 JUMP JUMPDEST PUSH2 0x38BB PUSH1 0x0 DUP3 PUSH2 0x3297 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 0x38DD SWAP1 DUP3 PUSH2 0x45DF 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 0x3900 SWAP1 DUP3 PUSH2 0x45EB JUMP JUMPDEST POP PUSH2 0x390D PUSH1 0x2 DUP3 DUP5 PUSH2 0x45F7 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 0x14B5 DUP4 DUP4 PUSH2 0x460D JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x396F DUP3 PUSH2 0x17D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x397D DUP2 PUSH1 0x0 DUP5 PUSH2 0x974 JUMP JUMPDEST PUSH2 0x3988 PUSH1 0x0 DUP4 PUSH2 0x3297 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 0x39C6 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x39C6 SWAP2 PUSH2 0x5061 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 0x39E8 SWAP1 DUP4 PUSH2 0x45DF JUMP JUMPDEST POP PUSH2 0x39F4 PUSH1 0x2 DUP4 PUSH2 0x4671 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A3D DUP4 DUP4 PUSH2 0x33BD JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x14B8 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 0x3A95 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x3BB7 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 0x3AF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B09 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 0x3B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B99 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 0x3BAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A19 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x3BD8 JUMPI PUSH2 0x3BD3 DUP5 DUP4 DUP4 PUSH2 0x402D JUMP JUMPDEST PUSH2 0x2A19 JUMP JUMPDEST PUSH2 0x2A19 DUP5 DUP5 DUP5 DUP5 PUSH2 0x467D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x3BF3 DUP7 DUP7 PUSH2 0x4815 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 DUP5 PUSH2 0x4890 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3CAF 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 0x3CB8 DUP2 PUSH2 0x3286 JUMP JUMPDEST ISZERO PUSH2 0x3D0A 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 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3D16 PUSH1 0x0 DUP4 DUP4 PUSH2 0x974 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 0x3D38 SWAP1 DUP3 PUSH2 0x45EB JUMP JUMPDEST POP PUSH2 0x3D45 PUSH1 0x2 DUP3 DUP5 PUSH2 0x45F7 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x14B8 JUMPI POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH10 0xFFFFFFFFFFFFFFFFFFFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP5 DIV DUP3 AND DUP4 DUP2 ADD SWAP1 SWAP3 AND MUL PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000 AND DUP7 OR SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD SWAP1 DUP6 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 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 PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 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 0x3F1E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3EFF 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 0x3F80 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 0x3F85 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x974 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 PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FE6 DUP5 DUP5 DUP5 PUSH2 0x3808 JUMP JUMPDEST PUSH2 0x3FF2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x495A JUMP JUMPDEST PUSH2 0x2A19 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 0x5D7F 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 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 0x40D7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x40B8 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 0x4139 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 0x413E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x416C JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x416C JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x17B9 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 PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x14B5 DUP4 DUP4 PUSH2 0x4B36 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x41E4 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x41EC JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x4246 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 PUSH32 0x5400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x425A JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x426C JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x42A0 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x42BF JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x42DE JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x42FD JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x431C JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x433B JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x435A JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x437A JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x439A JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x43BA JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x43DA JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x43FA JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x441A JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x443A JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x445A JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x447B JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x449B JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x44BA JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x44D7 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x44F2 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x44EE JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x4506 JUMPI PUSH1 0x1 PUSH2 0x4509 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 0x453B 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 0x4566 JUMPI PUSH2 0x455F DUP6 DUP6 DUP6 PUSH2 0x4B4E JUMP JUMPDEST SWAP1 POP PUSH2 0x45D6 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 0x45C8 JUMPI PUSH1 0x0 PUSH2 0x458D DUP8 DUP7 DUP7 PUSH2 0x4B4E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x459C DUP8 DUP10 DUP7 PUSH2 0x4BBA 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 0x45BD JUMPI DUP1 PUSH2 0x45BF JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x45D6 JUMP JUMPDEST PUSH2 0x45D3 DUP6 DUP6 DUP5 PUSH2 0x4BBA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B5 DUP4 DUP4 PUSH2 0x4C00 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B5 DUP4 DUP4 PUSH2 0x4CC6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x4D10 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x464F 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 0x5D5D 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 0x465E 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 0x14B5 DUP4 DUP4 PUSH2 0x4DA7 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 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 0x472F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4710 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 0x4791 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 0x4796 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x47C4 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x47C4 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x26F9 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 PUSH32 0x5354460000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x4859 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 0x5ED9 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 0x486A 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 0x492B 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 0x48F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48D8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x491D 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 0x493E 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 0x496E DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C4E JUMP JUMPDEST PUSH2 0x497A JUMPI POP PUSH1 0x1 PUSH2 0x10EA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4ACB PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x49A8 PUSH2 0x3293 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 0x4A0F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x49F7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4A3C 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x5D7F PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x4E7B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 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 0x4B6E JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x4B9A DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH13 0x1000000000000000000000000 PUSH2 0x3513 JUMP JUMPDEST SWAP1 POP PUSH2 0x45D6 PUSH2 0x4BB5 DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3513 JUMP JUMPDEST PUSH2 0x4E8A 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 0x4BDA JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x10EA PUSH2 0x4BB5 DUP4 PUSH13 0x1000000000000000000000000 DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3513 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CBC JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4C33 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 0x4C50 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 0x4C80 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 0x14B8 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x14B8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CD2 DUP4 DUP4 PUSH2 0x4B36 JUMP JUMPDEST PUSH2 0x4D08 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 0x14B8 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x14B8 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x4D75 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 0x350C JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x4D88 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 0x350C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CBC JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4DDA 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 0x4DFA 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 0x4E39 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 0x14B8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x10EA DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x4EA0 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4EE1 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 0x5DFC PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4EEA DUP6 PUSH2 0x3C4E JUMP JUMPDEST PUSH2 0x4F3B 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 0x4F79 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4F5A 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 0x4FDB 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 0x4FE0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4FF0 DUP3 DUP3 DUP7 PUSH2 0x4FFB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x500A JUMPI POP DUP2 PUSH2 0x350C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x501A 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 0x48F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48D8 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 0x5087 JUMPI POP PUSH2 0x50A5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x50A5 SWAP2 SWAP1 PUSH2 0x50A8 JUMP JUMPDEST POP JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x50BD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x50A9 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x7AC DUP2 PUSH2 0x5D06 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5102 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x350C DUP2 PUSH2 0x5D06 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x511F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x512A DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x513A DUP2 PUSH2 0x5D06 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 0x515A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5165 DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x5175 DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP3 POP PUSH2 0x5183 PUSH1 0x40 DUP7 ADD PUSH2 0x50DE JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x5193 DUP2 PUSH2 0x5D06 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 0x51B2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x51BD DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x51CD DUP2 PUSH2 0x5D06 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 0x51F3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x51FE DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x520E DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5230 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x5240 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x5253 PUSH2 0x524E DUP3 PUSH2 0x5CB8 JUMP JUMPDEST PUSH2 0x5C94 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x5267 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 0x5297 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x52A2 DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x513A DUP2 PUSH2 0x5D1B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x52CF DUP2 PUSH2 0x5D06 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 0x52F1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x52FC DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x5313 DUP2 PUSH2 0x5D06 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 0x5336 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5341 DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x535F DUP2 PUSH2 0x5D4D 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 0x538B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x53A2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x53B5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x53C3 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x53D6 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 0x53F9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x350C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5439 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x350C DUP2 PUSH2 0x5D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5455 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x546B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x547B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5489 PUSH2 0x524E DUP3 PUSH2 0x5CB8 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x549D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x45D6 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5CDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54BF JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54BF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54BF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x54F9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x5517 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE PUSH1 0x60 DUP5 SLT ISZERO PUSH2 0x5528 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP4 POP DUP2 DUP5 LT DUP2 DUP6 GT OR ISZERO PUSH2 0x553C JUMPI INVALID JUMPDEST POP DUP3 PUSH1 0x40 MSTORE DUP5 CALLDATALOAD SWAP3 POP PUSH2 0x554E DUP4 PUSH2 0x5D06 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 PUSH2 0x5560 DUP4 PUSH2 0x5D06 JUMP JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x5572 PUSH1 0x40 DUP7 ADD PUSH2 0x50DE JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x5585 PUSH1 0x60 DUP6 ADD PUSH2 0x50C1 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 0x54BF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55B5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x350C DUP2 PUSH2 0x5D38 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x55D2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x55DD DUP2 PUSH2 0x5D38 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x513A DUP2 PUSH2 0x5D38 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5605 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x5610 DUP2 PUSH2 0x5D38 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 0x5630 DUP2 PUSH2 0x5D38 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x5641 DUP2 PUSH2 0x5D38 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 0x5669 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x5674 DUP2 PUSH2 0x5D06 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH2 0x5685 DUP2 PUSH2 0x5D29 JUMP JUMPDEST SWAP6 POP PUSH2 0x5693 PUSH1 0x40 DUP10 ADD PUSH2 0x50CC JUMP JUMPDEST SWAP5 POP PUSH2 0x56A1 PUSH1 0x60 DUP10 ADD PUSH2 0x50CC JUMP JUMPDEST SWAP4 POP PUSH2 0x56AF PUSH1 0x80 DUP10 ADD PUSH2 0x50CC JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH2 0x56BF DUP2 PUSH2 0x5D4D JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x56D0 DUP2 PUSH2 0x5D1B 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 0x56F1 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x14B5 DUP3 PUSH2 0x50DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x570B JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5724 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x513A DUP2 PUSH2 0x5D06 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5748 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 0x576E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5793 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x57A6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x57B4 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x57C5 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 0x57EC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5CDA 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 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x2 SIGNEXTEND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x4FF0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x57D4 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 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 0x5953 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x5941 DUP6 DUP4 MLOAD PUSH2 0x57D4 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5907 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 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 0x14B5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x57D4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F7420617070726F7665640000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x507269636520736C69707061676520636865636B000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420746F6B656E20494400000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F7420636C6561726564000000000000000000000000000000000000000000 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 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x5BE9 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x5800 JUMP JUMPDEST PUSH2 0x5BF6 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x5807 JUMP JUMPDEST DUP6 PUSH2 0x100 DUP4 ADD MSTORE DUP5 PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x5C12 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x5807 JUMP JUMPDEST PUSH2 0x5C20 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x5807 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5C65 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5C7F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3BFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5CB0 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5CCC 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 0x5CF5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5CDD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2A19 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x50A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x50A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x50A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x50A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x50A5 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 POP PUSH6 0x726D69743A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 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 0x73206E6F74206F776E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA164736F6C PUSH4 0x43000706 STOP EXP ","sourceMap":"129:444:55:-:0;;;2447:27:28;;;-1:-1:-1;;;;;;2447:27:28;2473:1;2447:27;-1:-1:-1;;;;;2558:30:28;-1:-1:-1;;;2558:30:28;;;228:165:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;356:8;366:5;373:16;2949:8:28;2959:5;1020:204:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1020:204:30;;;;;;;;;;;;;;;;-1:-1:-1;;;1020:204:30;;;1107:5;1114:7;751:40:14;427:10;770:20;;751:18;;;:40;;:::i;:::-;3636:13:18;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3659:17:18;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3764:40:18;-1:-1:-1;;;3764:18:18;:40::i;:::-;3814:49;-1:-1:-1;;;3814:18:18;:49::i;:::-;3873:51;-1:-1:-1;;;3873:18:18;:51::i;:::-;-1:-1:-1;;1144:23:30;;::::1;::::0;;::::1;::::0;1133:34:::1;::::0;1191:26;;;::::1;::::0;;;;1177:40:::1;::::0;-1:-1:-1;;;;;;;520:18:33;;;;;;;;548:12;;;;;;;2976:36:28;;;;::::2;::::0;-1:-1:-1;129:444:55;;-1:-1:-1;;;;129:444:55;1490:198:14;-1:-1:-1;;;;;;1573:25:14;;;;;1565:66;;;;;-1:-1:-1;;;1565:66:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1641:33:14;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1641:40:14;1677:4;1641:40;;;1490:198::o;129:444:55:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;129:444:55;;;-1:-1:-1;129:444:55;:::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:394::-;;;;355:2;343:9;334:7;330:23;326:32;323:2;;;376:6;368;361:22;323:2;404:42;436:9;404:42;:::i;:::-;394:52;;465:51;512:2;501:9;497:18;465:51;:::i;:::-;455:61;;535:51;582:2;571:9;567:18;535:51;:::i;:::-;525:61;;313:279;;;;;:::o;:::-;129:444:55;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:25340: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":"846:315:56","statements":[{"body":{"nodeType":"YulBlock","src":"892:26:56","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"901:6:56"},{"name":"value1","nodeType":"YulIdentifier","src":"909:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"894:6:56"},"nodeType":"YulFunctionCall","src":"894:22:56"},"nodeType":"YulExpressionStatement","src":"894:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"867:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"876:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"863:3:56"},"nodeType":"YulFunctionCall","src":"863:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"888:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"859:3:56"},"nodeType":"YulFunctionCall","src":"859:32:56"},"nodeType":"YulIf","src":"856:2:56"},{"nodeType":"YulVariableDeclaration","src":"927:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"953:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"940:12:56"},"nodeType":"YulFunctionCall","src":"940:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"931:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"999:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"972:26:56"},"nodeType":"YulFunctionCall","src":"972:33:56"},"nodeType":"YulExpressionStatement","src":"972:33:56"},{"nodeType":"YulAssignment","src":"1014:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"1024:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1014:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1038:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1070:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1081:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1066:3:56"},"nodeType":"YulFunctionCall","src":"1066:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1053:12:56"},"nodeType":"YulFunctionCall","src":"1053:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1042:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1121:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1094:26:56"},"nodeType":"YulFunctionCall","src":"1094:35:56"},"nodeType":"YulExpressionStatement","src":"1094:35:56"},{"nodeType":"YulAssignment","src":"1138:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1148:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1138:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"804:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"815:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"827:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"835:6:56","type":""}],"src":"759:402:56"},{"body":{"nodeType":"YulBlock","src":"1286:500:56","statements":[{"body":{"nodeType":"YulBlock","src":"1333:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1342:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"1350:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1335:6:56"},"nodeType":"YulFunctionCall","src":"1335:22:56"},"nodeType":"YulExpressionStatement","src":"1335:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1307:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"1316:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1303:3:56"},"nodeType":"YulFunctionCall","src":"1303:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"1328:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1299:3:56"},"nodeType":"YulFunctionCall","src":"1299:33:56"},"nodeType":"YulIf","src":"1296:2:56"},{"nodeType":"YulVariableDeclaration","src":"1368:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1394:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1381:12:56"},"nodeType":"YulFunctionCall","src":"1381:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1372:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1440:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1413:26:56"},"nodeType":"YulFunctionCall","src":"1413:33:56"},"nodeType":"YulExpressionStatement","src":"1413:33:56"},{"nodeType":"YulAssignment","src":"1455:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"1465:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1455:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1479:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1511:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1522:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1507:3:56"},"nodeType":"YulFunctionCall","src":"1507:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1494:12:56"},"nodeType":"YulFunctionCall","src":"1494:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1483:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1562:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1535:26:56"},"nodeType":"YulFunctionCall","src":"1535:35:56"},"nodeType":"YulExpressionStatement","src":"1535:35:56"},{"nodeType":"YulAssignment","src":"1579:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1589:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1579:6:56"}]},{"nodeType":"YulAssignment","src":"1605:49:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1639:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1650:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1635:3:56"},"nodeType":"YulFunctionCall","src":"1635:18:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"1615:19:56"},"nodeType":"YulFunctionCall","src":"1615:39:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1605:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"1663:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1695:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"1706:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1691:3:56"},"nodeType":"YulFunctionCall","src":"1691:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1678:12:56"},"nodeType":"YulFunctionCall","src":"1678:32:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"1667:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"1746:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1719:26:56"},"nodeType":"YulFunctionCall","src":"1719:35:56"},"nodeType":"YulExpressionStatement","src":"1719:35:56"},{"nodeType":"YulAssignment","src":"1763:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"1773:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1763:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint24t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1228:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1239:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1251:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1259:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1267:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1275:6:56","type":""}],"src":"1166:620:56"},{"body":{"nodeType":"YulBlock","src":"1895:366:56","statements":[{"body":{"nodeType":"YulBlock","src":"1941:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1950:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"1958:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1943:6:56"},"nodeType":"YulFunctionCall","src":"1943:22:56"},"nodeType":"YulExpressionStatement","src":"1943:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1916:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"1925:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1912:3:56"},"nodeType":"YulFunctionCall","src":"1912:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"1937:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1908:3:56"},"nodeType":"YulFunctionCall","src":"1908:32:56"},"nodeType":"YulIf","src":"1905:2:56"},{"nodeType":"YulVariableDeclaration","src":"1976:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2002:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1989:12:56"},"nodeType":"YulFunctionCall","src":"1989:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1980:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2048:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2021:26:56"},"nodeType":"YulFunctionCall","src":"2021:33:56"},"nodeType":"YulExpressionStatement","src":"2021:33:56"},{"nodeType":"YulAssignment","src":"2063:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"2073:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2063:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"2087:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2119:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2130:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2115:3:56"},"nodeType":"YulFunctionCall","src":"2115:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2102:12:56"},"nodeType":"YulFunctionCall","src":"2102:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2091:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2170:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2143:26:56"},"nodeType":"YulFunctionCall","src":"2143:35:56"},"nodeType":"YulExpressionStatement","src":"2143:35:56"},{"nodeType":"YulAssignment","src":"2187:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2197:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2187:6:56"}]},{"nodeType":"YulAssignment","src":"2213:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2240:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2251:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2236:3:56"},"nodeType":"YulFunctionCall","src":"2236:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2223:12:56"},"nodeType":"YulFunctionCall","src":"2223:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2213:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1845:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1856:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1868:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1876:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1884:6:56","type":""}],"src":"1791:470:56"},{"body":{"nodeType":"YulBlock","src":"2396:936:56","statements":[{"body":{"nodeType":"YulBlock","src":"2443:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2452:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"2460:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2445:6:56"},"nodeType":"YulFunctionCall","src":"2445:22:56"},"nodeType":"YulExpressionStatement","src":"2445:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2417:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"2426:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2413:3:56"},"nodeType":"YulFunctionCall","src":"2413:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"2438:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2409:3:56"},"nodeType":"YulFunctionCall","src":"2409:33:56"},"nodeType":"YulIf","src":"2406:2:56"},{"nodeType":"YulVariableDeclaration","src":"2478:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2504:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2491:12:56"},"nodeType":"YulFunctionCall","src":"2491:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2482:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2550:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2523:26:56"},"nodeType":"YulFunctionCall","src":"2523:33:56"},"nodeType":"YulExpressionStatement","src":"2523:33:56"},{"nodeType":"YulAssignment","src":"2565:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"2575:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2565:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"2589:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2621:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2632:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2617:3:56"},"nodeType":"YulFunctionCall","src":"2617:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2604:12:56"},"nodeType":"YulFunctionCall","src":"2604:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2593:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2672:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2645:26:56"},"nodeType":"YulFunctionCall","src":"2645:35:56"},"nodeType":"YulExpressionStatement","src":"2645:35:56"},{"nodeType":"YulAssignment","src":"2689:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2699:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2689:6:56"}]},{"nodeType":"YulAssignment","src":"2715:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2742:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2753:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2738:3:56"},"nodeType":"YulFunctionCall","src":"2738:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2725:12:56"},"nodeType":"YulFunctionCall","src":"2725:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2715:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"2766:46:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2797:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"2808:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2793:3:56"},"nodeType":"YulFunctionCall","src":"2793:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2780:12:56"},"nodeType":"YulFunctionCall","src":"2780:32:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2770:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"2855:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"2864:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"2872:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2857:6:56"},"nodeType":"YulFunctionCall","src":"2857:22:56"},"nodeType":"YulExpressionStatement","src":"2857:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2827:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"2835:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2824:2:56"},"nodeType":"YulFunctionCall","src":"2824:30:56"},"nodeType":"YulIf","src":"2821:2:56"},{"nodeType":"YulVariableDeclaration","src":"2890:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2904:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"2915:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2900:3:56"},"nodeType":"YulFunctionCall","src":"2900:22:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2894:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"2970:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"2979:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"2987:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2972:6:56"},"nodeType":"YulFunctionCall","src":"2972:22:56"},"nodeType":"YulExpressionStatement","src":"2972:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2949:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"2953:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2945:3:56"},"nodeType":"YulFunctionCall","src":"2945:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2960:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2941:3:56"},"nodeType":"YulFunctionCall","src":"2941:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2934:6:56"},"nodeType":"YulFunctionCall","src":"2934:35:56"},"nodeType":"YulIf","src":"2931:2:56"},{"nodeType":"YulVariableDeclaration","src":"3005:26:56","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3028:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3015:12:56"},"nodeType":"YulFunctionCall","src":"3015:16:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3009:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3040:62:56","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3098:2:56"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"3068:29:56"},"nodeType":"YulFunctionCall","src":"3068:33:56"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"3053:14:56"},"nodeType":"YulFunctionCall","src":"3053:49:56"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"3044:5:56","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3118:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3125:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3111:6:56"},"nodeType":"YulFunctionCall","src":"3111:17:56"},"nodeType":"YulExpressionStatement","src":"3111:17:56"},{"body":{"nodeType":"YulBlock","src":"3174:26:56","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"3183:6:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3191:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3176:6:56"},"nodeType":"YulFunctionCall","src":"3176:22:56"},"nodeType":"YulExpressionStatement","src":"3176:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3151:2:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3155:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3147:3:56"},"nodeType":"YulFunctionCall","src":"3147:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"3160:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3143:3:56"},"nodeType":"YulFunctionCall","src":"3143:20:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3165:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3140:2:56"},"nodeType":"YulFunctionCall","src":"3140:33:56"},"nodeType":"YulIf","src":"3137:2:56"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3226:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"3233:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3222:3:56"},"nodeType":"YulFunctionCall","src":"3222:14:56"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3242:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"3246:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3238:3:56"},"nodeType":"YulFunctionCall","src":"3238:11:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3251:2:56"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3209:12:56"},"nodeType":"YulFunctionCall","src":"3209:45:56"},"nodeType":"YulExpressionStatement","src":"3209:45:56"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3278:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"3285:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3274:3:56"},"nodeType":"YulFunctionCall","src":"3274:14:56"},{"kind":"number","nodeType":"YulLiteral","src":"3290:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3270:3:56"},"nodeType":"YulFunctionCall","src":"3270:23:56"},{"name":"value3","nodeType":"YulIdentifier","src":"3295:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3263:6:56"},"nodeType":"YulFunctionCall","src":"3263:39:56"},"nodeType":"YulExpressionStatement","src":"3263:39:56"},{"nodeType":"YulAssignment","src":"3311:15:56","value":{"name":"array","nodeType":"YulIdentifier","src":"3321:5:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3311:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2338:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2349:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2361:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2369:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2377:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2385:6:56","type":""}],"src":"2266:1066:56"},{"body":{"nodeType":"YulBlock","src":"3421:312:56","statements":[{"body":{"nodeType":"YulBlock","src":"3467:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3476:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"3484:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3469:6:56"},"nodeType":"YulFunctionCall","src":"3469:22:56"},"nodeType":"YulExpressionStatement","src":"3469:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3442:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"3451:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3438:3:56"},"nodeType":"YulFunctionCall","src":"3438:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"3463:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3434:3:56"},"nodeType":"YulFunctionCall","src":"3434:32:56"},"nodeType":"YulIf","src":"3431:2:56"},{"nodeType":"YulVariableDeclaration","src":"3502:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3528:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3515:12:56"},"nodeType":"YulFunctionCall","src":"3515:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3506:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3574:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"3547:26:56"},"nodeType":"YulFunctionCall","src":"3547:33:56"},"nodeType":"YulExpressionStatement","src":"3547:33:56"},{"nodeType":"YulAssignment","src":"3589:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"3599:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3589:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"3613:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3645:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"3656:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3641:3:56"},"nodeType":"YulFunctionCall","src":"3641:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3628:12:56"},"nodeType":"YulFunctionCall","src":"3628:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3617:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3693:7:56"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"3669:23:56"},"nodeType":"YulFunctionCall","src":"3669:32:56"},"nodeType":"YulExpressionStatement","src":"3669:32:56"},{"nodeType":"YulAssignment","src":"3710:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3720:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3710:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3379:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3390:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3402:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3410:6:56","type":""}],"src":"3337:396:56"},{"body":{"nodeType":"YulBlock","src":"3825:240:56","statements":[{"body":{"nodeType":"YulBlock","src":"3871:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3880:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"3888:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3873:6:56"},"nodeType":"YulFunctionCall","src":"3873:22:56"},"nodeType":"YulExpressionStatement","src":"3873:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3846:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"3855:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3842:3:56"},"nodeType":"YulFunctionCall","src":"3842:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"3867:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3838:3:56"},"nodeType":"YulFunctionCall","src":"3838:32:56"},"nodeType":"YulIf","src":"3835:2:56"},{"nodeType":"YulVariableDeclaration","src":"3906:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3932:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3919:12:56"},"nodeType":"YulFunctionCall","src":"3919:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3910:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3978:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"3951:26:56"},"nodeType":"YulFunctionCall","src":"3951:33:56"},"nodeType":"YulExpressionStatement","src":"3951:33:56"},{"nodeType":"YulAssignment","src":"3993:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"4003:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3993:6:56"}]},{"nodeType":"YulAssignment","src":"4017:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:56"},"nodeType":"YulFunctionCall","src":"4040:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:56"},"nodeType":"YulFunctionCall","src":"4027:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4017:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3783:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3794:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3806:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3814:6:56","type":""}],"src":"3738:327:56"},{"body":{"nodeType":"YulBlock","src":"4174:366:56","statements":[{"body":{"nodeType":"YulBlock","src":"4220:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4229:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"4237:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4222:6:56"},"nodeType":"YulFunctionCall","src":"4222:22:56"},"nodeType":"YulExpressionStatement","src":"4222:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4195:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"4204:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4191:3:56"},"nodeType":"YulFunctionCall","src":"4191:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"4216:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4187:3:56"},"nodeType":"YulFunctionCall","src":"4187:32:56"},"nodeType":"YulIf","src":"4184:2:56"},{"nodeType":"YulVariableDeclaration","src":"4255:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4281:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4268:12:56"},"nodeType":"YulFunctionCall","src":"4268:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4259:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4327:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4300:26:56"},"nodeType":"YulFunctionCall","src":"4300:33:56"},"nodeType":"YulExpressionStatement","src":"4300:33:56"},{"nodeType":"YulAssignment","src":"4342:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"4352:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4342:6:56"}]},{"nodeType":"YulAssignment","src":"4366:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4393:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4404:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4389:3:56"},"nodeType":"YulFunctionCall","src":"4389:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4376:12:56"},"nodeType":"YulFunctionCall","src":"4376:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4366:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"4417:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4449:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4460:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:56"},"nodeType":"YulFunctionCall","src":"4445:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4432:12:56"},"nodeType":"YulFunctionCall","src":"4432:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4421:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"4500:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4473:26:56"},"nodeType":"YulFunctionCall","src":"4473:35:56"},"nodeType":"YulExpressionStatement","src":"4473:35:56"},{"nodeType":"YulAssignment","src":"4517:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"4527:7:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4517:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4124:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4135:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4147:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4155:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4163:6:56","type":""}],"src":"4070:470:56"},{"body":{"nodeType":"YulBlock","src":"4698:520:56","statements":[{"body":{"nodeType":"YulBlock","src":"4745:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4754:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"4762:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4747:6:56"},"nodeType":"YulFunctionCall","src":"4747:22:56"},"nodeType":"YulExpressionStatement","src":"4747:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4719:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"4728:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4715:3:56"},"nodeType":"YulFunctionCall","src":"4715:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"4740:3:56","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4711:3:56"},"nodeType":"YulFunctionCall","src":"4711:33:56"},"nodeType":"YulIf","src":"4708:2:56"},{"nodeType":"YulVariableDeclaration","src":"4780:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4806:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4793:12:56"},"nodeType":"YulFunctionCall","src":"4793:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4784:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4852:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4825:26:56"},"nodeType":"YulFunctionCall","src":"4825:33:56"},"nodeType":"YulExpressionStatement","src":"4825:33:56"},{"nodeType":"YulAssignment","src":"4867:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"4877:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4867:6:56"}]},{"nodeType":"YulAssignment","src":"4891:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4918:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4929:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4914:3:56"},"nodeType":"YulFunctionCall","src":"4914:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4901:12:56"},"nodeType":"YulFunctionCall","src":"4901:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4891:6:56"}]},{"nodeType":"YulAssignment","src":"4942:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4969:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"4980:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4965:3:56"},"nodeType":"YulFunctionCall","src":"4965:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4952:12:56"},"nodeType":"YulFunctionCall","src":"4952:32:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4942:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"4993:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5025:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5036:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5021:3:56"},"nodeType":"YulFunctionCall","src":"5021:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5008:12:56"},"nodeType":"YulFunctionCall","src":"5008:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4997:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5074:7:56"}],"functionName":{"name":"validator_revert_t_uint8","nodeType":"YulIdentifier","src":"5049:24:56"},"nodeType":"YulFunctionCall","src":"5049:33:56"},"nodeType":"YulExpressionStatement","src":"5049:33:56"},{"nodeType":"YulAssignment","src":"5091:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"5101:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5091:6:56"}]},{"nodeType":"YulAssignment","src":"5117:43:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5144:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5155:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5140:3:56"},"nodeType":"YulFunctionCall","src":"5140:19:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5127:12:56"},"nodeType":"YulFunctionCall","src":"5127:33:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5117:6:56"}]},{"nodeType":"YulAssignment","src":"5169:43:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5196:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"5207:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5192:3:56"},"nodeType":"YulFunctionCall","src":"5192:19:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5179:12:56"},"nodeType":"YulFunctionCall","src":"5179:33:56"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"5169:6:56"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4624:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4635:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4647:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4655:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4663:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4671:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4679:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"4687:6:56","type":""}],"src":"4545:673:56"},{"body":{"nodeType":"YulBlock","src":"5339:561:56","statements":[{"body":{"nodeType":"YulBlock","src":"5385:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5394:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5402:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5387:6:56"},"nodeType":"YulFunctionCall","src":"5387:22:56"},"nodeType":"YulExpressionStatement","src":"5387:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5360:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"5369:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5356:3:56"},"nodeType":"YulFunctionCall","src":"5356:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"5381:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5352:3:56"},"nodeType":"YulFunctionCall","src":"5352:32:56"},"nodeType":"YulIf","src":"5349:2:56"},{"nodeType":"YulVariableDeclaration","src":"5420:37:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5447:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5434:12:56"},"nodeType":"YulFunctionCall","src":"5434:23:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5424:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5466:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"5476:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5470:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5521:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5530:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5538:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5523:6:56"},"nodeType":"YulFunctionCall","src":"5523:22:56"},"nodeType":"YulExpressionStatement","src":"5523:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5509:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"5517:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5506:2:56"},"nodeType":"YulFunctionCall","src":"5506:14:56"},"nodeType":"YulIf","src":"5503:2:56"},{"nodeType":"YulVariableDeclaration","src":"5556:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5570:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"5581:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5566:3:56"},"nodeType":"YulFunctionCall","src":"5566:22:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5560:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5636:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5645:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5653:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5638:6:56"},"nodeType":"YulFunctionCall","src":"5638:22:56"},"nodeType":"YulExpressionStatement","src":"5638:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5615:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"5619:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5611:3:56"},"nodeType":"YulFunctionCall","src":"5611:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5626:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5607:3:56"},"nodeType":"YulFunctionCall","src":"5607:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5600:6:56"},"nodeType":"YulFunctionCall","src":"5600:35:56"},"nodeType":"YulIf","src":"5597:2:56"},{"nodeType":"YulVariableDeclaration","src":"5671:30:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5698:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5685:12:56"},"nodeType":"YulFunctionCall","src":"5685:16:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5675:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"5728:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5737:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5745:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5730:6:56"},"nodeType":"YulFunctionCall","src":"5730:22:56"},"nodeType":"YulExpressionStatement","src":"5730:22:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5716:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"5724:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5713:2:56"},"nodeType":"YulFunctionCall","src":"5713:14:56"},"nodeType":"YulIf","src":"5710:2:56"},{"body":{"nodeType":"YulBlock","src":"5813:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5822:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"5830:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5815:6:56"},"nodeType":"YulFunctionCall","src":"5815:22:56"},"nodeType":"YulExpressionStatement","src":"5815:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5777:2:56"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5785:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"5793:2:56","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5781:3:56"},"nodeType":"YulFunctionCall","src":"5781:15:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5773:3:56"},"nodeType":"YulFunctionCall","src":"5773:24:56"},{"kind":"number","nodeType":"YulLiteral","src":"5799:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5769:3:56"},"nodeType":"YulFunctionCall","src":"5769:33:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5804:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5766:2:56"},"nodeType":"YulFunctionCall","src":"5766:46:56"},"nodeType":"YulIf","src":"5763:2:56"},{"nodeType":"YulAssignment","src":"5848:21:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5862:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"5866:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5858:3:56"},"nodeType":"YulFunctionCall","src":"5858:11:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5848:6:56"}]},{"nodeType":"YulAssignment","src":"5878:16:56","value":{"name":"length","nodeType":"YulIdentifier","src":"5888:6:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5878:6:56"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5297:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5308:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5320:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5328:6:56","type":""}],"src":"5223:677:56"},{"body":{"nodeType":"YulBlock","src":"5974:283:56","statements":[{"body":{"nodeType":"YulBlock","src":"6020:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6029:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6037:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6022:6:56"},"nodeType":"YulFunctionCall","src":"6022:22:56"},"nodeType":"YulExpressionStatement","src":"6022:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5995:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6004:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5991:3:56"},"nodeType":"YulFunctionCall","src":"5991:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6016:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5987:3:56"},"nodeType":"YulFunctionCall","src":"5987:32:56"},"nodeType":"YulIf","src":"5984:2:56"},{"nodeType":"YulVariableDeclaration","src":"6055:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6081:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6068:12:56"},"nodeType":"YulFunctionCall","src":"6068:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6059:5:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"6201:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6210:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6218:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6203:6:56"},"nodeType":"YulFunctionCall","src":"6203:22:56"},"nodeType":"YulExpressionStatement","src":"6203:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6113:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6124:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"6131:66:56","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6120:3:56"},"nodeType":"YulFunctionCall","src":"6120:78:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6110:2:56"},"nodeType":"YulFunctionCall","src":"6110:89:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6103:6:56"},"nodeType":"YulFunctionCall","src":"6103:97:56"},"nodeType":"YulIf","src":"6100:2:56"},{"nodeType":"YulAssignment","src":"6236:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"6246:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6236:6:56"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5940:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5951:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5963:6:56","type":""}],"src":"5905:352:56"},{"body":{"nodeType":"YulBlock","src":"6330:187:56","statements":[{"body":{"nodeType":"YulBlock","src":"6376:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6385:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6393:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6378:6:56"},"nodeType":"YulFunctionCall","src":"6378:22:56"},"nodeType":"YulExpressionStatement","src":"6378:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6351:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6360:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6347:3:56"},"nodeType":"YulFunctionCall","src":"6347:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6372:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6343:3:56"},"nodeType":"YulFunctionCall","src":"6343:32:56"},"nodeType":"YulIf","src":"6340:2:56"},{"nodeType":"YulVariableDeclaration","src":"6411:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6437:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6424:12:56"},"nodeType":"YulFunctionCall","src":"6424:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6415:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6481:5:56"}],"functionName":{"name":"validator_revert_t_int24","nodeType":"YulIdentifier","src":"6456:24:56"},"nodeType":"YulFunctionCall","src":"6456:31:56"},"nodeType":"YulExpressionStatement","src":"6456:31:56"},{"nodeType":"YulAssignment","src":"6496:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"6506:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6496:6:56"}]}]},"name":"abi_decode_tuple_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6296:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6307:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6319:6:56","type":""}],"src":"6262:255:56"},{"body":{"nodeType":"YulBlock","src":"6613:585:56","statements":[{"body":{"nodeType":"YulBlock","src":"6659:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6668:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6676:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6661:6:56"},"nodeType":"YulFunctionCall","src":"6661:22:56"},"nodeType":"YulExpressionStatement","src":"6661:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6634:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"6643:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6630:3:56"},"nodeType":"YulFunctionCall","src":"6630:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6626:3:56"},"nodeType":"YulFunctionCall","src":"6626:32:56"},"nodeType":"YulIf","src":"6623:2:56"},{"nodeType":"YulVariableDeclaration","src":"6694:30:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6714:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6708:5:56"},"nodeType":"YulFunctionCall","src":"6708:16:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6698:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"6767:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6776:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6784:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6769:6:56"},"nodeType":"YulFunctionCall","src":"6769:22:56"},"nodeType":"YulExpressionStatement","src":"6769:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6739:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"6747:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6736:2:56"},"nodeType":"YulFunctionCall","src":"6736:30:56"},"nodeType":"YulIf","src":"6733:2:56"},{"nodeType":"YulVariableDeclaration","src":"6802:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6816:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"6827:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6812:3:56"},"nodeType":"YulFunctionCall","src":"6812:22:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6806:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"6882:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6891:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"6899:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6884:6:56"},"nodeType":"YulFunctionCall","src":"6884:22:56"},"nodeType":"YulExpressionStatement","src":"6884:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6861:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"6865:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6857:3:56"},"nodeType":"YulFunctionCall","src":"6857:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6872:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6853:3:56"},"nodeType":"YulFunctionCall","src":"6853:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6846:6:56"},"nodeType":"YulFunctionCall","src":"6846:35:56"},"nodeType":"YulIf","src":"6843:2:56"},{"nodeType":"YulVariableDeclaration","src":"6917:19:56","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6933:2:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6927:5:56"},"nodeType":"YulFunctionCall","src":"6927:9:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6921:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6945:62:56","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7003:2:56"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"6973:29:56"},"nodeType":"YulFunctionCall","src":"6973:33:56"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"6958:14:56"},"nodeType":"YulFunctionCall","src":"6958:49:56"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"6949:5:56","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"7023:5:56"},{"name":"_2","nodeType":"YulIdentifier","src":"7030:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7016:6:56"},"nodeType":"YulFunctionCall","src":"7016:17:56"},"nodeType":"YulExpressionStatement","src":"7016:17:56"},{"body":{"nodeType":"YulBlock","src":"7079:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7088:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7096:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7081:6:56"},"nodeType":"YulFunctionCall","src":"7081:22:56"},"nodeType":"YulExpressionStatement","src":"7081:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7056:2:56"},{"name":"_2","nodeType":"YulIdentifier","src":"7060:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7052:3:56"},"nodeType":"YulFunctionCall","src":"7052:11:56"},{"kind":"number","nodeType":"YulLiteral","src":"7065:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7048:3:56"},"nodeType":"YulFunctionCall","src":"7048:20:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7070:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7045:2:56"},"nodeType":"YulFunctionCall","src":"7045:33:56"},"nodeType":"YulIf","src":"7042:2:56"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7140:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"7144:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7136:3:56"},"nodeType":"YulFunctionCall","src":"7136:11:56"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"7153:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"7160:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7149:3:56"},"nodeType":"YulFunctionCall","src":"7149:14:56"},{"name":"_2","nodeType":"YulIdentifier","src":"7165:2:56"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"7114:21:56"},"nodeType":"YulFunctionCall","src":"7114:54:56"},"nodeType":"YulExpressionStatement","src":"7114:54:56"},{"nodeType":"YulAssignment","src":"7177:15:56","value":{"name":"array","nodeType":"YulIdentifier","src":"7187:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7177:6:56"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6579:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6590:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6602:6:56","type":""}],"src":"6522:676:56"},{"body":{"nodeType":"YulBlock","src":"7306:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"7353:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7362:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7370:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7355:6:56"},"nodeType":"YulFunctionCall","src":"7355:22:56"},"nodeType":"YulExpressionStatement","src":"7355:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7327:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"7336:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7323:3:56"},"nodeType":"YulFunctionCall","src":"7323:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"7348:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7319:3:56"},"nodeType":"YulFunctionCall","src":"7319:33:56"},"nodeType":"YulIf","src":"7316:2:56"},{"nodeType":"YulAssignment","src":"7388:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"7398:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7388:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_CollectParams_$6761_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7272:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7283:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7295:6:56","type":""}],"src":"7203:210:56"},{"body":{"nodeType":"YulBlock","src":"7531:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"7578:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7587:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7595:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7580:6:56"},"nodeType":"YulFunctionCall","src":"7580:22:56"},"nodeType":"YulExpressionStatement","src":"7580:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7552:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"7561:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7548:3:56"},"nodeType":"YulFunctionCall","src":"7548:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"7573:3:56","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7544:3:56"},"nodeType":"YulFunctionCall","src":"7544:33:56"},"nodeType":"YulIf","src":"7541:2:56"},{"nodeType":"YulAssignment","src":"7613:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"7623:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7613:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_DecreaseLiquidityParams_$6742_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7497:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7508:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7520:6:56","type":""}],"src":"7418:220:56"},{"body":{"nodeType":"YulBlock","src":"7756:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"7803:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7812:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"7820:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7805:6:56"},"nodeType":"YulFunctionCall","src":"7805:22:56"},"nodeType":"YulExpressionStatement","src":"7805:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7777:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"7786:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7773:3:56"},"nodeType":"YulFunctionCall","src":"7773:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"7798:3:56","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7769:3:56"},"nodeType":"YulFunctionCall","src":"7769:33:56"},"nodeType":"YulIf","src":"7766:2:56"},{"nodeType":"YulAssignment","src":"7838:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"7848:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7838:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_IncreaseLiquidityParams_$6719_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7722:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7733:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7745:6:56","type":""}],"src":"7643:220:56"},{"body":{"nodeType":"YulBlock","src":"7972:1008:56","statements":[{"nodeType":"YulVariableDeclaration","src":"7982:33:56","value":{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7996:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"8005:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7992:3:56"},"nodeType":"YulFunctionCall","src":"7992:23:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7986:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"8040:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8049:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8057:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8042:6:56"},"nodeType":"YulFunctionCall","src":"8042:22:56"},"nodeType":"YulExpressionStatement","src":"8042:22:56"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"8031:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"8035:3:56","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8027:3:56"},"nodeType":"YulFunctionCall","src":"8027:12:56"},"nodeType":"YulIf","src":"8024:2:56"},{"nodeType":"YulVariableDeclaration","src":"8075:25:56","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8095:4:56","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8089:5:56"},"nodeType":"YulFunctionCall","src":"8089:11:56"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"8079:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8109:35:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8131:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"8139:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8127:3:56"},"nodeType":"YulFunctionCall","src":"8127:17:56"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"8113:10:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8153:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"8163:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"8157:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"8240:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"8242:7:56"},"nodeType":"YulFunctionCall","src":"8242:9:56"},"nodeType":"YulExpressionStatement","src":"8242:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8199:10:56"},{"name":"_2","nodeType":"YulIdentifier","src":"8211:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8196:2:56"},"nodeType":"YulFunctionCall","src":"8196:18:56"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8219:10:56"},{"name":"memPtr","nodeType":"YulIdentifier","src":"8231:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8216:2:56"},"nodeType":"YulFunctionCall","src":"8216:22:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8193:2:56"},"nodeType":"YulFunctionCall","src":"8193:46:56"},"nodeType":"YulIf","src":"8190:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8269:4:56","type":"","value":"0x40"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8275:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8262:6:56"},"nodeType":"YulFunctionCall","src":"8262:24:56"},"nodeType":"YulExpressionStatement","src":"8262:24:56"},{"body":{"nodeType":"YulBlock","src":"8312:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8321:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"8329:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8314:6:56"},"nodeType":"YulFunctionCall","src":"8314:22:56"},"nodeType":"YulExpressionStatement","src":"8314:22:56"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"8302:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"8306:4:56","type":"","value":"0x60"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8298:3:56"},"nodeType":"YulFunctionCall","src":"8298:13:56"},"nodeType":"YulIf","src":"8295:2:56"},{"nodeType":"YulVariableDeclaration","src":"8347:36:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8371:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"8379:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8367:3:56"},"nodeType":"YulFunctionCall","src":"8367:16:56"},"variables":[{"name":"newFreePtr_1","nodeType":"YulTypedName","src":"8351:12:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"8450:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"8452:7:56"},"nodeType":"YulFunctionCall","src":"8452:9:56"},"nodeType":"YulExpressionStatement","src":"8452:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"8401:12:56"},{"name":"_2","nodeType":"YulIdentifier","src":"8415:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8398:2:56"},"nodeType":"YulFunctionCall","src":"8398:20:56"},{"arguments":[{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"8423:12:56"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8437:10:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8420:2:56"},"nodeType":"YulFunctionCall","src":"8420:28:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8395:2:56"},"nodeType":"YulFunctionCall","src":"8395:54:56"},"nodeType":"YulIf","src":"8392:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8479:4:56","type":"","value":"0x40"},{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"8485:12:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8472:6:56"},"nodeType":"YulFunctionCall","src":"8472:26:56"},"nodeType":"YulExpressionStatement","src":"8472:26:56"},{"nodeType":"YulVariableDeclaration","src":"8507:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8533:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8520:12:56"},"nodeType":"YulFunctionCall","src":"8520:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8511:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8579:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8552:26:56"},"nodeType":"YulFunctionCall","src":"8552:33:56"},"nodeType":"YulExpressionStatement","src":"8552:33:56"},{"expression":{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8601:10:56"},{"name":"value","nodeType":"YulIdentifier","src":"8613:5:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8594:6:56"},"nodeType":"YulFunctionCall","src":"8594:25:56"},"nodeType":"YulExpressionStatement","src":"8594:25:56"},{"nodeType":"YulVariableDeclaration","src":"8628:47:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8660:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"8671:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8656:3:56"},"nodeType":"YulFunctionCall","src":"8656:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8643:12:56"},"nodeType":"YulFunctionCall","src":"8643:32:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8632:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8711:7:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8684:26:56"},"nodeType":"YulFunctionCall","src":"8684:35:56"},"nodeType":"YulExpressionStatement","src":"8684:35:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8739:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"8747:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8735:3:56"},"nodeType":"YulFunctionCall","src":"8735:17:56"},{"name":"value_1","nodeType":"YulIdentifier","src":"8754:7:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8728:6:56"},"nodeType":"YulFunctionCall","src":"8728:34:56"},"nodeType":"YulExpressionStatement","src":"8728:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8782:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"8790:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8778:3:56"},"nodeType":"YulFunctionCall","src":"8778:16:56"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8820:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"8831:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8816:3:56"},"nodeType":"YulFunctionCall","src":"8816:20:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"8796:19:56"},"nodeType":"YulFunctionCall","src":"8796:41:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8771:6:56"},"nodeType":"YulFunctionCall","src":"8771:67:56"},"nodeType":"YulExpressionStatement","src":"8771:67:56"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8854:6:56"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8862:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8847:6:56"},"nodeType":"YulFunctionCall","src":"8847:26:56"},"nodeType":"YulExpressionStatement","src":"8847:26:56"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8893:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"8901:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8889:3:56"},"nodeType":"YulFunctionCall","src":"8889:15:56"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8931:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"8942:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8927:3:56"},"nodeType":"YulFunctionCall","src":"8927:20:56"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"8906:20:56"},"nodeType":"YulFunctionCall","src":"8906:42:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8882:6:56"},"nodeType":"YulFunctionCall","src":"8882:67:56"},"nodeType":"YulExpressionStatement","src":"8882:67:56"},{"nodeType":"YulAssignment","src":"8958:16:56","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"8968:6:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8958:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_MintCallbackData_$5737_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7938:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7949:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7961:6:56","type":""}],"src":"7868:1112:56"},{"body":{"nodeType":"YulBlock","src":"9085:107:56","statements":[{"body":{"nodeType":"YulBlock","src":"9132:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9141:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"9149:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9134:6:56"},"nodeType":"YulFunctionCall","src":"9134:22:56"},"nodeType":"YulExpressionStatement","src":"9134:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9106:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"9115:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9102:3:56"},"nodeType":"YulFunctionCall","src":"9102:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"9127:3:56","type":"","value":"352"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9098:3:56"},"nodeType":"YulFunctionCall","src":"9098:33:56"},"nodeType":"YulIf","src":"9095:2:56"},{"nodeType":"YulAssignment","src":"9167:19:56","value":{"name":"headStart","nodeType":"YulIdentifier","src":"9177:9:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9167:6:56"}]}]},"name":"abi_decode_tuple_t_struct$_MintParams_$6692_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9051:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9062:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9074:6:56","type":""}],"src":"8985:207:56"},{"body":{"nodeType":"YulBlock","src":"9267:189:56","statements":[{"body":{"nodeType":"YulBlock","src":"9313:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9322:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"9330:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9315:6:56"},"nodeType":"YulFunctionCall","src":"9315:22:56"},"nodeType":"YulExpressionStatement","src":"9315:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9288:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"9297:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9284:3:56"},"nodeType":"YulFunctionCall","src":"9284:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"9309:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9280:3:56"},"nodeType":"YulFunctionCall","src":"9280:32:56"},"nodeType":"YulIf","src":"9277:2:56"},{"nodeType":"YulVariableDeclaration","src":"9348:36:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9374:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9361:12:56"},"nodeType":"YulFunctionCall","src":"9361:23:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9352:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9420:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"9393:26:56"},"nodeType":"YulFunctionCall","src":"9393:33:56"},"nodeType":"YulExpressionStatement","src":"9393:33:56"},{"nodeType":"YulAssignment","src":"9435:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"9445:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9435:6:56"}]}]},"name":"abi_decode_tuple_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9233:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9244:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9256:6:56","type":""}],"src":"9197:259:56"},{"body":{"nodeType":"YulBlock","src":"9559:301:56","statements":[{"body":{"nodeType":"YulBlock","src":"9605:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9614:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"9622:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9607:6:56"},"nodeType":"YulFunctionCall","src":"9607:22:56"},"nodeType":"YulExpressionStatement","src":"9607:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9580:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"9589:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9576:3:56"},"nodeType":"YulFunctionCall","src":"9576:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"9601:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9572:3:56"},"nodeType":"YulFunctionCall","src":"9572:32:56"},"nodeType":"YulIf","src":"9569:2:56"},{"nodeType":"YulVariableDeclaration","src":"9640:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9659:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9653:5:56"},"nodeType":"YulFunctionCall","src":"9653:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9644:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9705:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"9678:26:56"},"nodeType":"YulFunctionCall","src":"9678:33:56"},"nodeType":"YulExpressionStatement","src":"9678:33:56"},{"nodeType":"YulAssignment","src":"9720:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"9730:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9720:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"9744:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9769:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"9780:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9765:3:56"},"nodeType":"YulFunctionCall","src":"9765:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9759:5:56"},"nodeType":"YulFunctionCall","src":"9759:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9748:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9820:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"9793:26:56"},"nodeType":"YulFunctionCall","src":"9793:35:56"},"nodeType":"YulExpressionStatement","src":"9793:35:56"},{"nodeType":"YulAssignment","src":"9837:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"9847:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9837:6:56"}]}]},"name":"abi_decode_tuple_t_uint128t_uint128_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9517:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9528:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9540:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9548:6:56","type":""}],"src":"9461:399:56"},{"body":{"nodeType":"YulBlock","src":"10014:510:56","statements":[{"body":{"nodeType":"YulBlock","src":"10061:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"10070:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"10078:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10063:6:56"},"nodeType":"YulFunctionCall","src":"10063:22:56"},"nodeType":"YulExpressionStatement","src":"10063:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10035:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"10044:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10031:3:56"},"nodeType":"YulFunctionCall","src":"10031:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"10056:3:56","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10027:3:56"},"nodeType":"YulFunctionCall","src":"10027:33:56"},"nodeType":"YulIf","src":"10024:2:56"},{"nodeType":"YulVariableDeclaration","src":"10096:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10115:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10109:5:56"},"nodeType":"YulFunctionCall","src":"10109:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10100:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10161:5:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10134:26:56"},"nodeType":"YulFunctionCall","src":"10134:33:56"},"nodeType":"YulExpressionStatement","src":"10134:33:56"},{"nodeType":"YulAssignment","src":"10176:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"10186:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10176:6:56"}]},{"nodeType":"YulAssignment","src":"10200:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10220:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10231:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10216:3:56"},"nodeType":"YulFunctionCall","src":"10216:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10210:5:56"},"nodeType":"YulFunctionCall","src":"10210:25:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10200:6:56"}]},{"nodeType":"YulAssignment","src":"10244:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10264:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10275:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10260:3:56"},"nodeType":"YulFunctionCall","src":"10260:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10254:5:56"},"nodeType":"YulFunctionCall","src":"10254:25:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"10244:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"10288:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10313:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10324:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10309:3:56"},"nodeType":"YulFunctionCall","src":"10309:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10303:5:56"},"nodeType":"YulFunctionCall","src":"10303:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"10292:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"10364:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10337:26:56"},"nodeType":"YulFunctionCall","src":"10337:35:56"},"nodeType":"YulExpressionStatement","src":"10337:35:56"},{"nodeType":"YulAssignment","src":"10381:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"10391:7:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"10381:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"10407:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10432:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10443:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10428:3:56"},"nodeType":"YulFunctionCall","src":"10428:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10422:5:56"},"nodeType":"YulFunctionCall","src":"10422:26:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"10411:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"10484:7:56"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"10457:26:56"},"nodeType":"YulFunctionCall","src":"10457:35:56"},"nodeType":"YulExpressionStatement","src":"10457:35:56"},{"nodeType":"YulAssignment","src":"10501:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"10511:7:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"10501:6:56"}]}]},"name":"abi_decode_tuple_t_uint128t_uint256t_uint256t_uint128t_uint128_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9948:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9959:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9971:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9979:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9987:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9995:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10003:6:56","type":""}],"src":"9865:659:56"},{"body":{"nodeType":"YulBlock","src":"10702:743:56","statements":[{"body":{"nodeType":"YulBlock","src":"10749:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"10758:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"10766:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10751:6:56"},"nodeType":"YulFunctionCall","src":"10751:22:56"},"nodeType":"YulExpressionStatement","src":"10751:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10723:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"10732:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10719:3:56"},"nodeType":"YulFunctionCall","src":"10719:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"10744:3:56","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10715:3:56"},"nodeType":"YulFunctionCall","src":"10715:33:56"},"nodeType":"YulIf","src":"10712:2:56"},{"nodeType":"YulVariableDeclaration","src":"10784:29:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10803:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10797:5:56"},"nodeType":"YulFunctionCall","src":"10797:16:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10788:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10849:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"10822:26:56"},"nodeType":"YulFunctionCall","src":"10822:33:56"},"nodeType":"YulExpressionStatement","src":"10822:33:56"},{"nodeType":"YulAssignment","src":"10864:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"10874:5:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10864:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"10888:40:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10913:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"10924:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10909:3:56"},"nodeType":"YulFunctionCall","src":"10909:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10903:5:56"},"nodeType":"YulFunctionCall","src":"10903:25:56"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"10892:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"10962:7:56"}],"functionName":{"name":"validator_revert_t_int24","nodeType":"YulIdentifier","src":"10937:24:56"},"nodeType":"YulFunctionCall","src":"10937:33:56"},"nodeType":"YulExpressionStatement","src":"10937:33:56"},{"nodeType":"YulAssignment","src":"10979:17:56","value":{"name":"value_1","nodeType":"YulIdentifier","src":"10989:7:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10979:6:56"}]},{"nodeType":"YulAssignment","src":"11005:60:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11050:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11061:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11046:3:56"},"nodeType":"YulFunctionCall","src":"11046:18:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"11015:30:56"},"nodeType":"YulFunctionCall","src":"11015:50:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"11005:6:56"}]},{"nodeType":"YulAssignment","src":"11074:60:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11119:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11130:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11115:3:56"},"nodeType":"YulFunctionCall","src":"11115:18:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"11084:30:56"},"nodeType":"YulFunctionCall","src":"11084:50:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"11074:6:56"}]},{"nodeType":"YulAssignment","src":"11143:61:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11188:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11199:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11184:3:56"},"nodeType":"YulFunctionCall","src":"11184:19:56"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"11153:30:56"},"nodeType":"YulFunctionCall","src":"11153:51:56"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"11143:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"11213:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11238:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11249:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11234:3:56"},"nodeType":"YulFunctionCall","src":"11234:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11228:5:56"},"nodeType":"YulFunctionCall","src":"11228:26:56"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"11217:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"11288:7:56"}],"functionName":{"name":"validator_revert_t_uint8","nodeType":"YulIdentifier","src":"11263:24:56"},"nodeType":"YulFunctionCall","src":"11263:33:56"},"nodeType":"YulExpressionStatement","src":"11263:33:56"},{"nodeType":"YulAssignment","src":"11305:17:56","value":{"name":"value_2","nodeType":"YulIdentifier","src":"11315:7:56"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"11305:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"11331:41:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11356:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"11367:3:56","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11352:3:56"},"nodeType":"YulFunctionCall","src":"11352:19:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11346:5:56"},"nodeType":"YulFunctionCall","src":"11346:26:56"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"11335:7:56","type":""}]},{"expression":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"11405:7:56"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"11381:23:56"},"nodeType":"YulFunctionCall","src":"11381:32:56"},"nodeType":"YulExpressionStatement","src":"11381:32:56"},{"nodeType":"YulAssignment","src":"11422:17:56","value":{"name":"value_3","nodeType":"YulIdentifier","src":"11432:7:56"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"11422:6:56"}]}]},"name":"abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10620:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10631:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10643:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10651:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10659:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10667:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10675:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"10683:6:56","type":""},{"name":"value6","nodeType":"YulTypedName","src":"10691:6:56","type":""}],"src":"10529:916:56"},{"body":{"nodeType":"YulBlock","src":"11519:127:56","statements":[{"body":{"nodeType":"YulBlock","src":"11565:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11574:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"11582:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11567:6:56"},"nodeType":"YulFunctionCall","src":"11567:22:56"},"nodeType":"YulExpressionStatement","src":"11567:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11540:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"11549:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11536:3:56"},"nodeType":"YulFunctionCall","src":"11536:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"11561:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11532:3:56"},"nodeType":"YulFunctionCall","src":"11532:32:56"},"nodeType":"YulIf","src":"11529:2:56"},{"nodeType":"YulAssignment","src":"11600:40:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11630:9:56"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"11610:19:56"},"nodeType":"YulFunctionCall","src":"11610:30:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11600:6:56"}]}]},"name":"abi_decode_tuple_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11485:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11496:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11508:6:56","type":""}],"src":"11450:196:56"},{"body":{"nodeType":"YulBlock","src":"11721:120:56","statements":[{"body":{"nodeType":"YulBlock","src":"11767:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11776:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"11784:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11769:6:56"},"nodeType":"YulFunctionCall","src":"11769:22:56"},"nodeType":"YulExpressionStatement","src":"11769:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11742:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"11751:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11738:3:56"},"nodeType":"YulFunctionCall","src":"11738:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"11763:2:56","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11734:3:56"},"nodeType":"YulFunctionCall","src":"11734:32:56"},"nodeType":"YulIf","src":"11731:2:56"},{"nodeType":"YulAssignment","src":"11802:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11825:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11812:12:56"},"nodeType":"YulFunctionCall","src":"11812:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11802:6:56"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11687:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11698:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11710:6:56","type":""}],"src":"11651:190:56"},{"body":{"nodeType":"YulBlock","src":"11933:240:56","statements":[{"body":{"nodeType":"YulBlock","src":"11979:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11988:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"11996:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11981:6:56"},"nodeType":"YulFunctionCall","src":"11981:22:56"},"nodeType":"YulExpressionStatement","src":"11981:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11954:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"11963:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11950:3:56"},"nodeType":"YulFunctionCall","src":"11950:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"11975:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11946:3:56"},"nodeType":"YulFunctionCall","src":"11946:32:56"},"nodeType":"YulIf","src":"11943:2:56"},{"nodeType":"YulAssignment","src":"12014:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12037:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12024:12:56"},"nodeType":"YulFunctionCall","src":"12024:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12014:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"12056:45:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12086:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12097:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12082:3:56"},"nodeType":"YulFunctionCall","src":"12082:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12069:12:56"},"nodeType":"YulFunctionCall","src":"12069:32:56"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"12060:5:56","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12137:5:56"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"12110:26:56"},"nodeType":"YulFunctionCall","src":"12110:33:56"},"nodeType":"YulExpressionStatement","src":"12110:33:56"},{"nodeType":"YulAssignment","src":"12152:15:56","value":{"name":"value","nodeType":"YulIdentifier","src":"12162:5:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12152:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11891:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11902:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11914:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11922:6:56","type":""}],"src":"11846:327:56"},{"body":{"nodeType":"YulBlock","src":"12276:157:56","statements":[{"body":{"nodeType":"YulBlock","src":"12322:26:56","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12331:6:56"},{"name":"value0","nodeType":"YulIdentifier","src":"12339:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12324:6:56"},"nodeType":"YulFunctionCall","src":"12324:22:56"},"nodeType":"YulExpressionStatement","src":"12324:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12297:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"12306:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12293:3:56"},"nodeType":"YulFunctionCall","src":"12293:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"12318:2:56","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12289:3:56"},"nodeType":"YulFunctionCall","src":"12289:32:56"},"nodeType":"YulIf","src":"12286:2:56"},{"nodeType":"YulAssignment","src":"12357:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12373:9:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12367:5:56"},"nodeType":"YulFunctionCall","src":"12367:16:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12357:6:56"}]},{"nodeType":"YulAssignment","src":"12392:35:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12412:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12423:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12408:3:56"},"nodeType":"YulFunctionCall","src":"12408:18:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12402:5:56"},"nodeType":"YulFunctionCall","src":"12402:25:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12392:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12234:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12245:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12257:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12265:6:56","type":""}],"src":"12178:255:56"},{"body":{"nodeType":"YulBlock","src":"12561:654:56","statements":[{"body":{"nodeType":"YulBlock","src":"12607:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12616:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"12624:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12609:6:56"},"nodeType":"YulFunctionCall","src":"12609:22:56"},"nodeType":"YulExpressionStatement","src":"12609:22:56"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12582:7:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"12591:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12578:3:56"},"nodeType":"YulFunctionCall","src":"12578:23:56"},{"kind":"number","nodeType":"YulLiteral","src":"12603:2:56","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12574:3:56"},"nodeType":"YulFunctionCall","src":"12574:32:56"},"nodeType":"YulIf","src":"12571:2:56"},{"nodeType":"YulAssignment","src":"12642:33:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12665:9:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12652:12:56"},"nodeType":"YulFunctionCall","src":"12652:23:56"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12642:6:56"}]},{"nodeType":"YulAssignment","src":"12684:42:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12711:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12722:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12707:3:56"},"nodeType":"YulFunctionCall","src":"12707:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12694:12:56"},"nodeType":"YulFunctionCall","src":"12694:32:56"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12684:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"12735:46:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12766:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"12777:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12762:3:56"},"nodeType":"YulFunctionCall","src":"12762:18:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12749:12:56"},"nodeType":"YulFunctionCall","src":"12749:32:56"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"12739:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12790:28:56","value":{"kind":"number","nodeType":"YulLiteral","src":"12800:18:56","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12794:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"12845:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12854:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"12862:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12847:6:56"},"nodeType":"YulFunctionCall","src":"12847:22:56"},"nodeType":"YulExpressionStatement","src":"12847:22:56"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12833:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"12841:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12830:2:56"},"nodeType":"YulFunctionCall","src":"12830:14:56"},"nodeType":"YulIf","src":"12827:2:56"},{"nodeType":"YulVariableDeclaration","src":"12880:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12894:9:56"},{"name":"offset","nodeType":"YulIdentifier","src":"12905:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12890:3:56"},"nodeType":"YulFunctionCall","src":"12890:22:56"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"12884:2:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"12960:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12969:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"12977:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12962:6:56"},"nodeType":"YulFunctionCall","src":"12962:22:56"},"nodeType":"YulExpressionStatement","src":"12962:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"12939:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"12943:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12935:3:56"},"nodeType":"YulFunctionCall","src":"12935:13:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"12950:7:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12931:3:56"},"nodeType":"YulFunctionCall","src":"12931:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12924:6:56"},"nodeType":"YulFunctionCall","src":"12924:35:56"},"nodeType":"YulIf","src":"12921:2:56"},{"nodeType":"YulVariableDeclaration","src":"12995:30:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"13022:2:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13009:12:56"},"nodeType":"YulFunctionCall","src":"13009:16:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12999:6:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"13052:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13061:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"13069:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13054:6:56"},"nodeType":"YulFunctionCall","src":"13054:22:56"},"nodeType":"YulExpressionStatement","src":"13054:22:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13040:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"13048:2:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13037:2:56"},"nodeType":"YulFunctionCall","src":"13037:14:56"},"nodeType":"YulIf","src":"13034:2:56"},{"body":{"nodeType":"YulBlock","src":"13128:26:56","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13137:6:56"},{"name":"value2","nodeType":"YulIdentifier","src":"13145:6:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13130:6:56"},"nodeType":"YulFunctionCall","src":"13130:22:56"},"nodeType":"YulExpressionStatement","src":"13130:22:56"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"13101:2:56"},{"name":"length","nodeType":"YulIdentifier","src":"13105:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13097:3:56"},"nodeType":"YulFunctionCall","src":"13097:15:56"},{"kind":"number","nodeType":"YulLiteral","src":"13114:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13093:3:56"},"nodeType":"YulFunctionCall","src":"13093:24:56"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13119:7:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13090:2:56"},"nodeType":"YulFunctionCall","src":"13090:37:56"},"nodeType":"YulIf","src":"13087:2:56"},{"nodeType":"YulAssignment","src":"13163:21:56","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"13177:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"13181:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13173:3:56"},"nodeType":"YulFunctionCall","src":"13173:11:56"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"13163:6:56"}]},{"nodeType":"YulAssignment","src":"13193:16:56","value":{"name":"length","nodeType":"YulIdentifier","src":"13203:6:56"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"13193:6:56"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12503:9:56","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12514:7:56","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12526:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12534:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12542:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12550:6:56","type":""}],"src":"12438:777:56"},{"body":{"nodeType":"YulBlock","src":"13271:267:56","statements":[{"nodeType":"YulVariableDeclaration","src":"13281:26:56","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13301:5:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13295:5:56"},"nodeType":"YulFunctionCall","src":"13295:12:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"13285:6:56","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13323:3:56"},{"name":"length","nodeType":"YulIdentifier","src":"13328:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13316:6:56"},"nodeType":"YulFunctionCall","src":"13316:19:56"},"nodeType":"YulExpressionStatement","src":"13316:19:56"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13370:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"13377:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13366:3:56"},"nodeType":"YulFunctionCall","src":"13366:16:56"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13388:3:56"},{"kind":"number","nodeType":"YulLiteral","src":"13393:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13384:3:56"},"nodeType":"YulFunctionCall","src":"13384:14:56"},{"name":"length","nodeType":"YulIdentifier","src":"13400:6:56"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"13344:21:56"},"nodeType":"YulFunctionCall","src":"13344:63:56"},"nodeType":"YulExpressionStatement","src":"13344:63:56"},{"nodeType":"YulAssignment","src":"13416:116:56","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13431:3:56"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13444:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"13452:2:56","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13440:3:56"},"nodeType":"YulFunctionCall","src":"13440:15:56"},{"kind":"number","nodeType":"YulLiteral","src":"13457:66:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13436:3:56"},"nodeType":"YulFunctionCall","src":"13436:88:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13427:3:56"},"nodeType":"YulFunctionCall","src":"13427:98:56"},{"kind":"number","nodeType":"YulLiteral","src":"13527:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13423:3:56"},"nodeType":"YulFunctionCall","src":"13423:109:56"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13416:3:56"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13248:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13255:3:56","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13263:3:56","type":""}],"src":"13220:318:56"},{"body":{"nodeType":"YulBlock","src":"13587:49:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13604:3:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13620:1:56","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"13623:5:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"13609:10:56"},"nodeType":"YulFunctionCall","src":"13609:20:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13597:6:56"},"nodeType":"YulFunctionCall","src":"13597:33:56"},"nodeType":"YulExpressionStatement","src":"13597:33:56"}]},"name":"abi_encode_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13571:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13578:3:56","type":""}],"src":"13543:93:56"},{"body":{"nodeType":"YulBlock","src":"13687:75:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13704:3:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13713:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"13720:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13709:3:56"},"nodeType":"YulFunctionCall","src":"13709:46:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13697:6:56"},"nodeType":"YulFunctionCall","src":"13697:59:56"},"nodeType":"YulExpressionStatement","src":"13697:59:56"}]},"name":"abi_encode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13671:5:56","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13678:3:56","type":""}],"src":"13641:121:56"},{"body":{"nodeType":"YulBlock","src":"13914:126:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13937:3:56"},{"name":"value0","nodeType":"YulIdentifier","src":"13942:6:56"},{"name":"value1","nodeType":"YulIdentifier","src":"13950:6:56"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"13924:12:56"},"nodeType":"YulFunctionCall","src":"13924:33:56"},"nodeType":"YulExpressionStatement","src":"13924:33:56"},{"nodeType":"YulVariableDeclaration","src":"13966:26:56","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13980:3:56"},{"name":"value1","nodeType":"YulIdentifier","src":"13985:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13976:3:56"},"nodeType":"YulFunctionCall","src":"13976:16:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13970:2:56","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"14008:2:56"},{"name":"end","nodeType":"YulIdentifier","src":"14012:3:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14001:6:56"},"nodeType":"YulFunctionCall","src":"14001:15:56"},"nodeType":"YulExpressionStatement","src":"14001:15:56"},{"nodeType":"YulAssignment","src":"14025:9:56","value":{"name":"_1","nodeType":"YulIdentifier","src":"14032:2:56"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14025: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":"13882:3:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13887:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13895:6:56","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13906:3:56","type":""}],"src":"13767:273:56"},{"body":{"nodeType":"YulBlock","src":"14146:125:56","statements":[{"nodeType":"YulAssignment","src":"14156:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14168:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14179:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14164:3:56"},"nodeType":"YulFunctionCall","src":"14164:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14156:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14198:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14213:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"14221:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14209:3:56"},"nodeType":"YulFunctionCall","src":"14209:55:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14191:6:56"},"nodeType":"YulFunctionCall","src":"14191:74:56"},"nodeType":"YulExpressionStatement","src":"14191:74:56"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14115:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14126:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14137:4:56","type":""}],"src":"14045:226:56"},{"body":{"nodeType":"YulBlock","src":"14499:395:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14516:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14531:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"14539:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14527:3:56"},"nodeType":"YulFunctionCall","src":"14527:55:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14509:6:56"},"nodeType":"YulFunctionCall","src":"14509:74:56"},"nodeType":"YulExpressionStatement","src":"14509:74:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14603:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14614:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14599:3:56"},"nodeType":"YulFunctionCall","src":"14599:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14630:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"14633:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"14619:10:56"},"nodeType":"YulFunctionCall","src":"14619:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14592:6:56"},"nodeType":"YulFunctionCall","src":"14592:49:56"},"nodeType":"YulExpressionStatement","src":"14592:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14661:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14672:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14657:3:56"},"nodeType":"YulFunctionCall","src":"14657:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14688:1:56","type":"","value":"2"},{"name":"value2","nodeType":"YulIdentifier","src":"14691:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"14677:10:56"},"nodeType":"YulFunctionCall","src":"14677:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14650:6:56"},"nodeType":"YulFunctionCall","src":"14650:49:56"},"nodeType":"YulExpressionStatement","src":"14650:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14719:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14730:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14715:3:56"},"nodeType":"YulFunctionCall","src":"14715:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"14739:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"14747:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14735:3:56"},"nodeType":"YulFunctionCall","src":"14735:47:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14708:6:56"},"nodeType":"YulFunctionCall","src":"14708:75:56"},"nodeType":"YulExpressionStatement","src":"14708:75:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14803:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14814:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14799:3:56"},"nodeType":"YulFunctionCall","src":"14799:19:56"},{"kind":"number","nodeType":"YulLiteral","src":"14820:3:56","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14792:6:56"},"nodeType":"YulFunctionCall","src":"14792:32:56"},"nodeType":"YulExpressionStatement","src":"14792:32:56"},{"nodeType":"YulAssignment","src":"14833:55:56","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"14860:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14872:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"14883:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14868:3:56"},"nodeType":"YulFunctionCall","src":"14868:19:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"14841:18:56"},"nodeType":"YulFunctionCall","src":"14841:47:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14833: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":"14436:9:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"14447:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"14455:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"14463:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14471:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14479:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14490:4:56","type":""}],"src":"14276:618:56"},{"body":{"nodeType":"YulBlock","src":"15104:400:56","statements":[{"nodeType":"YulAssignment","src":"15114:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15126:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15137:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15122:3:56"},"nodeType":"YulFunctionCall","src":"15122:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15114:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15157:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15172:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"15180:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15168:3:56"},"nodeType":"YulFunctionCall","src":"15168:55:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15150:6:56"},"nodeType":"YulFunctionCall","src":"15150:74:56"},"nodeType":"YulExpressionStatement","src":"15150:74:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15244:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15255:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15240:3:56"},"nodeType":"YulFunctionCall","src":"15240:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15271:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"15274:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"15260:10:56"},"nodeType":"YulFunctionCall","src":"15260:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15233:6:56"},"nodeType":"YulFunctionCall","src":"15233:49:56"},"nodeType":"YulExpressionStatement","src":"15233:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15302:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15313:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15298:3:56"},"nodeType":"YulFunctionCall","src":"15298:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15329:1:56","type":"","value":"2"},{"name":"value2","nodeType":"YulIdentifier","src":"15332:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"15318:10:56"},"nodeType":"YulFunctionCall","src":"15318:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15291:6:56"},"nodeType":"YulFunctionCall","src":"15291:49:56"},"nodeType":"YulExpressionStatement","src":"15291:49:56"},{"nodeType":"YulVariableDeclaration","src":"15349:44:56","value":{"kind":"number","nodeType":"YulLiteral","src":"15359:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15353:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15413:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15424:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15409:3:56"},"nodeType":"YulFunctionCall","src":"15409:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"15433:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"15441:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15429:3:56"},"nodeType":"YulFunctionCall","src":"15429:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15402:6:56"},"nodeType":"YulFunctionCall","src":"15402:43:56"},"nodeType":"YulExpressionStatement","src":"15402:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15465:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15476:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15461:3:56"},"nodeType":"YulFunctionCall","src":"15461:19:56"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"15486:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"15494:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15482:3:56"},"nodeType":"YulFunctionCall","src":"15482:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15454:6:56"},"nodeType":"YulFunctionCall","src":"15454:44:56"},"nodeType":"YulExpressionStatement","src":"15454: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":"15041:9:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"15052:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"15060:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15068:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15076:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15084:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15095:4:56","type":""}],"src":"14899:605:56"},{"body":{"nodeType":"YulBlock","src":"15666:282:56","statements":[{"nodeType":"YulAssignment","src":"15676:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15688:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15699:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15684:3:56"},"nodeType":"YulFunctionCall","src":"15684:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15676:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15718:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15733:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"15741:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15729:3:56"},"nodeType":"YulFunctionCall","src":"15729:55:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15711:6:56"},"nodeType":"YulFunctionCall","src":"15711:74:56"},"nodeType":"YulExpressionStatement","src":"15711:74:56"},{"nodeType":"YulVariableDeclaration","src":"15794:44:56","value":{"kind":"number","nodeType":"YulLiteral","src":"15804:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15798:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15858:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15869:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15854:3:56"},"nodeType":"YulFunctionCall","src":"15854:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"15878:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"15886:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15874:3:56"},"nodeType":"YulFunctionCall","src":"15874:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15847:6:56"},"nodeType":"YulFunctionCall","src":"15847:43:56"},"nodeType":"YulExpressionStatement","src":"15847:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15910:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"15921:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15906:3:56"},"nodeType":"YulFunctionCall","src":"15906:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"15930:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"15938:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15926:3:56"},"nodeType":"YulFunctionCall","src":"15926:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15899:6:56"},"nodeType":"YulFunctionCall","src":"15899:43:56"},"nodeType":"YulExpressionStatement","src":"15899: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":"15619:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15630:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15638:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15646:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15657:4:56","type":""}],"src":"15509:439:56"},{"body":{"nodeType":"YulBlock","src":"16122:696:56","statements":[{"nodeType":"YulVariableDeclaration","src":"16132:12:56","value":{"kind":"number","nodeType":"YulLiteral","src":"16142:2:56","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16136:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16153:32:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16171:9:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16182:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16167:3:56"},"nodeType":"YulFunctionCall","src":"16167:18:56"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"16157:6:56","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16201:9:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16212:2:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16194:6:56"},"nodeType":"YulFunctionCall","src":"16194:21:56"},"nodeType":"YulExpressionStatement","src":"16194:21:56"},{"nodeType":"YulVariableDeclaration","src":"16224:17:56","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"16235:6:56"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"16228:3:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16250:27:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16270:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16264:5:56"},"nodeType":"YulFunctionCall","src":"16264:13:56"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16254:6:56","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"16293:6:56"},{"name":"length","nodeType":"YulIdentifier","src":"16301:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16286:6:56"},"nodeType":"YulFunctionCall","src":"16286:22:56"},"nodeType":"YulExpressionStatement","src":"16286:22:56"},{"nodeType":"YulAssignment","src":"16317:25:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16328:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16339:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16324:3:56"},"nodeType":"YulFunctionCall","src":"16324:18:56"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16317:3:56"}]},{"nodeType":"YulVariableDeclaration","src":"16351:54:56","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16373:9:56"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"16388:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16396:2:56"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"16384:3:56"},"nodeType":"YulFunctionCall","src":"16384:15:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16369:3:56"},"nodeType":"YulFunctionCall","src":"16369:31:56"},{"kind":"number","nodeType":"YulLiteral","src":"16402:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16365:3:56"},"nodeType":"YulFunctionCall","src":"16365:40:56"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"16355:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16414:29:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16432:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16440:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16428:3:56"},"nodeType":"YulFunctionCall","src":"16428:15:56"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"16418:6:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16452:13:56","value":{"name":"tail","nodeType":"YulIdentifier","src":"16461:4:56"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"16456:1:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"16523:266:56","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16544:3:56"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"16557:6:56"},{"name":"headStart","nodeType":"YulIdentifier","src":"16565:9:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16553:3:56"},"nodeType":"YulFunctionCall","src":"16553:22:56"},{"kind":"number","nodeType":"YulLiteral","src":"16577:66:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16549:3:56"},"nodeType":"YulFunctionCall","src":"16549:95:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16537:6:56"},"nodeType":"YulFunctionCall","src":"16537:108:56"},"nodeType":"YulExpressionStatement","src":"16537:108:56"},{"nodeType":"YulAssignment","src":"16658:51:56","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"16693:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16687:5:56"},"nodeType":"YulFunctionCall","src":"16687:13:56"},{"name":"tail_2","nodeType":"YulIdentifier","src":"16702:6:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"16668:18:56"},"nodeType":"YulFunctionCall","src":"16668:41:56"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"16658:6:56"}]},{"nodeType":"YulAssignment","src":"16722:25:56","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"16736:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16744:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16732:3:56"},"nodeType":"YulFunctionCall","src":"16732:15:56"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"16722:6:56"}]},{"nodeType":"YulAssignment","src":"16760:19:56","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16771:3:56"},{"name":"_1","nodeType":"YulIdentifier","src":"16776:2:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16767:3:56"},"nodeType":"YulFunctionCall","src":"16767:12:56"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16760:3:56"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16485:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"16488:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16482:2:56"},"nodeType":"YulFunctionCall","src":"16482:13:56"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"16496:18:56","statements":[{"nodeType":"YulAssignment","src":"16498:14:56","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16507:1:56"},{"kind":"number","nodeType":"YulLiteral","src":"16510:1:56","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16503:3:56"},"nodeType":"YulFunctionCall","src":"16503:9:56"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"16498:1:56"}]}]},"pre":{"nodeType":"YulBlock","src":"16478:3:56","statements":[]},"src":"16474:315:56"},{"nodeType":"YulAssignment","src":"16798:14:56","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"16806:6:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16798: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":"16091:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16102:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16113:4:56","type":""}],"src":"15953:865:56"},{"body":{"nodeType":"YulBlock","src":"16918:92:56","statements":[{"nodeType":"YulAssignment","src":"16928:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16940:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"16951:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16936:3:56"},"nodeType":"YulFunctionCall","src":"16936:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16928:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16970:9:56"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16995:6:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"16988:6:56"},"nodeType":"YulFunctionCall","src":"16988:14:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"16981:6:56"},"nodeType":"YulFunctionCall","src":"16981:22:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16963:6:56"},"nodeType":"YulFunctionCall","src":"16963:41:56"},"nodeType":"YulExpressionStatement","src":"16963:41:56"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16887:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16898:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16909:4:56","type":""}],"src":"16823:187:56"},{"body":{"nodeType":"YulBlock","src":"17116:76:56","statements":[{"nodeType":"YulAssignment","src":"17126:26:56","value":{"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"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17126:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17168:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"17179:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17161:6:56"},"nodeType":"YulFunctionCall","src":"17161:25:56"},"nodeType":"YulExpressionStatement","src":"17161:25:56"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17085:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17096:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17107:4:56","type":""}],"src":"17015:177:56"},{"body":{"nodeType":"YulBlock","src":"17361:168:56","statements":[{"nodeType":"YulAssignment","src":"17371:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17383:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17394:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17379:3:56"},"nodeType":"YulFunctionCall","src":"17379:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17371:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17413:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17428:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"17436:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17424:3:56"},"nodeType":"YulFunctionCall","src":"17424:55:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17406:6:56"},"nodeType":"YulFunctionCall","src":"17406:74:56"},"nodeType":"YulExpressionStatement","src":"17406:74:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17500:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17511:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17496:3:56"},"nodeType":"YulFunctionCall","src":"17496:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"17516:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17489:6:56"},"nodeType":"YulFunctionCall","src":"17489:34:56"},"nodeType":"YulExpressionStatement","src":"17489:34:56"}]},"name":"abi_encode_tuple_t_contract$_NonfungiblePositionManager_$5490_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17322:9:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17333:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17341:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17352:4:56","type":""}],"src":"17197:332:56"},{"body":{"nodeType":"YulBlock","src":"17691:233:56","statements":[{"nodeType":"YulAssignment","src":"17701:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17713:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17724:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17709:3:56"},"nodeType":"YulFunctionCall","src":"17709:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17701:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17743:9:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17765:1:56","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"17768:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"17754:10:56"},"nodeType":"YulFunctionCall","src":"17754:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17736:6:56"},"nodeType":"YulFunctionCall","src":"17736:40:56"},"nodeType":"YulExpressionStatement","src":"17736:40:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17796:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17807:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17792:3:56"},"nodeType":"YulFunctionCall","src":"17792:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17823:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"17826:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"17812:10:56"},"nodeType":"YulFunctionCall","src":"17812:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17785:6:56"},"nodeType":"YulFunctionCall","src":"17785:49:56"},"nodeType":"YulExpressionStatement","src":"17785:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17854:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"17865:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17850:3:56"},"nodeType":"YulFunctionCall","src":"17850:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"17874:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"17882:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17870:3:56"},"nodeType":"YulFunctionCall","src":"17870:47:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17843:6:56"},"nodeType":"YulFunctionCall","src":"17843:75:56"},"nodeType":"YulExpressionStatement","src":"17843:75: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":"17644:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"17655:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17663:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17671:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17682:4:56","type":""}],"src":"17534:390:56"},{"body":{"nodeType":"YulBlock","src":"18078:233:56","statements":[{"nodeType":"YulAssignment","src":"18088:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18100:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18111:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18096:3:56"},"nodeType":"YulFunctionCall","src":"18096:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18088:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18130:9:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18152:1:56","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"18155:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"18141:10:56"},"nodeType":"YulFunctionCall","src":"18141:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18123:6:56"},"nodeType":"YulFunctionCall","src":"18123:40:56"},"nodeType":"YulExpressionStatement","src":"18123:40:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18183:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18194:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18179:3:56"},"nodeType":"YulFunctionCall","src":"18179:18:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18210:1:56","type":"","value":"2"},{"name":"value1","nodeType":"YulIdentifier","src":"18213:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"18199:10:56"},"nodeType":"YulFunctionCall","src":"18199:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18172:6:56"},"nodeType":"YulFunctionCall","src":"18172:49:56"},"nodeType":"YulExpressionStatement","src":"18172:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18241:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18252:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18237:3:56"},"nodeType":"YulFunctionCall","src":"18237:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"18261:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"18269:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18257:3:56"},"nodeType":"YulFunctionCall","src":"18257:47:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18230:6:56"},"nodeType":"YulFunctionCall","src":"18230:75:56"},"nodeType":"YulExpressionStatement","src":"18230:75: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":"18031:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"18042:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18050:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18058:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18069:4:56","type":""}],"src":"17929:382:56"},{"body":{"nodeType":"YulBlock","src":"18437:100:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18454:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18465:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18447:6:56"},"nodeType":"YulFunctionCall","src":"18447:21:56"},"nodeType":"YulExpressionStatement","src":"18447:21:56"},{"nodeType":"YulAssignment","src":"18477:54:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18504:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18516:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18527:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18512:3:56"},"nodeType":"YulFunctionCall","src":"18512:18:56"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"18485:18:56"},"nodeType":"YulFunctionCall","src":"18485:46:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18477: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":"18406:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18417:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18428:4:56","type":""}],"src":"18316:221:56"},{"body":{"nodeType":"YulBlock","src":"18716:162:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18733:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18744:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18726:6:56"},"nodeType":"YulFunctionCall","src":"18726:21:56"},"nodeType":"YulExpressionStatement","src":"18726:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18767:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18778:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18763:3:56"},"nodeType":"YulFunctionCall","src":"18763:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"18783:2:56","type":"","value":"12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18756:6:56"},"nodeType":"YulFunctionCall","src":"18756:30:56"},"nodeType":"YulExpressionStatement","src":"18756:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18806:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18817:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18802:3:56"},"nodeType":"YulFunctionCall","src":"18802:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"18822:14:56","type":"","value":"Not approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18795:6:56"},"nodeType":"YulFunctionCall","src":"18795:42:56"},"nodeType":"YulExpressionStatement","src":"18795:42:56"},{"nodeType":"YulAssignment","src":"18846:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18858:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"18869:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18854:3:56"},"nodeType":"YulFunctionCall","src":"18854:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18846:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_70356c467a9713064077b7fa0ff1a074c93b1f7c48415be181b9cd799b628361__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18693:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18707:4:56","type":""}],"src":"18542:336:56"},{"body":{"nodeType":"YulBlock","src":"19057:234:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19074:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19085:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19067:6:56"},"nodeType":"YulFunctionCall","src":"19067:21:56"},"nodeType":"YulExpressionStatement","src":"19067:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19108:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19119:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19104:3:56"},"nodeType":"YulFunctionCall","src":"19104:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"19124:2:56","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19097:6:56"},"nodeType":"YulFunctionCall","src":"19097:30:56"},"nodeType":"YulExpressionStatement","src":"19097:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19147:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19158:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19143:3:56"},"nodeType":"YulFunctionCall","src":"19143:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"19163:34:56","type":"","value":"ERC721: approved query for nonex"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19136:6:56"},"nodeType":"YulFunctionCall","src":"19136:62:56"},"nodeType":"YulExpressionStatement","src":"19136:62:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19218:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19229:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19214:3:56"},"nodeType":"YulFunctionCall","src":"19214:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"19234:14:56","type":"","value":"istent token"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19207:6:56"},"nodeType":"YulFunctionCall","src":"19207:42:56"},"nodeType":"YulExpressionStatement","src":"19207:42:56"},{"nodeType":"YulAssignment","src":"19258:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19270:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19281:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19266:3:56"},"nodeType":"YulFunctionCall","src":"19266:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19258:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19034:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19048:4:56","type":""}],"src":"18883:408:56"},{"body":{"nodeType":"YulBlock","src":"19470:170:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19487:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19498:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19480:6:56"},"nodeType":"YulFunctionCall","src":"19480:21:56"},"nodeType":"YulExpressionStatement","src":"19480:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19521:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19532:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19517:3:56"},"nodeType":"YulFunctionCall","src":"19517:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"19537:2:56","type":"","value":"20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19510:6:56"},"nodeType":"YulFunctionCall","src":"19510:30:56"},"nodeType":"YulExpressionStatement","src":"19510:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19560:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19571:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19556:3:56"},"nodeType":"YulFunctionCall","src":"19556:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"19576:22:56","type":"","value":"Price slippage check"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19549:6:56"},"nodeType":"YulFunctionCall","src":"19549:50:56"},"nodeType":"YulExpressionStatement","src":"19549:50:56"},{"nodeType":"YulAssignment","src":"19608:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19620:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19631:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19616:3:56"},"nodeType":"YulFunctionCall","src":"19616:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19608:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19447:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19461:4:56","type":""}],"src":"19296:344:56"},{"body":{"nodeType":"YulBlock","src":"19819:166:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19836:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19847:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19829:6:56"},"nodeType":"YulFunctionCall","src":"19829:21:56"},"nodeType":"YulExpressionStatement","src":"19829:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19870:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19881:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19866:3:56"},"nodeType":"YulFunctionCall","src":"19866:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"19886:2:56","type":"","value":"16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19859:6:56"},"nodeType":"YulFunctionCall","src":"19859:30:56"},"nodeType":"YulExpressionStatement","src":"19859:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19909:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19920:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19905:3:56"},"nodeType":"YulFunctionCall","src":"19905:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"19925:18:56","type":"","value":"Invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19898:6:56"},"nodeType":"YulFunctionCall","src":"19898:46:56"},"nodeType":"YulExpressionStatement","src":"19898:46:56"},{"nodeType":"YulAssignment","src":"19953:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19965:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"19976:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19961:3:56"},"nodeType":"YulFunctionCall","src":"19961:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19953:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_b44e5a2e76d616f71f124d91f8560c46215c55a45ba6a1b6e492edf2295dcc48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19796:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19810:4:56","type":""}],"src":"19645:340:56"},{"body":{"nodeType":"YulBlock","src":"20164:161:56","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20181:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20192:2:56","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20174:6:56"},"nodeType":"YulFunctionCall","src":"20174:21:56"},"nodeType":"YulExpressionStatement","src":"20174:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20215:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20226:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20211:3:56"},"nodeType":"YulFunctionCall","src":"20211:18:56"},{"kind":"number","nodeType":"YulLiteral","src":"20231:2:56","type":"","value":"11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20204:6:56"},"nodeType":"YulFunctionCall","src":"20204:30:56"},"nodeType":"YulExpressionStatement","src":"20204:30:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20254:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20265:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20250:3:56"},"nodeType":"YulFunctionCall","src":"20250:18:56"},{"kind":"string","nodeType":"YulLiteral","src":"20270:13:56","type":"","value":"Not cleared"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20243:6:56"},"nodeType":"YulFunctionCall","src":"20243:41:56"},"nodeType":"YulExpressionStatement","src":"20243:41:56"},{"nodeType":"YulAssignment","src":"20293:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20305:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20316:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20301:3:56"},"nodeType":"YulFunctionCall","src":"20301:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20293:4:56"}]}]},"name":"abi_encode_tuple_t_stringliteral_fa1d7f5abfb64daa85ec56d31f717d114a9182c82071ec276fdb7487a00b013e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20141:9:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20155:4:56","type":""}],"src":"19990:335:56"},{"body":{"nodeType":"YulBlock","src":"20499:396:56","statements":[{"nodeType":"YulAssignment","src":"20509:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20521:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20532:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20517:3:56"},"nodeType":"YulFunctionCall","src":"20517:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20509:4:56"}]},{"nodeType":"YulVariableDeclaration","src":"20545:23:56","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20561:6:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20555:5:56"},"nodeType":"YulFunctionCall","src":"20555:13:56"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"20549:2:56","type":""}]},{"nodeType":"YulVariableDeclaration","src":"20577:52:56","value":{"kind":"number","nodeType":"YulLiteral","src":"20587:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"20581:2:56","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20645:9:56"},{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"20666:2:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20660:5:56"},"nodeType":"YulFunctionCall","src":"20660:9:56"},{"name":"_2","nodeType":"YulIdentifier","src":"20671:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20656:3:56"},"nodeType":"YulFunctionCall","src":"20656:18:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20638:6:56"},"nodeType":"YulFunctionCall","src":"20638:37:56"},"nodeType":"YulExpressionStatement","src":"20638:37:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20695:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20706:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20691:3:56"},"nodeType":"YulFunctionCall","src":"20691:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"20727:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"20731:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20723:3:56"},"nodeType":"YulFunctionCall","src":"20723:13:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20717:5:56"},"nodeType":"YulFunctionCall","src":"20717:20:56"},{"name":"_2","nodeType":"YulIdentifier","src":"20739:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20713:3:56"},"nodeType":"YulFunctionCall","src":"20713:29:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20684:6:56"},"nodeType":"YulFunctionCall","src":"20684:59:56"},"nodeType":"YulExpressionStatement","src":"20684:59:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20763:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20774:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20759:3:56"},"nodeType":"YulFunctionCall","src":"20759:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"20795:2:56"},{"kind":"number","nodeType":"YulLiteral","src":"20799:4:56","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20791:3:56"},"nodeType":"YulFunctionCall","src":"20791:13:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20785:5:56"},"nodeType":"YulFunctionCall","src":"20785:20:56"},{"kind":"number","nodeType":"YulLiteral","src":"20807:8:56","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20781:3:56"},"nodeType":"YulFunctionCall","src":"20781:35:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20752:6:56"},"nodeType":"YulFunctionCall","src":"20752:65:56"},"nodeType":"YulExpressionStatement","src":"20752:65:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20837:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"20848:4:56","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20833:3:56"},"nodeType":"YulFunctionCall","src":"20833:20:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20869:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"20877:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20865:3:56"},"nodeType":"YulFunctionCall","src":"20865:17:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20859:5:56"},"nodeType":"YulFunctionCall","src":"20859:24:56"},{"name":"_2","nodeType":"YulIdentifier","src":"20885:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20855:3:56"},"nodeType":"YulFunctionCall","src":"20855:33:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20826:6:56"},"nodeType":"YulFunctionCall","src":"20826:63:56"},"nodeType":"YulExpressionStatement","src":"20826:63:56"}]},"name":"abi_encode_tuple_t_struct$_MintCallbackData_$5737_memory_ptr__to_t_struct$_MintCallbackData_$5737_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20468:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20479:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20490:4:56","type":""}],"src":"20330:565:56"},{"body":{"nodeType":"YulBlock","src":"21057:203:56","statements":[{"nodeType":"YulAssignment","src":"21067:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21079:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21090:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21075:3:56"},"nodeType":"YulFunctionCall","src":"21075:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21067:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21109:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21124:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"21132:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21120:3:56"},"nodeType":"YulFunctionCall","src":"21120:47:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21102:6:56"},"nodeType":"YulFunctionCall","src":"21102:66:56"},"nodeType":"YulExpressionStatement","src":"21102:66:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21188:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21199:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21184:3:56"},"nodeType":"YulFunctionCall","src":"21184:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"21204:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21177:6:56"},"nodeType":"YulFunctionCall","src":"21177:34:56"},"nodeType":"YulExpressionStatement","src":"21177:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21231:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21242:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21227:3:56"},"nodeType":"YulFunctionCall","src":"21227:18:56"},{"name":"value2","nodeType":"YulIdentifier","src":"21247:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21220:6:56"},"nodeType":"YulFunctionCall","src":"21220:34:56"},"nodeType":"YulExpressionStatement","src":"21220: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":"21010:9:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"21021:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21029:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21037:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21048:4:56","type":""}],"src":"20900:360:56"},{"body":{"nodeType":"YulBlock","src":"21366:76:56","statements":[{"nodeType":"YulAssignment","src":"21376:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21388:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21399:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21384:3:56"},"nodeType":"YulFunctionCall","src":"21384:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21376:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21418:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"21429:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21411:6:56"},"nodeType":"YulFunctionCall","src":"21411:25:56"},"nodeType":"YulExpressionStatement","src":"21411:25:56"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21335:9:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21346:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21357:4:56","type":""}],"src":"21265:177:56"},{"body":{"nodeType":"YulBlock","src":"21632:247:56","statements":[{"nodeType":"YulAssignment","src":"21642:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21654:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21665:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21650:3:56"},"nodeType":"YulFunctionCall","src":"21650:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21642:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21685:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"21696:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21678:6:56"},"nodeType":"YulFunctionCall","src":"21678:25:56"},"nodeType":"YulExpressionStatement","src":"21678:25:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21723:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21734:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21719:3:56"},"nodeType":"YulFunctionCall","src":"21719:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"21743:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"21751:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21739:3:56"},"nodeType":"YulFunctionCall","src":"21739:47:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21712:6:56"},"nodeType":"YulFunctionCall","src":"21712:75:56"},"nodeType":"YulExpressionStatement","src":"21712:75:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21807:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21818:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21803:3:56"},"nodeType":"YulFunctionCall","src":"21803:18:56"},{"name":"value2","nodeType":"YulIdentifier","src":"21823:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21796:6:56"},"nodeType":"YulFunctionCall","src":"21796:34:56"},"nodeType":"YulExpressionStatement","src":"21796:34:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21850:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"21861:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21846:3:56"},"nodeType":"YulFunctionCall","src":"21846:18:56"},{"name":"value3","nodeType":"YulIdentifier","src":"21866:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21839:6:56"},"nodeType":"YulFunctionCall","src":"21839:34:56"},"nodeType":"YulExpressionStatement","src":"21839: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":"21577:9:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"21588:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"21596:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21604:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21612:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21623:4:56","type":""}],"src":"21447:432:56"},{"body":{"nodeType":"YulBlock","src":"22013:119:56","statements":[{"nodeType":"YulAssignment","src":"22023:26:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22035:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22046:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22031:3:56"},"nodeType":"YulFunctionCall","src":"22031:18:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22023:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22065:9:56"},{"name":"value0","nodeType":"YulIdentifier","src":"22076:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22058:6:56"},"nodeType":"YulFunctionCall","src":"22058:25:56"},"nodeType":"YulExpressionStatement","src":"22058:25:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22103:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22114:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22099:3:56"},"nodeType":"YulFunctionCall","src":"22099:18:56"},{"name":"value1","nodeType":"YulIdentifier","src":"22119:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22092:6:56"},"nodeType":"YulFunctionCall","src":"22092:34:56"},"nodeType":"YulExpressionStatement","src":"22092: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":"21974:9:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21985:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21993:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22004:4:56","type":""}],"src":"21884:248:56"},{"body":{"nodeType":"YulBlock","src":"22536:765:56","statements":[{"nodeType":"YulAssignment","src":"22546:27:56","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22558:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22569:3:56","type":"","value":"384"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22554:3:56"},"nodeType":"YulFunctionCall","src":"22554:19:56"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22546:4:56"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22589:9:56"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22604:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"22612:26:56","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22600:3:56"},"nodeType":"YulFunctionCall","src":"22600:39:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22582:6:56"},"nodeType":"YulFunctionCall","src":"22582:58:56"},"nodeType":"YulExpressionStatement","src":"22582:58:56"},{"nodeType":"YulVariableDeclaration","src":"22649:52:56","value":{"kind":"number","nodeType":"YulLiteral","src":"22659:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"22653:2:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22721:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22732:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22717:3:56"},"nodeType":"YulFunctionCall","src":"22717:18:56"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"22741:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"22749:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22737:3:56"},"nodeType":"YulFunctionCall","src":"22737:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22710:6:56"},"nodeType":"YulFunctionCall","src":"22710:43:56"},"nodeType":"YulExpressionStatement","src":"22710:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22773:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22784:2:56","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22769:3:56"},"nodeType":"YulFunctionCall","src":"22769:18:56"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"22793:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"22801:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22789:3:56"},"nodeType":"YulFunctionCall","src":"22789:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22762:6:56"},"nodeType":"YulFunctionCall","src":"22762:43:56"},"nodeType":"YulExpressionStatement","src":"22762:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22825:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22836:2:56","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22821:3:56"},"nodeType":"YulFunctionCall","src":"22821:18:56"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"22845:6:56"},{"name":"_1","nodeType":"YulIdentifier","src":"22853:2:56"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22841:3:56"},"nodeType":"YulFunctionCall","src":"22841:15:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22814:6:56"},"nodeType":"YulFunctionCall","src":"22814:43:56"},"nodeType":"YulExpressionStatement","src":"22814:43:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22877:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22888:3:56","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22873:3:56"},"nodeType":"YulFunctionCall","src":"22873:19:56"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"22898:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"22906:8:56","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22894:3:56"},"nodeType":"YulFunctionCall","src":"22894:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22866:6:56"},"nodeType":"YulFunctionCall","src":"22866:50:56"},"nodeType":"YulExpressionStatement","src":"22866:50:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22936:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"22947:3:56","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22932:3:56"},"nodeType":"YulFunctionCall","src":"22932:19:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22964:1:56","type":"","value":"2"},{"name":"value5","nodeType":"YulIdentifier","src":"22967:6:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"22953:10:56"},"nodeType":"YulFunctionCall","src":"22953:21:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22925:6:56"},"nodeType":"YulFunctionCall","src":"22925:50:56"},"nodeType":"YulExpressionStatement","src":"22925:50:56"},{"expression":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"23003:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23015:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23026:3:56","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23011:3:56"},"nodeType":"YulFunctionCall","src":"23011:19:56"}],"functionName":{"name":"abi_encode_t_int24","nodeType":"YulIdentifier","src":"22984:18:56"},"nodeType":"YulFunctionCall","src":"22984:47:56"},"nodeType":"YulExpressionStatement","src":"22984:47:56"},{"expression":{"arguments":[{"name":"value7","nodeType":"YulIdentifier","src":"23061:6:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23073:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23084:3:56","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23069:3:56"},"nodeType":"YulFunctionCall","src":"23069:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"23040:20:56"},"nodeType":"YulFunctionCall","src":"23040:49:56"},"nodeType":"YulExpressionStatement","src":"23040:49:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23109:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23120:3:56","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23105:3:56"},"nodeType":"YulFunctionCall","src":"23105:19:56"},{"name":"value8","nodeType":"YulIdentifier","src":"23126:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23098:6:56"},"nodeType":"YulFunctionCall","src":"23098:35:56"},"nodeType":"YulExpressionStatement","src":"23098:35:56"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23153:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23164:3:56","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23149:3:56"},"nodeType":"YulFunctionCall","src":"23149:19:56"},{"name":"value9","nodeType":"YulIdentifier","src":"23170:6:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23142:6:56"},"nodeType":"YulFunctionCall","src":"23142:35:56"},"nodeType":"YulExpressionStatement","src":"23142:35:56"},{"expression":{"arguments":[{"name":"value10","nodeType":"YulIdentifier","src":"23207:7:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23220:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23231:3:56","type":"","value":"320"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23216:3:56"},"nodeType":"YulFunctionCall","src":"23216:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"23186:20:56"},"nodeType":"YulFunctionCall","src":"23186:50:56"},"nodeType":"YulExpressionStatement","src":"23186:50:56"},{"expression":{"arguments":[{"name":"value11","nodeType":"YulIdentifier","src":"23266:7:56"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23279:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"23290:3:56","type":"","value":"352"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23275:3:56"},"nodeType":"YulFunctionCall","src":"23275:19:56"}],"functionName":{"name":"abi_encode_t_uint128","nodeType":"YulIdentifier","src":"23245:20:56"},"nodeType":"YulFunctionCall","src":"23245:50:56"},"nodeType":"YulExpressionStatement","src":"23245: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":"22415:9:56","type":""},{"name":"value11","nodeType":"YulTypedName","src":"22426:7:56","type":""},{"name":"value10","nodeType":"YulTypedName","src":"22435:7:56","type":""},{"name":"value9","nodeType":"YulTypedName","src":"22444:6:56","type":""},{"name":"value8","nodeType":"YulTypedName","src":"22452:6:56","type":""},{"name":"value7","nodeType":"YulTypedName","src":"22460:6:56","type":""},{"name":"value6","nodeType":"YulTypedName","src":"22468:6:56","type":""},{"name":"value5","nodeType":"YulTypedName","src":"22476:6:56","type":""},{"name":"value4","nodeType":"YulTypedName","src":"22484:6:56","type":""},{"name":"value3","nodeType":"YulTypedName","src":"22492:6:56","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22500:6:56","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22508:6:56","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22516:6:56","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22527:4:56","type":""}],"src":"22137:1164:56"},{"body":{"nodeType":"YulBlock","src":"23400:498:56","statements":[{"nodeType":"YulVariableDeclaration","src":"23410:51:56","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"23449:11:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23436:12:56"},"nodeType":"YulFunctionCall","src":"23436:25:56"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"23414:18:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"23609:22:56","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"23618:4:56"},{"name":"addr","nodeType":"YulIdentifier","src":"23624:4:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"23611:6:56"},"nodeType":"YulFunctionCall","src":"23611:18:56"},"nodeType":"YulExpressionStatement","src":"23611:18:56"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"23484:18:56"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"23512:12:56"},"nodeType":"YulFunctionCall","src":"23512:14:56"},{"name":"base_ref","nodeType":"YulIdentifier","src":"23528:8:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23508:3:56"},"nodeType":"YulFunctionCall","src":"23508:29:56"},{"kind":"number","nodeType":"YulLiteral","src":"23539:66:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23504:3:56"},"nodeType":"YulFunctionCall","src":"23504:102:56"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"23480:3:56"},"nodeType":"YulFunctionCall","src":"23480:127:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"23473:6:56"},"nodeType":"YulFunctionCall","src":"23473:135:56"},"nodeType":"YulIf","src":"23470:2:56"},{"nodeType":"YulVariableDeclaration","src":"23640:47:56","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"23658:8:56"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"23668:18:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23654:3:56"},"nodeType":"YulFunctionCall","src":"23654:33:56"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"23644:6:56","type":""}]},{"nodeType":"YulAssignment","src":"23696:30:56","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"23719:6:56"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23706:12:56"},"nodeType":"YulFunctionCall","src":"23706:20:56"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"23696:6:56"}]},{"body":{"nodeType":"YulBlock","src":"23769:22:56","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"23778:4:56"},{"name":"addr","nodeType":"YulIdentifier","src":"23784:4:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"23771:6:56"},"nodeType":"YulFunctionCall","src":"23771:18:56"},"nodeType":"YulExpressionStatement","src":"23771:18:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"23741:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"23749:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23738:2:56"},"nodeType":"YulFunctionCall","src":"23738:30:56"},"nodeType":"YulIf","src":"23735:2:56"},{"nodeType":"YulAssignment","src":"23800:25:56","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"23812:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"23820:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23808:3:56"},"nodeType":"YulFunctionCall","src":"23808:17:56"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"23800:4:56"}]},{"body":{"nodeType":"YulBlock","src":"23876:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23885:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"23888:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"23878:6:56"},"nodeType":"YulFunctionCall","src":"23878:12:56"},"nodeType":"YulExpressionStatement","src":"23878:12:56"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"23841:4:56"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"23851:12:56"},"nodeType":"YulFunctionCall","src":"23851:14:56"},{"name":"length","nodeType":"YulIdentifier","src":"23867:6:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23847:3:56"},"nodeType":"YulFunctionCall","src":"23847:27:56"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"23837:3:56"},"nodeType":"YulFunctionCall","src":"23837:38:56"},"nodeType":"YulIf","src":"23834:2:56"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"23357:8:56","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"23367:11:56","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"23383:4:56","type":""},{"name":"length","nodeType":"YulTypedName","src":"23389:6:56","type":""}],"src":"23306:592:56"},{"body":{"nodeType":"YulBlock","src":"23947:198:56","statements":[{"nodeType":"YulAssignment","src":"23957:19:56","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23973:2:56","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"23967:5:56"},"nodeType":"YulFunctionCall","src":"23967:9:56"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23957:6:56"}]},{"nodeType":"YulVariableDeclaration","src":"23985:35:56","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24007:6:56"},{"name":"size","nodeType":"YulIdentifier","src":"24015:4:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24003:3:56"},"nodeType":"YulFunctionCall","src":"24003:17:56"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"23989:10:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"24095:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"24097:7:56"},"nodeType":"YulFunctionCall","src":"24097:9:56"},"nodeType":"YulExpressionStatement","src":"24097:9:56"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24038:10:56"},{"kind":"number","nodeType":"YulLiteral","src":"24050:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24035:2:56"},"nodeType":"YulFunctionCall","src":"24035:34:56"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24074:10:56"},{"name":"memPtr","nodeType":"YulIdentifier","src":"24086:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"24071:2:56"},"nodeType":"YulFunctionCall","src":"24071:22:56"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"24032:2:56"},"nodeType":"YulFunctionCall","src":"24032:62:56"},"nodeType":"YulIf","src":"24029:2:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24124:2:56","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24128:10:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24117:6:56"},"nodeType":"YulFunctionCall","src":"24117:22:56"},"nodeType":"YulExpressionStatement","src":"24117:22:56"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"23927:4:56","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"23936:6:56","type":""}],"src":"23903:242:56"},{"body":{"nodeType":"YulBlock","src":"24209:181:56","statements":[{"body":{"nodeType":"YulBlock","src":"24253:13:56","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"24255:7:56"},"nodeType":"YulFunctionCall","src":"24255:9:56"},"nodeType":"YulExpressionStatement","src":"24255:9:56"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"24225:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"24233:18:56","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24222:2:56"},"nodeType":"YulFunctionCall","src":"24222:30:56"},"nodeType":"YulIf","src":"24219:2:56"},{"nodeType":"YulAssignment","src":"24275:109:56","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"24295:6:56"},{"kind":"number","nodeType":"YulLiteral","src":"24303:4:56","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24291:3:56"},"nodeType":"YulFunctionCall","src":"24291:17:56"},{"kind":"number","nodeType":"YulLiteral","src":"24310:66:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24287:3:56"},"nodeType":"YulFunctionCall","src":"24287:90:56"},{"kind":"number","nodeType":"YulLiteral","src":"24379:4:56","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24283:3:56"},"nodeType":"YulFunctionCall","src":"24283:101:56"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"24275:4:56"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"24189:6:56","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"24200:4:56","type":""}],"src":"24150:240:56"},{"body":{"nodeType":"YulBlock","src":"24448:205:56","statements":[{"nodeType":"YulVariableDeclaration","src":"24458:10:56","value":{"kind":"number","nodeType":"YulLiteral","src":"24467:1:56","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"24462:1:56","type":""}]},{"body":{"nodeType":"YulBlock","src":"24527:63:56","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"24552:3:56"},{"name":"i","nodeType":"YulIdentifier","src":"24557:1:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24548:3:56"},"nodeType":"YulFunctionCall","src":"24548:11:56"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"24571:3:56"},{"name":"i","nodeType":"YulIdentifier","src":"24576:1:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24567:3:56"},"nodeType":"YulFunctionCall","src":"24567:11:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"24561:5:56"},"nodeType":"YulFunctionCall","src":"24561:18:56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24541:6:56"},"nodeType":"YulFunctionCall","src":"24541:39:56"},"nodeType":"YulExpressionStatement","src":"24541:39:56"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"24488:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"24491:6:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"24485:2:56"},"nodeType":"YulFunctionCall","src":"24485:13:56"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"24499:19:56","statements":[{"nodeType":"YulAssignment","src":"24501:15:56","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"24510:1:56"},{"kind":"number","nodeType":"YulLiteral","src":"24513:2:56","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24506:3:56"},"nodeType":"YulFunctionCall","src":"24506:10:56"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"24501:1:56"}]}]},"pre":{"nodeType":"YulBlock","src":"24481:3:56","statements":[]},"src":"24477:113:56"},{"body":{"nodeType":"YulBlock","src":"24616:31:56","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"24629:3:56"},{"name":"length","nodeType":"YulIdentifier","src":"24634:6:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24625:3:56"},"nodeType":"YulFunctionCall","src":"24625:16:56"},{"kind":"number","nodeType":"YulLiteral","src":"24643:1:56","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24618:6:56"},"nodeType":"YulFunctionCall","src":"24618:27:56"},"nodeType":"YulExpressionStatement","src":"24618:27:56"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"24605:1:56"},{"name":"length","nodeType":"YulIdentifier","src":"24608:6:56"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24602:2:56"},"nodeType":"YulFunctionCall","src":"24602:13:56"},"nodeType":"YulIf","src":"24599:2:56"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"24426:3:56","type":""},{"name":"dst","nodeType":"YulTypedName","src":"24431:3:56","type":""},{"name":"length","nodeType":"YulTypedName","src":"24436:6:56","type":""}],"src":"24395:258:56"},{"body":{"nodeType":"YulBlock","src":"24705:109:56","statements":[{"body":{"nodeType":"YulBlock","src":"24792:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24801:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24804:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24794:6:56"},"nodeType":"YulFunctionCall","src":"24794:12:56"},"nodeType":"YulExpressionStatement","src":"24794:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24728:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24739:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"24746:42:56","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"24735:3:56"},"nodeType":"YulFunctionCall","src":"24735:54:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"24725:2:56"},"nodeType":"YulFunctionCall","src":"24725:65:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"24718:6:56"},"nodeType":"YulFunctionCall","src":"24718:73:56"},"nodeType":"YulIf","src":"24715:2:56"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24694:5:56","type":""}],"src":"24658:156:56"},{"body":{"nodeType":"YulBlock","src":"24863:76:56","statements":[{"body":{"nodeType":"YulBlock","src":"24917:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24926:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24929:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24919:6:56"},"nodeType":"YulFunctionCall","src":"24919:12:56"},"nodeType":"YulExpressionStatement","src":"24919:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24886:5:56"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24907:5:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"24900:6:56"},"nodeType":"YulFunctionCall","src":"24900:13:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"24893:6:56"},"nodeType":"YulFunctionCall","src":"24893:21:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"24883:2:56"},"nodeType":"YulFunctionCall","src":"24883:32:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"24876:6:56"},"nodeType":"YulFunctionCall","src":"24876:40:56"},"nodeType":"YulIf","src":"24873:2:56"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24852:5:56","type":""}],"src":"24819:120:56"},{"body":{"nodeType":"YulBlock","src":"24989:75:56","statements":[{"body":{"nodeType":"YulBlock","src":"25042:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25051:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25054:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25044:6:56"},"nodeType":"YulFunctionCall","src":"25044:12:56"},"nodeType":"YulExpressionStatement","src":"25044:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25012:5:56"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25030:1:56","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"25033:5:56"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"25019:10:56"},"nodeType":"YulFunctionCall","src":"25019:20:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"25009:2:56"},"nodeType":"YulFunctionCall","src":"25009:31:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25002:6:56"},"nodeType":"YulFunctionCall","src":"25002:39:56"},"nodeType":"YulIf","src":"24999:2:56"}]},"name":"validator_revert_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24978:5:56","type":""}],"src":"24944:120:56"},{"body":{"nodeType":"YulBlock","src":"25116:101:56","statements":[{"body":{"nodeType":"YulBlock","src":"25195:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25204:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25207:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25197:6:56"},"nodeType":"YulFunctionCall","src":"25197:12:56"},"nodeType":"YulExpressionStatement","src":"25197:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25139:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25150:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"25157:34:56","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"25146:3:56"},"nodeType":"YulFunctionCall","src":"25146:46:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"25136:2:56"},"nodeType":"YulFunctionCall","src":"25136:57:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25129:6:56"},"nodeType":"YulFunctionCall","src":"25129:65:56"},"nodeType":"YulIf","src":"25126:2:56"}]},"name":"validator_revert_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"25105:5:56","type":""}],"src":"25069:148:56"},{"body":{"nodeType":"YulBlock","src":"25267:71:56","statements":[{"body":{"nodeType":"YulBlock","src":"25316:16:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25325:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25328:1:56","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25318:6:56"},"nodeType":"YulFunctionCall","src":"25318:12:56"},"nodeType":"YulExpressionStatement","src":"25318:12:56"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25290:5:56"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25301:5:56"},{"kind":"number","nodeType":"YulLiteral","src":"25308:4:56","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"25297:3:56"},"nodeType":"YulFunctionCall","src":"25297:16:56"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"25287:2:56"},"nodeType":"YulFunctionCall","src":"25287:27:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25280:6:56"},"nodeType":"YulFunctionCall","src":"25280:35:56"},"nodeType":"YulIf","src":"25277:2:56"}]},"name":"validator_revert_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"25256:5:56","type":""}],"src":"25222: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_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, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { 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_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_$6761_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_$6742_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_$6719_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_$5737_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_$6692_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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 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, 0xffffffffffffffffffffffffffffffff))\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, 0xffffffffffffffffffffffffffffffffffffffff))\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, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), signextend(2, value2))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 128), 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, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), signextend(2, value2))\n        let _1 := 0xffffffffffffffffffffffffffffffff\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, 0xffffffffffffffffffffffffffffffffffffffff))\n        let _1 := 0xffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\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_$5490_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_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, 0xffffffffffffffffffffffffffffffff))\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, 0xffffffffffffffffffffffffffffffff))\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_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ERC721: approved query for nonex\")\n        mstore(add(headStart, 96), \"istent token\")\n        tail := add(headStart, 128)\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_stringliteral_fa1d7f5abfb64daa85ec56d31f717d114a9182c82071ec276fdb7487a00b013e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"Not cleared\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_struct$_MintCallbackData_$5737_memory_ptr__to_t_struct$_MintCallbackData_$5737_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := mload(value0)\n        let _2 := 0xffffffffffffffffffffffffffffffffffffffff\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, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    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, 0xffffffffffffffffffffffffffffffff))\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, 0xffffffffffffffffffffffff))\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), 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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { 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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 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, 0xffffffffffffffffffffffffffffffffffffffff))) { 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, 0xffffffffffffffffffffffffffffffff))) { 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":{"4482":[{"length":32,"start":11073}],"5530":[{"length":32,"start":5383}],"5533":[{"length":32,"start":5416}],"6024":[{"length":32,"start":2786},{"length":32,"start":3591},{"length":32,"start":3790},{"length":32,"start":5975},{"length":32,"start":10953},{"length":32,"start":11908},{"length":32,"start":13850}],"6028":[{"length":32,"start":692},{"length":32,"start":8826},{"length":32,"start":9989},{"length":32,"start":10235},{"length":32,"start":14934},{"length":32,"start":15004},{"length":32,"start":15120}]},"linkReferences":{},"object":"6080604052600436106102a45760003560e01c80636c0360eb1161016e578063ac9650d8116100cb578063c87b56dd1161007f578063e985e9c511610064578063e985e9c514610730578063f3995c6714610750578063fc6f78651461076357610328565b8063c87b56dd146106fd578063df2ab5bb1461071d57610328565b8063c2e3140a116100b0578063c2e3140a146106cd578063c45a0155146106e0578063c53af304146106f557610328565b8063ac9650d81461068d578063b88d4fde146106ad57610328565b806395d89b4111610122578063a22cb46511610107578063a22cb46514610647578063a4a78f0c14610667578063a98ce37f1461067a57610328565b806395d89b41146105fa57806399fbab881461060f57610328565b80637ac2ff7b116101535780637ac2ff7b146105af57806388316456146105c257806390793ea8146105e557610328565b80636c0360eb1461057a57806370a082311461058f57610328565b80632f745c591161021c57806342966c68116101d05780634cb42d2d116101b55780634cb42d2d1461051a5780634f6ccce71461053a5780636352211e1461055a57610328565b806342966c68146104f45780634659a4941461050757610328565b80633644e515116102015780633644e5151461049f5780633beb26c4146104b457806342842e0e146104d457610328565b80632f745c591461046a57806330adf81f1461048a57610328565b80630c49ccbe1161027357806318160ddd1161025857806318160ddd14610406578063219f5d171461042857806323b872dd1461044a57610328565b80630c49ccbe146103d257806313ead562146103f357610328565b806301ffc9a71461032d57806306fdde0314610363578063081812fc14610385578063095ea7b3146103b257610328565b3661032857336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610326576040805162461bcd60e51b815260206004820152600860248201527f4e6f742053414d42000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561033957600080fd5b5061034d6103483660046153e8565b610776565b60405161035a9190615960565b60405180910390f35b34801561036f57600080fd5b506103786107b1565b60405161035a91906159b3565b34801561039157600080fd5b506103a56103a03660046156fa565b610847565b60405161035a9190615824565b3480156103be57600080fd5b506103266103cd3660046152b2565b6108a3565b6103e56103e03660046154c5565b610979565b60405161035a929190615b84565b6103a5610401366004615145565b610de5565b34801561041257600080fd5b5061041b6110f2565b60405161035a919061596b565b61043b6104363660046154d6565b611103565b60405161035a93929190615b3f565b34801561045657600080fd5b5061032661046536600461519e565b61143c565b34801561047657600080fd5b5061041b6104853660046152b2565b611493565b34801561049657600080fd5b5061041b6114be565b3480156104ab57600080fd5b5061041b6114e2565b3480156104c057600080fd5b506103266104cf3660046156fa565b6115a0565b3480156104e057600080fd5b506103266104ef36600461519e565b6115a5565b6103266105023660046156fa565b6115c0565b61032661051536600461531e565b61168f565b34801561052657600080fd5b50610326610535366004615759565b611742565b34801561054657600080fd5b5061041b6105553660046156fa565b6117c0565b34801561056657600080fd5b506103a56105753660046156fa565b6117d6565b34801561058657600080fd5b506103786117fe565b34801561059b57600080fd5b5061041b6105aa3660046150f1565b611803565b6103266105bd36600461531e565b61186b565b6105d56105d0366004615592565b611d17565b60405161035a9493929190615b60565b3480156105f157600080fd5b506103a5612278565b34801561060657600080fd5b5061037861229c565b34801561061b57600080fd5b5061062f61062a3660046156fa565b6122fd565b60405161035a9c9b9a99989796959493929190615b92565b34801561065357600080fd5b50610326610662366004615285565b61252c565b61032661067536600461531e565b61264f565b610326610688366004615712565b612701565b6106a061069b366004615379565b612881565b60405161035a91906158e2565b3480156106b957600080fd5b506103266106c83660046151de565b6129c1565b6103266106db36600461531e565b612a1f565b3480156106ec57600080fd5b506103a5612ac7565b610326612aeb565b34801561070957600080fd5b506103786107183660046156fa565b612afd565b61032661072b3660046152dd565b612bcc565b34801561073c57600080fd5b5061034d61074b36600461510d565b612caf565b61032661075e36600461531e565b612cdd565b6103e56107713660046154ae565b612d68565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561083d5780601f106108125761010080835404028352916020019161083d565b820191906000526020600020905b81548152906001019060200180831161082057829003601f168201915b5050505050905090565b600061085282613286565b6108775760405162461bcd60e51b815260040161086e906159fd565b60405180910390fd5b506000908152600c60205260409020546c0100000000000000000000000090046001600160a01b031690565b60006108ae826117d6565b9050806001600160a01b0316836001600160a01b031614156109015760405162461bcd60e51b8152600401808060200182810382526021815260200180615f246021913960400191505060405180910390fd5b806001600160a01b0316610913613293565b6001600160a01b0316148061092f575061092f8161074b613293565b61096a5760405162461bcd60e51b8152600401808060200182810382526038815260200180615e4e6038913960400191505060405180910390fd5b6109748383613297565b505050565b6000808235610988338261331b565b6109a45760405162461bcd60e51b815260040161086e906159c6565b8360800135806109b26133b7565b1115610a05576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b6000610a1760408701602088016155a4565b6001600160801b031611610a2a57600080fd5b84356000908152600c602090815260409182902060018101549092600160801b9091046001600160801b031691610a659189019089016155a4565b6001600160801b0316816001600160801b03161015610a8357600080fd5b60018281015469ffffffffffffffffffff166000908152600b60209081526040808320815160608101835281546001600160a01b039081168252919095015490811692850192909252600160a01b90910462ffffff1690830152610b077f0000000000000000000000000000000000000000000000000000000000000000836133bd565b60018501549091506001600160a01b0382169063a34123a7906a01000000000000000000008104600290810b91600160681b9004900b610b4d60408e0160208f016155a4565b6040518463ffffffff1660e01b8152600401610b6b9392919061598d565b6040805180830381600087803b158015610b8457600080fd5b505af1158015610b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190615736565b909850965060408901358810801590610bd9575088606001358710155b610bf55760405162461bcd60e51b815260040161086e90615a5a565b6001840154600090610c259030906a01000000000000000000008104600290810b91600160681b9004900b6134b9565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610c56919061596b565b60a06040518083038186803b158015610c6e57600080fd5b505afa158015610c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca691906155ee565b50509250925050610ccb87600201548303876001600160801b0316600160801b613513565b6004880180546fffffffffffffffffffffffffffffffff198116928e016001600160801b039182160181169290921790556003880154610d1591908303908816600160801b613513565b6004880180546001600160801b03808216938e01600160801b9283900482160116029190911790556002870182905560038701819055610d5b60408d0160208e016155a4565b86038760010160106101000a8154816001600160801b0302191690836001600160801b031602179055508b600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48d6020016020810190610dbe91906155a4565b8d8d604051610dcf93929190615b3f565b60405180910390a2505050505050505050915091565b6000836001600160a01b0316856001600160a01b031610610e0557600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b158015610e9057600080fd5b505afa158015610ea4573d6000803e3d6000fd5b505050506040513d6020811015610eba57600080fd5b505190506001600160a01b038116611009577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b158015610f5957600080fd5b505af1158015610f6d573d6000803e3d6000fd5b505050506040513d6020811015610f8357600080fd5b5051604080517ff637731d0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b158015610fec57600080fd5b505af1158015611000573d6000803e3d6000fd5b505050506110ea565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d60e081101561106e57600080fd5b505190506001600160a01b0381166110e857816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156110cf57600080fd5b505af11580156110e3573d6000803e3d6000fd5b505050505b505b949350505050565b60006110fe60026135c2565b905090565b60008060008360a00135806111166133b7565b1115611169576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b84356000908152600c6020908152604080832060018082015469ffffffffffffffffffff81168652600b855283862084516060808201875282546001600160a01b039081168352929094015480831682890190815262ffffff600160a01b9092048216838901908152885161014081018a528451861681529151909416818a01529251168287015230828501526a01000000000000000000008304600290810b810b608080850191909152600160681b909404810b900b60a0830152958c013560c0820152938b013560e0850152908a01356101008401528901356101208301529290611255906135cd565b6001870154939a509198509650915060009061128f9030906a01000000000000000000008104600290810b91600160681b9004900b6134b9565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016112c0919061596b565b60a06040518083038186803b1580156112d857600080fd5b505afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131091906155ee565b5050925092505061134c866002015483038760010160109054906101000a90046001600160801b03166001600160801b0316600160801b613513565b6004870180546001600160801b0380821690930183166fffffffffffffffffffffffffffffffff199091161790556003870154600188015461139c9291840391600160801b918290041690613513565b6004870180546001600160801b03600160801b80830482169094018116840291811691909117909155600288018490556003880183905560018801805483810483168e018316909302929091169190911790556040518b35907f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f90611426908d908d908d90615b3f565b60405180910390a2505050505050509193909250565b61144d611447613293565b8261331b565b6114885760405162461bcd60e51b8152600401808060200182810382526031815260200180615f456031913960400191505060405180910390fd5b610974838383613808565b6001600160a01b03821660009081526001602052604081206114b59083613954565b90505b92915050565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061154f613960565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b600e55565b610974838383604051806020016040528060008152506129c1565b806115cb338261331b565b6115e75760405162461bcd60e51b815260040161086e906159c6565b6000828152600c602052604090206001810154600160801b90046001600160801b0316158015611622575060048101546001600160801b0316155b801561164057506004810154600160801b90046001600160801b0316155b61165c5760405162461bcd60e51b815260040161086e90615ac8565b6000838152600c602052604081208181556001810182905560028101829055600381018290556004015561097483613964565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561172257600080fd5b505af1158015611736573d6000803e3d6000fd5b50505050505050505050565b6000611750828401846154e7565b90506117807f00000000000000000000000000000000000000000000000000000000000000008260000151613a31565b50841561179b57805151602082015161179b91903388613a54565b83156117b9576117b981600001516020015182602001513387613a54565b5050505050565b6000806117ce600284613be4565b509392505050565b60006114b882604051806060016040528060298152602001615eb06029913960029190613c02565b606090565b60006001600160a01b03821661184a5760405162461bcd60e51b815260040180806020018281038252602a815260200180615e86602a913960400191505060405180910390fd5b6001600160a01b03821660009081526001602052604090206114b8906135c2565b836118746133b7565b11156118c7576040805162461bcd60e51b815260206004820152600e60248201527f5065726d69742065787069726564000000000000000000000000000000000000604482015290519081900360640190fd5b60006118d16114e2565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad88886118fd81613c0f565b604080516020808201969096526001600160a01b03909416848201526060840192909252608083015260a08083018a90528151808403909101815260c0830182528051908401207f190100000000000000000000000000000000000000000000000000000000000060e084015260e2830194909452610102808301949094528051808303909401845261012290910190528151910120905060006119a0876117d6565b9050806001600160a01b0316886001600160a01b031614156119f35760405162461bcd60e51b8152600401808060200182810382526027815260200180615db16027913960400191505060405180910390fd5b6119fc81613c4e565b15611bd7576040805160208082018790528183018690527fff0000000000000000000000000000000000000000000000000000000000000060f889901b16606083015282516041818403018152606183018085527f1626ba7e0000000000000000000000000000000000000000000000000000000090526065830186815260858401948552815160a585015281516001600160a01b03871695631626ba7e958995919260c59091019185019080838360005b83811015611ac6578181015183820152602001611aae565b50505050905090810190601f168015611af35780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d6020811015611b3b57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014611bd2576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b611d03565b600060018387878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611c33573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c9b576040805162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e6174757265000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316816001600160a01b031614611d01576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b505b611d0d8888613297565b5050505050505050565b60008060008084610140013580611d2c6133b7565b1115611d7f576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b604080516101408101909152600090611e4b9080611da060208b018b6150f1565b6001600160a01b03168152602001896020016020810190611dc191906150f1565b6001600160a01b03168152602001611ddf60608b0160408c016156e0565b62ffffff168152306020820152604001611dff60808b0160608c01615428565b60020b8152602001611e1760a08b0160808c01615428565b60020b81526020018960a0013581526020018960c0013581526020018960e0013581526020018961010001358152506135cd565b92975090955093509050611ebf611e6a61014089016101208a016150f1565b600d80547fffffffffffffffffffff000000000000000000000000000000000000000000008116600175ffffffffffffffffffffffffffffffffffffffffffff92831690810190921617909155975087613c54565b6000611eea30611ed560808b0160608c01615428565b611ee560a08c0160808d01615428565b6134b9565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401611f1b919061596b565b60a06040518083038186803b158015611f3357600080fd5b505afa158015611f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6b91906155ee565b505092509250506000611fe48560405180606001604052808e6000016020810190611f9691906150f1565b6001600160a01b031681526020018e6020016020810190611fb791906150f1565b6001600160a01b031681526020018e6040016020810190611fd891906156e0565b62ffffff169052613d82565b905060405180610140016040528060006bffffffffffffffffffffffff16815260200160006001600160a01b031681526020018269ffffffffffffffffffff1681526020018c606001602081019061203c9190615428565b60020b815260200161205460a08e0160808f01615428565b60020b81526020018a6001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815250600c60008c815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b03160217905550905050897f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f8a8a8a60405161226393929190615b3f565b60405180910390a25050505050509193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561083d5780601f106108125761010080835404028352916020019161083d565b6000818152600c6020908152604080832081516101408101835281546bffffffffffffffffffffffff811682526001600160a01b036c010000000000000000000000009091041693810193909352600181015469ffffffffffffffffffff81169284018390526a01000000000000000000008104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e0860152600490920154808316610100860152041661012083015282918291829182918291829182918291829182918291906124065760405162461bcd60e51b815260040161086e90615a91565b6000600b6000836040015169ffffffffffffffffffff1669ffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681525050905081600001518260200151826000015183602001518460400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001519d509d509d509d509d509d509d509d509d509d509d509d50505091939597999b5091939597999b565b612534613293565b6001600160a01b0316826001600160a01b0316141561259a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b80600560006125a7613293565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155612609613293565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156126b957600080fd5b505afa1580156126cd573d6000803e3d6000fd5b505050506040513d60208110156126e357600080fd5b505110156126f9576126f986868686868661168f565b505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d602081101561279a57600080fd5b50519050828110156127f3576040805162461bcd60e51b815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b8015610974577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561285f57600080fd5b505af1158015612873573d6000803e3d6000fd5b505050506109748282613ed2565b60608167ffffffffffffffff8111801561289a57600080fd5b506040519080825280602002602001820160405280156128ce57816020015b60608152602001906001900390816128b95790505b50905060005b828110156129ba57600080308686858181106128ec57fe5b90506020028101906128fe9190615c31565b60405161290c929190615814565b600060405180830381855af49150503d8060008114612947576040519150601f19603f3d011682016040523d82523d6000602084013e61294c565b606091505b5091509150816129985760448151101561296557600080fd5b6004810190508080602001905181019061297f9190615444565b60405162461bcd60e51b815260040161086e91906159b3565b808484815181106129a557fe5b602090810291909101015250506001016128d4565b5092915050565b6129d26129cc613293565b8361331b565b612a0d5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f456031913960400191505060405180910390fd5b612a1984848484613fdb565b50505050565b604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015612a8757600080fd5b505afa158015612a9b573d6000803e3d6000fd5b505050506040513d6020811015612ab157600080fd5b505110156126f9576126f9868686868686612cdd565b7f000000000000000000000000000000000000000000000000000000000000000081565b4715612afb57612afb3347613ed2565b565b6060612b0882613286565b612b1157600080fd5b6040517fe9dc63750000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e9dc637590612b789030908690600401615974565b60006040518083038186803b158015612b9057600080fd5b505afa158015612ba4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114b89190810190615444565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612c1b57600080fd5b505afa158015612c2f573d6000803e3d6000fd5b505050506040513d6020811015612c4557600080fd5b5051905082811015612c9e576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015612a1957612a1984838361402d565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561172257600080fd5b6000808235612d77338261331b565b612d935760405162461bcd60e51b815260040161086e906159c6565b6000612da560608601604087016155a4565b6001600160801b03161180612dd257506000612dc760808601606087016155a4565b6001600160801b0316115b612ddb57600080fd5b600080612dee60408701602088016150f1565b6001600160a01b031614612e1157612e0c60408601602087016150f1565b612e13565b305b85356000908152600c6020908152604080832060018082015469ffffffffffffffffffff168552600b8452828520835160608101855281546001600160a01b039081168252919092015490811694820194909452600160a01b90930462ffffff169183019190915292935090612ea97f0000000000000000000000000000000000000000000000000000000000000000836133bd565b600484015460018501549192506001600160801b0380821692600160801b92839004821692900416156130c65760018501546040517fa34123a70000000000000000000000000000000000000000000000000000000081526001600160a01b0385169163a34123a791612f40916a01000000000000000000008104600290810b92600160681b909204900b9060009060040161598d565b6040805180830381600087803b158015612f5957600080fd5b505af1158015612f6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f919190615736565b5050600185015460009081906001600160a01b0386169063514ea4bf90612fd69030906a01000000000000000000008104600290810b91600160681b9004900b6134b9565b6040518263ffffffff1660e01b8152600401612ff2919061596b565b60a06040518083038186803b15801561300a57600080fd5b505afa15801561301e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304291906155ee565b5050925092505061307e876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613513565b840193506130b7876003015482038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b613513565b60028801929092556003870155015b6000806001600160801b0384166130e360608e0160408f016155a4565b6001600160801b0316116131065761310160608d0160408e016155a4565b613108565b835b836001600160801b03168d606001602081019061312591906155a4565b6001600160801b0316116131485761314360808e0160608f016155a4565b61314a565b835b60018901546040517f4f1eb3d80000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03871691634f1eb3d8916131bd918c916a01000000000000000000008104600290810b92600160681b909204900b908890889060040161587b565b6040805180830381600087803b1580156131d657600080fd5b505af11580156131ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320e91906155c0565b6004890180546fffffffffffffffffffffffffffffffff196001600160801b03918216600160801b878a0384160217168689038216179091556040519281169d50169a508c35907f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f0190610dcf908b90869086906158b8565b60006114b86002836141bd565b3390565b6000818152600c6020526040902080546bffffffffffffffffffffffff166c010000000000000000000000006001600160a01b0385169081029190911790915581906132e2826117d6565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061332682613286565b6133615760405162461bcd60e51b815260040180806020018281038252602c815260200180615e22602c913960400191505060405180910390fd5b600061336c836117d6565b9050806001600160a01b0316846001600160a01b031614806133a75750836001600160a01b031661339c84610847565b6001600160a01b0316145b806110ea57506110ea8185612caf565b600e5490565b600081602001516001600160a01b031682600001516001600160a01b0316106133e557600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516bffffffffffffffffffffffff19606086901b16602080830191909152600285810b60e890811b60348501529085900b901b60378301528251601a818403018152603a90920190925280519101205b9392505050565b6000808060001985870986860292508281109083900303905080613549576000841161353e57600080fd5b50829004905061350c565b80841161355557600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006114b8826141c9565b6000806000806000604051806060016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001876040015162ffffff16815250905061363f7f0000000000000000000000000000000000000000000000000000000000000000826133bd565b91506000826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561367c57600080fd5b505afa158015613690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b4919061564f565b505050505050905060006136cb88608001516141cd565b905060006136dc8960a001516141cd565b90506136f38383838c60c001518d60e0015161451b565b9750505050816001600160a01b0316633c8a7d8d876060015188608001518960a00151896040518060400160405280888152602001336001600160a01b03168152506040516020016137459190615aff565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401613774959493929190615838565b6040805180830381600087803b15801561378d57600080fd5b505af11580156137a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c59190615736565b610100880151919550935084108015906137e457508561012001518310155b6138005760405162461bcd60e51b815260040161086e90615a5a565b509193509193565b826001600160a01b031661381b826117d6565b6001600160a01b0316146138605760405162461bcd60e51b8152600401808060200182810382526029815260200180615efb6029913960400191505060405180910390fd5b6001600160a01b0382166138a55760405162461bcd60e51b8152600401808060200182810382526024815260200180615dd86024913960400191505060405180910390fd5b6138b0838383610974565b6138bb600082613297565b6001600160a01b03831660009081526001602052604090206138dd90826145df565b506001600160a01b038216600090815260016020526040902061390090826145eb565b5061390d600282846145f7565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006114b5838361460d565b4690565b600061396f826117d6565b905061397d81600084610974565b613988600083613297565b60008281526008602052604090205460026000196101006001841615020190911604156139c65760008281526008602052604081206139c691615061565b6001600160a01b03811660009081526001602052604090206139e890836145df565b506139f4600283614671565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000613a3d83836133bd565b9050336001600160a01b038216146114b857600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015613a955750804710155b15613bb7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613af557600080fd5b505af1158015613b09573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613b8557600080fd5b505af1158015613b99573d6000803e3d6000fd5b505050506040513d6020811015613baf57600080fd5b50612a199050565b6001600160a01b038316301415613bd857613bd384838361402d565b612a19565b612a198484848461467d565b6000808080613bf38686614815565b909450925050505b9250929050565b60006110ea848484614890565b6000908152600c6020526040902080546bffffffffffffffffffffffff19811660016bffffffffffffffffffffffff9283169081019092161790915590565b3b151590565b6001600160a01b038216613caf576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613cb881613286565b15613d0a576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b613d1660008383610974565b6001600160a01b0382166000908152600160205260409020613d3890826145eb565b50613d45600282846145f7565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0382166000908152600a602052604090205469ffffffffffffffffffff16806114b85750600d8054600169ffffffffffffffffffff76010000000000000000000000000000000000000000000080840482168381019092160275ffffffffffffffffffffffffffffffffffffffffffff909316929092179092556001600160a01b038085166000908152600a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffff000000000000000000001686179055848352600b825291829020865181549085167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825591870151950180549287015162ffffff16600160a01b027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff969094169290911691909117939093161790915592915050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613f1e5780518252601f199092019160209182019101613eff565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f80576040519150601f19603f3d011682016040523d82523d6000602084013e613f85565b606091505b5050905080610974576040805162461bcd60e51b815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b613fe6848484613808565b613ff28484848461495a565b612a195760405162461bcd60e51b8152600401808060200182810382526032815260200180615d7f6032913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b602083106140d75780518252601f1990920191602091820191016140b8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614139576040519150601f19603f3d011682016040523d82523d6000602084013e61413e565b606091505b509150915081801561416c57508051158061416c575080806020019051602081101561416957600080fd5b50515b6117b9576040805162461bcd60e51b815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006114b58383614b36565b5490565b60008060008360020b126141e4578260020b6141ec565b8260020b6000035b9050620d89e8811115614246576040805162461bcd60e51b815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006001821661425a57600160801b61426c565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156142a0576ffff97272373d413259a46990580e213a0260801c5b60048216156142bf576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156142de576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156142fd576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561431c576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561433b576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561435a576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561437a576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561439a576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156143ba576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156143da576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156143fa576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561441a576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561443a576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561445a576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561447b576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561449b576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156144ba576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156144d7576b048a170391f7dc42444e8fa20260801c5b60008460020b13156144f25780600019816144ee57fe5b0490505b640100000000810615614506576001614509565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b0316111561453b579293925b846001600160a01b0316866001600160a01b0316116145665761455f858585614b4e565b90506145d6565b836001600160a01b0316866001600160a01b031610156145c857600061458d878686614b4e565b9050600061459c878986614bba565b9050806001600160801b0316826001600160801b0316106145bd57806145bf565b815b925050506145d6565b6145d3858584614bba565b90505b95945050505050565b60006114b58383614c00565b60006114b58383614cc6565b60006110ea84846001600160a01b038516614d10565b8154600090821061464f5760405162461bcd60e51b8152600401808060200182810382526022815260200180615d5d6022913960400191505060405180910390fd5b82600001828154811061465e57fe5b9060005260206000200154905092915050565b60006114b58383614da7565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b6020831061472f5780518252601f199092019160209182019101614710565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614791576040519150601f19603f3d011682016040523d82523d6000602084013e614796565b606091505b50915091508180156147c45750805115806147c457508080602001905160208110156147c157600080fd5b50515b6126f9576040805162461bcd60e51b815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8154600090819083106148595760405162461bcd60e51b8152600401808060200182810382526022815260200180615ed96022913960400191505060405180910390fd5b600084600001848154811061486a57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161492b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156148f05781810151838201526020016148d8565b50505050905090810190601f16801561491d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061493e57fe5b9060005260206000209060020201600101549150509392505050565b600061496e846001600160a01b0316613c4e565b61497a575060016110ea565b6000614acb7f150b7a02000000000000000000000000000000000000000000000000000000006149a8613293565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614a0f5781810151838201526020016149f7565b50505050905090810190601f168015614a3c5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001615d7f603291396001600160a01b0388169190614e7b565b90506000818060200190516020811015614ae457600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b60009081526001919091016020526040902054151590565b6000826001600160a01b0316846001600160a01b03161115614b6e579192915b6000614b9a856001600160a01b0316856001600160a01b03166c01000000000000000000000000613513565b90506145d6614bb584838888036001600160a01b0316613513565b614e8a565b6000826001600160a01b0316846001600160a01b03161115614bda579192915b6110ea614bb5836c010000000000000000000000008787036001600160a01b0316613513565b60008181526001830160205260408120548015614cbc5783546000198083019190810190600090879083908110614c3357fe5b9060005260206000200154905080876000018481548110614c5057fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614c8057fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506114b8565b60009150506114b8565b6000614cd28383614b36565b614d08575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556114b8565b5060006114b8565b600082815260018401602052604081205480614d7557505060408051808201825283815260208082018481528654600181810189556000898152848120955160029093029095019182559151908201558654868452818801909252929091205561350c565b82856000016001830381548110614d8857fe5b906000526020600020906002020160010181905550600091505061350c565b60008181526001830160205260408120548015614cbc5783546000198083019190810190600090879083908110614dda57fe5b9060005260206000209060020201905080876000018481548110614dfa57fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614e3957fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506114b89350505050565b60606110ea8484600085614ea0565b806001600160801b03811681146107ac57600080fd5b606082471015614ee15760405162461bcd60e51b8152600401808060200182810382526026815260200180615dfc6026913960400191505060405180910390fd5b614eea85613c4e565b614f3b576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614f795780518252601f199092019160209182019101614f5a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fdb576040519150601f19603f3d011682016040523d82523d6000602084013e614fe0565b606091505b5091509150614ff0828286614ffb565b979650505050505050565b6060831561500a57508161350c565b82511561501a5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156148f05781810151838201526020016148d8565b50805460018160011615610100020316600290046000825580601f1061508757506150a5565b601f0160209004906000526020600020908101906150a591906150a8565b50565b5b808211156150bd57600081556001016150a9565b5090565b80356107ac81615d06565b805161ffff811681146107ac57600080fd5b803562ffffff811681146107ac57600080fd5b600060208284031215615102578081fd5b813561350c81615d06565b6000806040838503121561511f578081fd5b823561512a81615d06565b9150602083013561513a81615d06565b809150509250929050565b6000806000806080858703121561515a578182fd5b843561516581615d06565b9350602085013561517581615d06565b9250615183604086016150de565b9150606085013561519381615d06565b939692955090935050565b6000806000606084860312156151b2578081fd5b83356151bd81615d06565b925060208401356151cd81615d06565b929592945050506040919091013590565b600080600080608085870312156151f3578182fd5b84356151fe81615d06565b9350602085013561520e81615d06565b925060408501359150606085013567ffffffffffffffff811115615230578182fd5b8501601f81018713615240578182fd5b803561525361524e82615cb8565b615c94565b818152886020838501011115615267578384fd5b81602084016020830137908101602001929092525092959194509250565b60008060408385031215615297578182fd5b82356152a281615d06565b9150602083013561513a81615d1b565b600080604083850312156152c4578182fd5b82356152cf81615d06565b946020939093013593505050565b6000806000606084860312156152f1578081fd5b83356152fc81615d06565b925060208401359150604084013561531381615d06565b809150509250925092565b60008060008060008060c08789031215615336578384fd5b863561534181615d06565b95506020870135945060408701359350606087013561535f81615d4d565b9598949750929560808101359460a0909101359350915050565b6000806020838503121561538b578182fd5b823567ffffffffffffffff808211156153a2578384fd5b818501915085601f8301126153b5578384fd5b8135818111156153c3578485fd5b86602080830285010111156153d6578485fd5b60209290920196919550909350505050565b6000602082840312156153f9578081fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461350c578182fd5b600060208284031215615439578081fd5b813561350c81615d29565b600060208284031215615455578081fd5b815167ffffffffffffffff81111561546b578182fd5b8201601f8101841361547b578182fd5b805161548961524e82615cb8565b81815285602083850101111561549d578384fd5b6145d6826020830160208601615cda565b6000608082840312156154bf578081fd5b50919050565b600060a082840312156154bf578081fd5b600060c082840312156154bf578081fd5b600081830360808112156154f9578182fd5b6040516040810167ffffffffffffffff828210818311171561551757fe5b816040526060841215615528578485fd5b60a083019350818410818511171561553c57fe5b50826040528435925061554e83615d06565b91825260208401359161556083615d06565b826060830152615572604086016150de565b60808301528152615585606085016150c1565b6020820152949350505050565b600061016082840312156154bf578081fd5b6000602082840312156155b5578081fd5b813561350c81615d38565b600080604083850312156155d2578182fd5b82516155dd81615d38565b602084015190925061513a81615d38565b600080600080600060a08688031215615605578283fd5b855161561081615d38565b809550506020860151935060408601519250606086015161563081615d38565b608087015190925061564181615d38565b809150509295509295909350565b600080600080600080600060e0888a031215615669578485fd5b875161567481615d06565b602089015190975061568581615d29565b9550615693604089016150cc565b94506156a1606089016150cc565b93506156af608089016150cc565b925060a08801516156bf81615d4d565b60c08901519092506156d081615d1b565b8091505092959891949750929550565b6000602082840312156156f1578081fd5b6114b5826150de565b60006020828403121561570b578081fd5b5035919050565b60008060408385031215615724578182fd5b82359150602083013561513a81615d06565b60008060408385031215615748578182fd5b505080516020909101519092909150565b6000806000806060858703121561576e578182fd5b8435935060208501359250604085013567ffffffffffffffff80821115615793578384fd5b818701915087601f8301126157a6578384fd5b8135818111156157b4578485fd5b8860208285010111156157c5578485fd5b95989497505060200194505050565b600081518084526157ec816020860160208601615cda565b601f01601f19169290920160200192915050565b60020b9052565b6001600160801b03169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b03871682528560020b60208301528460020b60408301526001600160801b038416606083015260a06080830152614ff060a08301846157d4565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039390931683526001600160801b03918216602084015216604082015260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015615953577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526159418583516157d4565b94509285019290850190600101615907565b5092979650505050505050565b901515815260200190565b90815260200190565b6001600160a01b03929092168252602082015260400190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b6000602082526114b560208301846157d4565b6020808252600c908201527f4e6f7420617070726f7665640000000000000000000000000000000000000000604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f507269636520736c69707061676520636865636b000000000000000000000000604082015260600190565b60208082526010908201527f496e76616c696420746f6b656e20494400000000000000000000000000000000604082015260600190565b6020808252600b908201527f4e6f7420636c6561726564000000000000000000000000000000000000000000604082015260600190565b815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b6001600160801b039390931683526020830191909152604082015260600190565b9384526001600160801b039290921660208401526040830152606082015260800190565b918252602082015260400190565b6bffffffffffffffffffffffff8d1681526001600160a01b038c811660208301528b811660408301528a16606082015262ffffff89166080820152600288900b60a08201526101808101615be960c0830189615800565b615bf660e0830188615807565b8561010083015284610120830152615c12610140830185615807565b615c20610160830184615807565b9d9c50505050505050505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615c65578283fd5b83018035915067ffffffffffffffff821115615c7f578283fd5b602001915036819003821315613bfb57600080fd5b60405181810167ffffffffffffffff81118282101715615cb057fe5b604052919050565b600067ffffffffffffffff821115615ccc57fe5b50601f01601f191660200190565b60005b83811015615cf5578181015183820152602001615cdd565b83811115612a195750506000910152565b6001600160a01b03811681146150a557600080fd5b80151581146150a557600080fd5b8060020b81146150a557600080fd5b6001600160801b03811681146150a557600080fd5b60ff811681146150a557600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732315065726d69743a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2A4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C0360EB GT PUSH2 0x16E JUMPI DUP1 PUSH4 0xAC9650D8 GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x730 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x750 JUMPI DUP1 PUSH4 0xFC6F7865 EQ PUSH2 0x763 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x6FD JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x71D JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0xC2E3140A GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x6CD JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x6E0 JUMPI DUP1 PUSH4 0xC53AF304 EQ PUSH2 0x6F5 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x68D JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x6AD JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x122 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x667 JUMPI DUP1 PUSH4 0xA98CE37F EQ PUSH2 0x67A JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x99FBAB88 EQ PUSH2 0x60F JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x7AC2FF7B GT PUSH2 0x153 JUMPI DUP1 PUSH4 0x7AC2FF7B EQ PUSH2 0x5AF JUMPI DUP1 PUSH4 0x88316456 EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x5E5 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x58F JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x2F745C59 GT PUSH2 0x21C JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x4CB42D2D GT PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x4CB42D2D EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x55A JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x42966C68 EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x507 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x201 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x49F JUMPI DUP1 PUSH4 0x3BEB26C4 EQ PUSH2 0x4B4 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x4D4 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x48A JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0xC49CCBE GT PUSH2 0x273 JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x258 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x219F5D17 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x44A JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0xC49CCBE EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x3F3 JUMPI PUSH2 0x328 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x32D JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3B2 JUMPI PUSH2 0x328 JUMP JUMPDEST CALLDATASIZE PUSH2 0x328 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x326 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 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 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x34D PUSH2 0x348 CALLDATASIZE PUSH1 0x4 PUSH2 0x53E8 JUMP JUMPDEST PUSH2 0x776 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x5960 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x378 PUSH2 0x7B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x59B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x847 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x5824 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x3CD CALLDATASIZE PUSH1 0x4 PUSH2 0x52B2 JUMP JUMPDEST PUSH2 0x8A3 JUMP JUMPDEST PUSH2 0x3E5 PUSH2 0x3E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x54C5 JUMP JUMPDEST PUSH2 0x979 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP3 SWAP2 SWAP1 PUSH2 0x5B84 JUMP JUMPDEST PUSH2 0x3A5 PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x5145 JUMP JUMPDEST PUSH2 0xDE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH2 0x43B PUSH2 0x436 CALLDATASIZE PUSH1 0x4 PUSH2 0x54D6 JUMP JUMPDEST PUSH2 0x1103 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x519E JUMP JUMPDEST PUSH2 0x143C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x52B2 JUMP JUMPDEST PUSH2 0x1493 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x14BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x14E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x4CF CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x15A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x4EF CALLDATASIZE PUSH1 0x4 PUSH2 0x519E JUMP JUMPDEST PUSH2 0x15A5 JUMP JUMPDEST PUSH2 0x326 PUSH2 0x502 CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x15C0 JUMP JUMPDEST PUSH2 0x326 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x531E JUMP JUMPDEST PUSH2 0x168F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x535 CALLDATASIZE PUSH1 0x4 PUSH2 0x5759 JUMP JUMPDEST PUSH2 0x1742 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x555 CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x17C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x575 CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x17D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x378 PUSH2 0x17FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x50F1 JUMP JUMPDEST PUSH2 0x1803 JUMP JUMPDEST PUSH2 0x326 PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x531E JUMP JUMPDEST PUSH2 0x186B JUMP JUMPDEST PUSH2 0x5D5 PUSH2 0x5D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x5592 JUMP JUMPDEST PUSH2 0x1D17 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x2278 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x378 PUSH2 0x229C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x62F PUSH2 0x62A CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x22FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x662 CALLDATASIZE PUSH1 0x4 PUSH2 0x5285 JUMP JUMPDEST PUSH2 0x252C JUMP JUMPDEST PUSH2 0x326 PUSH2 0x675 CALLDATASIZE PUSH1 0x4 PUSH2 0x531E JUMP JUMPDEST PUSH2 0x264F JUMP JUMPDEST PUSH2 0x326 PUSH2 0x688 CALLDATASIZE PUSH1 0x4 PUSH2 0x5712 JUMP JUMPDEST PUSH2 0x2701 JUMP JUMPDEST PUSH2 0x6A0 PUSH2 0x69B CALLDATASIZE PUSH1 0x4 PUSH2 0x5379 JUMP JUMPDEST PUSH2 0x2881 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x58E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x326 PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x51DE JUMP JUMPDEST PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x326 PUSH2 0x6DB CALLDATASIZE PUSH1 0x4 PUSH2 0x531E JUMP JUMPDEST PUSH2 0x2A1F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x2AC7 JUMP JUMPDEST PUSH2 0x326 PUSH2 0x2AEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x378 PUSH2 0x718 CALLDATASIZE PUSH1 0x4 PUSH2 0x56FA JUMP JUMPDEST PUSH2 0x2AFD JUMP JUMPDEST PUSH2 0x326 PUSH2 0x72B CALLDATASIZE PUSH1 0x4 PUSH2 0x52DD JUMP JUMPDEST PUSH2 0x2BCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x34D PUSH2 0x74B CALLDATASIZE PUSH1 0x4 PUSH2 0x510D JUMP JUMPDEST PUSH2 0x2CAF JUMP JUMPDEST PUSH2 0x326 PUSH2 0x75E CALLDATASIZE PUSH1 0x4 PUSH2 0x531E JUMP JUMPDEST PUSH2 0x2CDD JUMP JUMPDEST PUSH2 0x3E5 PUSH2 0x771 CALLDATASIZE PUSH1 0x4 PUSH2 0x54AE JUMP JUMPDEST PUSH2 0x2D68 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 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 0x83D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x812 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x83D 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 0x820 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x852 DUP3 PUSH2 0x3286 JUMP JUMPDEST PUSH2 0x877 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x59FD 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 PUSH13 0x1000000000000000000000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8AE DUP3 PUSH2 0x17D6 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 0x901 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 0x5F24 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 0x913 PUSH2 0x3293 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x92F JUMPI POP PUSH2 0x92F DUP2 PUSH2 0x74B PUSH2 0x3293 JUMP JUMPDEST PUSH2 0x96A 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 0x5E4E PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x974 DUP4 DUP4 PUSH2 0x3297 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x988 CALLER DUP3 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x9A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x59C6 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0x9B2 PUSH2 0x33B7 JUMP JUMPDEST GT ISZERO PUSH2 0xA05 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA17 PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0xA2A 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 0xA65 SWAP2 DUP10 ADD SWAP1 DUP10 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0xA83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP3 DUP2 ADD SLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0xB07 PUSH32 0x0 DUP4 PUSH2 0x33BD JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA34123A7 SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0xB4D PUSH1 0x40 DUP15 ADD PUSH1 0x20 DUP16 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB6B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x598D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBBC SWAP2 SWAP1 PUSH2 0x5736 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD DUP9 LT DUP1 ISZERO SWAP1 PUSH2 0xBD9 JUMPI POP DUP9 PUSH1 0x60 ADD CALLDATALOAD DUP8 LT ISZERO JUMPDEST PUSH2 0xBF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x5A5A JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0xC25 SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x34B9 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 0xC56 SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA6 SWAP2 SWAP1 PUSH2 0x55EE JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0xCCB DUP8 PUSH1 0x2 ADD SLOAD DUP4 SUB DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3513 JUMP JUMPDEST PUSH1 0x4 DUP9 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xD15 SWAP2 SWAP1 DUP4 SUB SWAP1 DUP9 AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3513 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 0xD5B PUSH1 0x40 DUP14 ADD PUSH1 0x20 DUP15 ADD PUSH2 0x55A4 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 0xDBE SWAP2 SWAP1 PUSH2 0x55A4 JUMP JUMPDEST DUP14 DUP14 PUSH1 0x40 MLOAD PUSH2 0xDCF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP SWAP2 POP SWAP2 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 0xE05 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 0xE90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEA4 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 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1009 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 0xF59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF6D 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 0xF83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF637731D00000000000000000000000000000000000000000000000000000000 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 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 PUSH2 0x10EA 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 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1058 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 0x106E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x10E8 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 0x10CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10E3 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 0x10FE PUSH1 0x2 PUSH2 0x35C2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0xA0 ADD CALLDATALOAD DUP1 PUSH2 0x1116 PUSH2 0x33B7 JUMP JUMPDEST GT ISZERO PUSH2 0x1169 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 PUSH11 0x100000000000000000000 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 0x1255 SWAP1 PUSH2 0x35CD JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD SWAP4 SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x128F SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x34B9 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 0x12C0 SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1310 SWAP2 SWAP1 PUSH2 0x55EE JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x134C 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 0x3513 JUMP JUMPDEST PUSH1 0x4 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP1 SWAP4 ADD DUP4 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x139C SWAP3 SWAP2 DUP5 SUB SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV AND SWAP1 PUSH2 0x3513 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 DUP5 MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP9 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 DUP9 ADD DUP4 SWAP1 SSTORE PUSH1 0x1 DUP9 ADD DUP1 SLOAD DUP4 DUP2 DIV DUP4 AND DUP15 ADD DUP4 AND SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP12 CALLDATALOAD SWAP1 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F SWAP1 PUSH2 0x1426 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH2 0x5B3F 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 0x144D PUSH2 0x1447 PUSH2 0x3293 JUMP JUMPDEST DUP3 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x1488 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 0x5F45 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x974 DUP4 DUP4 DUP4 PUSH2 0x3808 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 0x14B5 SWAP1 DUP4 PUSH2 0x3954 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 0x154F PUSH2 0x3960 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 0xE SSTORE JUMP JUMPDEST PUSH2 0x974 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x29C1 JUMP JUMPDEST DUP1 PUSH2 0x15CB CALLER DUP3 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x15E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x59C6 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 0x1622 JUMPI POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1640 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 PUSH2 0x165C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x5AC8 JUMP 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 ADD SSTORE PUSH2 0x974 DUP4 PUSH2 0x3964 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 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 0x1722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1736 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 PUSH2 0x1750 DUP3 DUP5 ADD DUP5 PUSH2 0x54E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x1780 PUSH32 0x0 DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x3A31 JUMP JUMPDEST POP DUP5 ISZERO PUSH2 0x179B JUMPI DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x179B SWAP2 SWAP1 CALLER DUP9 PUSH2 0x3A54 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x17B9 JUMPI PUSH2 0x17B9 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x3A54 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17CE PUSH1 0x2 DUP5 PUSH2 0x3BE4 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B8 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5EB0 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0x3C02 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x184A 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 0x5E86 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 0x14B8 SWAP1 PUSH2 0x35C2 JUMP JUMPDEST DUP4 PUSH2 0x1874 PUSH2 0x33B7 JUMP JUMPDEST GT ISZERO PUSH2 0x18C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5065726D69742065787069726564000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18D1 PUSH2 0x14E2 JUMP JUMPDEST PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP9 DUP9 PUSH2 0x18FD DUP2 PUSH2 0x3C0F 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 DUP11 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 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 0x19A0 DUP8 PUSH2 0x17D6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x19F3 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 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DB1 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19FC DUP2 PUSH2 0x3C4E JUMP JUMPDEST ISZERO PUSH2 0x1BD7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP10 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 PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 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 0x1AC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1AAE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AF3 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 0x1B11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B25 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 0x1B3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1BD2 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 PUSH32 0x556E617574686F72697A65640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP8 DUP8 DUP8 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 0x1C33 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 PUSH2 0x1C9B 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 PUSH32 0x496E76616C6964207369676E6174757265000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1D01 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 PUSH32 0x556E617574686F72697A65640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x1D0D DUP9 DUP9 PUSH2 0x3297 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH2 0x140 ADD CALLDATALOAD DUP1 PUSH2 0x1D2C PUSH2 0x33B7 JUMP JUMPDEST GT ISZERO PUSH2 0x1D7F 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 PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1E4B SWAP1 DUP1 PUSH2 0x1DA0 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x50F1 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 0x1DC1 SWAP2 SWAP1 PUSH2 0x50F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DDF PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x56E0 JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x1DFF PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x5428 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E17 PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x5428 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 0x35CD JUMP JUMPDEST SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH2 0x1EBF PUSH2 0x1E6A PUSH2 0x140 DUP10 ADD PUSH2 0x120 DUP11 ADD PUSH2 0x50F1 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 DUP2 AND PUSH1 0x1 PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP1 DUP2 ADD SWAP1 SWAP3 AND OR SWAP1 SWAP2 SSTORE SWAP8 POP DUP8 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EEA ADDRESS PUSH2 0x1ED5 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x5428 JUMP JUMPDEST PUSH2 0x1EE5 PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x5428 JUMP JUMPDEST PUSH2 0x34B9 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 0x1F1B SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F6B SWAP2 SWAP1 PUSH2 0x55EE JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0x1FE4 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP15 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1F96 SWAP2 SWAP1 PUSH2 0x50F1 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 0x1FB7 SWAP2 SWAP1 PUSH2 0x50F1 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 0x1FD8 SWAP2 SWAP1 PUSH2 0x56E0 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE PUSH2 0x3D82 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x203C SWAP2 SWAP1 PUSH2 0x5428 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2054 PUSH1 0xA0 DUP15 ADD PUSH1 0x80 DUP16 ADD PUSH2 0x5428 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 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 SWAP1 POP POP DUP10 PUSH32 0x3067048BEEE31B25B2F1681F88DAC838C8BBA36AF25BFB2B7CF7473A5847E35F DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x2263 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH32 0x0 DUP2 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 0x83D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x812 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x83D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x140 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH13 0x1000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP3 DUP5 ADD DUP4 SWAP1 MSTORE PUSH11 0x100000000000000000000 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 SWAP1 SWAP3 ADD SLOAD DUP1 DUP4 AND PUSH2 0x100 DUP7 ADD MSTORE DIV AND PUSH2 0x120 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 0x2406 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x5A91 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0x2534 PUSH2 0x3293 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x259A 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 PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x25A7 PUSH2 0x3293 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 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x2609 PUSH2 0x3293 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 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 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 0x26B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26CD 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 0x26E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x26F9 JUMPI PUSH2 0x26F9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x168F JUMP JUMPDEST 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 0x2770 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2784 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 0x279A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x27F3 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 PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x974 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 0x285F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2873 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x974 DUP3 DUP3 PUSH2 0x3ED2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x289A 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 0x28CE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x28B9 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x29BA JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x28EC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x28FE SWAP2 SWAP1 PUSH2 0x5C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x290C SWAP3 SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2947 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 0x294C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2998 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x2965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x297F SWAP2 SWAP1 PUSH2 0x5444 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP2 SWAP1 PUSH2 0x59B3 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x29A5 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x28D4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x29D2 PUSH2 0x29CC PUSH2 0x3293 JUMP JUMPDEST DUP4 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x2A0D 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 0x5F45 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A19 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3FDB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 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 0x2A87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A9B 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 0x2AB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x26F9 JUMPI PUSH2 0x26F9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2CDD JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0x2AFB JUMPI PUSH2 0x2AFB CALLER SELFBALANCE PUSH2 0x3ED2 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2B08 DUP3 PUSH2 0x3286 JUMP JUMPDEST PUSH2 0x2B11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE9DC637500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE9DC6375 SWAP1 PUSH2 0x2B78 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5974 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA4 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 0x14B8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5444 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 0x2C1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C2F 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 0x2C45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x2C9E 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 PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2A19 JUMPI PUSH2 0x2A19 DUP5 DUP4 DUP4 PUSH2 0x402D 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 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 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 0x1722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 CALLDATALOAD PUSH2 0x2D77 CALLER DUP3 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x2D93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x59C6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DA5 PUSH1 0x60 DUP7 ADD PUSH1 0x40 DUP8 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT DUP1 PUSH2 0x2DD2 JUMPI POP PUSH1 0x0 PUSH2 0x2DC7 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST PUSH2 0x2DDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DEE PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x50F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2E11 JUMPI PUSH2 0x2E0C PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x50F1 JUMP JUMPDEST PUSH2 0x2E13 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF 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 0x2EA9 PUSH32 0x0 DUP4 PUSH2 0x33BD 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 0x30C6 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0xA34123A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xA34123A7 SWAP2 PUSH2 0x2F40 SWAP2 PUSH11 0x100000000000000000000 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 0x598D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F91 SWAP2 SWAP1 PUSH2 0x5736 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 0x2FD6 SWAP1 ADDRESS SWAP1 PUSH11 0x100000000000000000000 DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x68 SHL SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x34B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FF2 SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x300A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x301E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3042 SWAP2 SWAP1 PUSH2 0x55EE JUMP JUMPDEST POP POP SWAP3 POP SWAP3 POP POP PUSH2 0x307E 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 0x3513 JUMP JUMPDEST DUP5 ADD SWAP4 POP PUSH2 0x30B7 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 0x3513 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 0x30E3 PUSH1 0x60 DUP15 ADD PUSH1 0x40 DUP16 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x3106 JUMPI PUSH2 0x3101 PUSH1 0x60 DUP14 ADD PUSH1 0x40 DUP15 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH2 0x3108 JUMP JUMPDEST DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP14 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3125 SWAP2 SWAP1 PUSH2 0x55A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x3148 JUMPI PUSH2 0x3143 PUSH1 0x80 DUP15 ADD PUSH1 0x60 DUP16 ADD PUSH2 0x55A4 JUMP JUMPDEST PUSH2 0x314A JUMP JUMPDEST DUP4 JUMPDEST PUSH1 0x1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0x4F1EB3D800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0x4F1EB3D8 SWAP2 PUSH2 0x31BD SWAP2 DUP13 SWAP2 PUSH11 0x100000000000000000000 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 0x587B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x320E SWAP2 SWAP1 PUSH2 0x55C0 JUMP JUMPDEST PUSH1 0x4 DUP10 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xDCF SWAP1 DUP12 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH2 0x58B8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B8 PUSH1 0x2 DUP4 PUSH2 0x41BD JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x32E2 DUP3 PUSH2 0x17D6 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 0x3326 DUP3 PUSH2 0x3286 JUMP JUMPDEST PUSH2 0x3361 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 0x5E22 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x336C DUP4 PUSH2 0x17D6 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 0x33A7 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x339C DUP5 PUSH2 0x847 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x10EA JUMPI POP PUSH2 0x10EA DUP2 DUP6 PUSH2 0x2CAF JUMP JUMPDEST PUSH1 0xE SLOAD SWAP1 JUMP 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 0x33E5 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 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 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 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3549 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x353E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x350C JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B8 DUP3 PUSH2 0x41C9 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 0x363F PUSH32 0x0 DUP3 PUSH2 0x33BD 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 0x367C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3690 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x36B4 SWAP2 SWAP1 PUSH2 0x564F JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x36CB DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x36DC DUP10 PUSH1 0xA0 ADD MLOAD PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x36F3 DUP4 DUP4 DUP4 DUP13 PUSH1 0xC0 ADD MLOAD DUP14 PUSH1 0xE0 ADD MLOAD PUSH2 0x451B 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 0x3745 SWAP2 SWAP1 PUSH2 0x5AFF 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 0x3774 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5838 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x378D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37C5 SWAP2 SWAP1 PUSH2 0x5736 JUMP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP DUP5 LT DUP1 ISZERO SWAP1 PUSH2 0x37E4 JUMPI POP DUP6 PUSH2 0x120 ADD MLOAD DUP4 LT ISZERO JUMPDEST PUSH2 0x3800 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP1 PUSH2 0x5A5A JUMP JUMPDEST POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x381B DUP3 PUSH2 0x17D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3860 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 0x5EFB 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 0x38A5 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 0x5DD8 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x38B0 DUP4 DUP4 DUP4 PUSH2 0x974 JUMP JUMPDEST PUSH2 0x38BB PUSH1 0x0 DUP3 PUSH2 0x3297 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 0x38DD SWAP1 DUP3 PUSH2 0x45DF 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 0x3900 SWAP1 DUP3 PUSH2 0x45EB JUMP JUMPDEST POP PUSH2 0x390D PUSH1 0x2 DUP3 DUP5 PUSH2 0x45F7 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 0x14B5 DUP4 DUP4 PUSH2 0x460D JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x396F DUP3 PUSH2 0x17D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x397D DUP2 PUSH1 0x0 DUP5 PUSH2 0x974 JUMP JUMPDEST PUSH2 0x3988 PUSH1 0x0 DUP4 PUSH2 0x3297 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 0x39C6 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x39C6 SWAP2 PUSH2 0x5061 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 0x39E8 SWAP1 DUP4 PUSH2 0x45DF JUMP JUMPDEST POP PUSH2 0x39F4 PUSH1 0x2 DUP4 PUSH2 0x4671 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A3D DUP4 DUP4 PUSH2 0x33BD JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x14B8 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 0x3A95 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x3BB7 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 0x3AF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B09 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 0x3B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B99 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 0x3BAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A19 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x3BD8 JUMPI PUSH2 0x3BD3 DUP5 DUP4 DUP4 PUSH2 0x402D JUMP JUMPDEST PUSH2 0x2A19 JUMP JUMPDEST PUSH2 0x2A19 DUP5 DUP5 DUP5 DUP5 PUSH2 0x467D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x3BF3 DUP7 DUP7 PUSH2 0x4815 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 DUP5 PUSH2 0x4890 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3CAF 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 0x3CB8 DUP2 PUSH2 0x3286 JUMP JUMPDEST ISZERO PUSH2 0x3D0A 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 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3D16 PUSH1 0x0 DUP4 DUP4 PUSH2 0x974 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 0x3D38 SWAP1 DUP3 PUSH2 0x45EB JUMP JUMPDEST POP PUSH2 0x3D45 PUSH1 0x2 DUP3 DUP5 PUSH2 0x45F7 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF 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 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x14B8 JUMPI POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH10 0xFFFFFFFFFFFFFFFFFFFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP5 DIV DUP3 AND DUP4 DUP2 ADD SWAP1 SWAP3 AND MUL PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000 AND DUP7 OR SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD SWAP1 DUP6 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 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 PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 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 0x3F1E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3EFF 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 0x3F80 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 0x3F85 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x974 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 PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FE6 DUP5 DUP5 DUP5 PUSH2 0x3808 JUMP JUMPDEST PUSH2 0x3FF2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x495A JUMP JUMPDEST PUSH2 0x2A19 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 0x5D7F 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 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 0x40D7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x40B8 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 0x4139 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 0x413E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x416C JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x416C JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x17B9 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 PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x14B5 DUP4 DUP4 PUSH2 0x4B36 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x41E4 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x41EC JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x4246 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 PUSH32 0x5400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x425A JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x426C JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x42A0 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x42BF JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x42DE JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x42FD JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x431C JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x433B JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x435A JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x437A JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x439A JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x43BA JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x43DA JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x43FA JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x441A JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x443A JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x445A JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x447B JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x449B JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x44BA JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x44D7 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x44F2 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x44EE JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x4506 JUMPI PUSH1 0x1 PUSH2 0x4509 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 0x453B 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 0x4566 JUMPI PUSH2 0x455F DUP6 DUP6 DUP6 PUSH2 0x4B4E JUMP JUMPDEST SWAP1 POP PUSH2 0x45D6 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 0x45C8 JUMPI PUSH1 0x0 PUSH2 0x458D DUP8 DUP7 DUP7 PUSH2 0x4B4E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x459C DUP8 DUP10 DUP7 PUSH2 0x4BBA 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 0x45BD JUMPI DUP1 PUSH2 0x45BF JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x45D6 JUMP JUMPDEST PUSH2 0x45D3 DUP6 DUP6 DUP5 PUSH2 0x4BBA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B5 DUP4 DUP4 PUSH2 0x4C00 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B5 DUP4 DUP4 PUSH2 0x4CC6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x4D10 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x464F 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 0x5D5D 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 0x465E 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 0x14B5 DUP4 DUP4 PUSH2 0x4DA7 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 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 0x472F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4710 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 0x4791 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 0x4796 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x47C4 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x47C4 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x26F9 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 PUSH32 0x5354460000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x4859 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 0x5ED9 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 0x486A 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 0x492B 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 0x48F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48D8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x491D 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 0x493E 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 0x496E DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C4E JUMP JUMPDEST PUSH2 0x497A JUMPI POP PUSH1 0x1 PUSH2 0x10EA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4ACB PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x49A8 PUSH2 0x3293 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 0x4A0F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x49F7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4A3C 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 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x5D7F PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x4E7B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 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 0x4B6E JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x4B9A DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH13 0x1000000000000000000000000 PUSH2 0x3513 JUMP JUMPDEST SWAP1 POP PUSH2 0x45D6 PUSH2 0x4BB5 DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3513 JUMP JUMPDEST PUSH2 0x4E8A 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 0x4BDA JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x10EA PUSH2 0x4BB5 DUP4 PUSH13 0x1000000000000000000000000 DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3513 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CBC JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4C33 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 0x4C50 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 0x4C80 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 0x14B8 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x14B8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CD2 DUP4 DUP4 PUSH2 0x4B36 JUMP JUMPDEST PUSH2 0x4D08 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 0x14B8 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x14B8 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x4D75 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 0x350C JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x4D88 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 0x350C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4CBC JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x4DDA 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 0x4DFA 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 0x4E39 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 0x14B8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x10EA DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x4EA0 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4EE1 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 0x5DFC PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4EEA DUP6 PUSH2 0x3C4E JUMP JUMPDEST PUSH2 0x4F3B 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 0x4F79 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4F5A 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 0x4FDB 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 0x4FE0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4FF0 DUP3 DUP3 DUP7 PUSH2 0x4FFB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x500A JUMPI POP DUP2 PUSH2 0x350C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x501A 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 0x48F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48D8 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 0x5087 JUMPI POP PUSH2 0x50A5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x50A5 SWAP2 SWAP1 PUSH2 0x50A8 JUMP JUMPDEST POP JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x50BD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x50A9 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x7AC DUP2 PUSH2 0x5D06 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5102 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x350C DUP2 PUSH2 0x5D06 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x511F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x512A DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x513A DUP2 PUSH2 0x5D06 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 0x515A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5165 DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x5175 DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP3 POP PUSH2 0x5183 PUSH1 0x40 DUP7 ADD PUSH2 0x50DE JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x5193 DUP2 PUSH2 0x5D06 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 0x51B2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x51BD DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x51CD DUP2 PUSH2 0x5D06 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 0x51F3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x51FE DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x520E DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5230 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x5240 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x5253 PUSH2 0x524E DUP3 PUSH2 0x5CB8 JUMP JUMPDEST PUSH2 0x5C94 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x5267 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 0x5297 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x52A2 DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x513A DUP2 PUSH2 0x5D1B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x52CF DUP2 PUSH2 0x5D06 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 0x52F1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x52FC DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x5313 DUP2 PUSH2 0x5D06 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 0x5336 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5341 DUP2 PUSH2 0x5D06 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x535F DUP2 PUSH2 0x5D4D 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 0x538B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x53A2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x53B5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x53C3 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x53D6 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 0x53F9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x350C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5439 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x350C DUP2 PUSH2 0x5D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5455 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x546B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x547B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5489 PUSH2 0x524E DUP3 PUSH2 0x5CB8 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x549D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x45D6 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5CDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54BF JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54BF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54BF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x54F9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x5517 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE PUSH1 0x60 DUP5 SLT ISZERO PUSH2 0x5528 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP4 POP DUP2 DUP5 LT DUP2 DUP6 GT OR ISZERO PUSH2 0x553C JUMPI INVALID JUMPDEST POP DUP3 PUSH1 0x40 MSTORE DUP5 CALLDATALOAD SWAP3 POP PUSH2 0x554E DUP4 PUSH2 0x5D06 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 PUSH2 0x5560 DUP4 PUSH2 0x5D06 JUMP JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x5572 PUSH1 0x40 DUP7 ADD PUSH2 0x50DE JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x5585 PUSH1 0x60 DUP6 ADD PUSH2 0x50C1 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 0x54BF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55B5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x350C DUP2 PUSH2 0x5D38 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x55D2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x55DD DUP2 PUSH2 0x5D38 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x513A DUP2 PUSH2 0x5D38 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5605 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x5610 DUP2 PUSH2 0x5D38 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 0x5630 DUP2 PUSH2 0x5D38 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x5641 DUP2 PUSH2 0x5D38 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 0x5669 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x5674 DUP2 PUSH2 0x5D06 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH2 0x5685 DUP2 PUSH2 0x5D29 JUMP JUMPDEST SWAP6 POP PUSH2 0x5693 PUSH1 0x40 DUP10 ADD PUSH2 0x50CC JUMP JUMPDEST SWAP5 POP PUSH2 0x56A1 PUSH1 0x60 DUP10 ADD PUSH2 0x50CC JUMP JUMPDEST SWAP4 POP PUSH2 0x56AF PUSH1 0x80 DUP10 ADD PUSH2 0x50CC JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH2 0x56BF DUP2 PUSH2 0x5D4D JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x56D0 DUP2 PUSH2 0x5D1B 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 0x56F1 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x14B5 DUP3 PUSH2 0x50DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x570B JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5724 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x513A DUP2 PUSH2 0x5D06 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5748 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 0x576E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5793 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x57A6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x57B4 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x57C5 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 0x57EC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5CDA 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 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x2 SIGNEXTEND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x4FF0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x57D4 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 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 0x5953 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x5941 DUP6 DUP4 MLOAD PUSH2 0x57D4 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5907 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 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 0x14B5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x57D4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F7420617070726F7665640000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x507269636520736C69707061676520636865636B000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420746F6B656E20494400000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F7420636C6561726564000000000000000000000000000000000000000000 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 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF 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 0x5BE9 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x5800 JUMP JUMPDEST PUSH2 0x5BF6 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x5807 JUMP JUMPDEST DUP6 PUSH2 0x100 DUP4 ADD MSTORE DUP5 PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x5C12 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x5807 JUMP JUMPDEST PUSH2 0x5C20 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x5807 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5C65 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5C7F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3BFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5CB0 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5CCC 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 0x5CF5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5CDD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2A19 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x50A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x50A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x50A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x50A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x50A5 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 POP PUSH6 0x726D69743A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 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 0x73206E6F74206F776E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA164736F6C PUSH4 0x43000706 STOP EXP ","sourceMap":"129:444:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;438:10:34;-1:-1:-1;;;;;452:4:34;438:18;;430:39;;;;;-1:-1:-1;;;430:39:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;129:444:55;;;;;948:148:14;;;;;;;;;;-1:-1:-1;948:148:14;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4502:98:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14642:230:28:-;;;;;;;;;;-1:-1:-1;14642:230:28;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6751:395:18:-;;;;;;;;;;-1:-1:-1;6751:395:18;;;;;:::i;:::-;;:::i;9066:2150:28:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;572:709:36:-;;;;;;:::i;:::-;;:::i;6245:208:18:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6986:2026:28:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;8071:300:18:-;;;;;;;;;;-1:-1:-1;8071:300:18;;;;;:::i;:::-;;:::i;6014:160::-;;;;;;;;;;-1:-1:-1;6014:160:18;;;;;:::i;:::-;;:::i;1932:125:30:-;;;;;;;;;;;;;:::i;1264:512::-;;;;;;;;;;;;;:::i;501:70:55:-;;;;;;;;;;-1:-1:-1;501:70:55;;;;;:::i;:::-;;:::i;8437:149:18:-;;;;;;;;;;-1:-1:-1;8437:149:18;;;;;:::i;:::-;;:::i;14132:326:28:-;;;;;;:::i;:::-;;:::i;1325:289:37:-;;;;;;:::i;:::-;;:::i;1048:463:31:-;;;;;;;;;;-1:-1:-1;1048:463:31;;;;;:::i;:::-;;:::i;6525:169:18:-;;;;;;;;;;-1:-1:-1;6525:169:18;;;;;:::i;:::-;;:::i;4265:175::-;;;;;;;;;;-1:-1:-1;4265:175:18;;;;;:::i;:::-;;:::i;6866:66:28:-;;;;;;;;;;;;;:::i;3990:218:18:-;;;;;;;;;;-1:-1:-1;3990:218:18;;;;;:::i;:::-;;:::i;2098:1074:30:-;;;;;;:::i;:::-;;:::i;4586:1817:28:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;420:38:33:-;;;;;;;;;;;;;:::i;4664:102:18:-;;;;;;;;;;;;;:::i;3073:1138:28:-;;;;;;;;;;-1:-1:-1;3073:1138:28;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;7491:290:18:-;;;;;;;;;;-1:-1:-1;7491:290:18;;;;;:::i;:::-;;:::i;1652:348:37:-;;;;;;:::i;:::-;;:::i;521:386:34:-;;;;;;:::i;:::-;;:::i;308:653:32:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8652:282:18:-;;;;;;;;;;-1:-1:-1;8652:282:18;;;;;:::i;:::-;;:::i;973:314:37:-;;;;;;:::i;:::-;;:::i;328:41:33:-;;;;;;;;;;;;;:::i;1362:160:34:-;;;:::i;6554:241:28:-;;;;;;;;;;-1:-1:-1;6554:241:28;;;;;:::i;:::-;;:::i;952:365:34:-;;;;;;:::i;:::-;;:::i;7847:162:18:-;;;;;;;;;;-1:-1:-1;7847:162:18;;;;;:::i;:::-;;:::i;662:273:37:-;;;;;;:::i;:::-;;:::i;11270:2808:28:-;;;;;;:::i;:::-;;:::i;948:148:14:-;1056:33;;;1033:4;1056:33;;;;;;;;;;;;;948:148;;;;:::o;4502:98:18:-;4588:5;4581:12;;;;;;;;-1:-1:-1;;4581:12:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4556:13;;4581:12;;4588:5;;4581:12;;4588:5;4581:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4502:98;:::o;14642:230:28:-;14727:7;14754:16;14762:7;14754;:16::i;:::-;14746:73;;;;-1:-1:-1;;;14746:73:28;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;14837:19:28;;;;:10;:19;;;;;:28;;;;-1:-1:-1;;;;;14837:28:28;;14642:230::o;6751:395:18:-;6831:13;6847:23;6862:7;6847:14;:23::i;:::-;6831:39;;6894:5;-1:-1:-1;;;;;6888:11:18;:2;-1:-1:-1;;;;;6888:11:18;;;6880:57;;;;-1:-1:-1;;;6880:57:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6972:5;-1:-1:-1;;;;;6956:21:18;:12;:10;:12::i;:::-;-1:-1:-1;;;;;6956:21:18;;:69;;;;6981:44;7005:5;7012:12;:10;:12::i;6981:44::-;6948:159;;;;-1:-1:-1;;;6948:159:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7118:21;7127:2;7131:7;7118:8;:21::i;:::-;6751:395;;;:::o;9066:2150:28:-;9299:15;;9227:14;;6474:39;6493:10;9227:14;6474:18;:39::i;:::-;6466:64;;;;-1:-1:-1;;;6466:64:28;;;;;;;:::i;:::-;9265:6:::1;:15;;;244:8:35;223:17;:15;:17::i;:::-;:29;;215:61;;;::::0;;-1:-1:-1;;;215:61:35;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;9374:1:28::2;9355:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;9355:20:28::2;;9347:29;;;::::0;::::2;;9425:14:::0;::::2;9386:25;9414:26:::0;;;:10:::2;:26;::::0;;;;;;;;9479:18:::2;::::0;::::2;::::0;9414:26;;-1:-1:-1;;;9479:18:28;;::::2;-1:-1:-1::0;;;;;9479:18:28::2;::::0;9536:16:::2;::::0;;;;;::::2;;:::i;:::-;-1:-1:-1::0;;;;;9515:37:28::2;:17;-1:-1:-1::0;;;;;9515:37:28::2;;;9507:46;;;::::0;::::2;;9618:15;::::0;;::::2;::::0;::::2;;9564:34;9601:33:::0;;;:16:::2;:33;::::0;;;;;;;9564:70;;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;;;9564:70:28;;::::2;::::0;;;;;::::2;::::0;;;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;;;9564:70:28;;::::2;;;::::0;;;;9677:44:::2;9704:7;9564:70:::0;9677:26:::2;:44::i;:::-;9763:18;::::0;::::2;::::0;9644:78;;-1:-1:-1;;;;;;9753:9:28;::::2;::::0;::::2;::::0;9763:18;;::::2;;::::0;;::::2;::::0;-1:-1:-1;;;9783:18:28;::::2;::::0;::::2;9803:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;9753:67;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9732:88:::0;;-1:-1:-1;9732:88:28;-1:-1:-1;9850:17:28::2;::::0;::::2;;9839:28:::0;::::2;::::0;::::2;::::0;:60:::2;;;9882:6;:17;;;9871:7;:28;;9839:60;9831:93;;;;-1:-1:-1::0;;;9831:93:28::2;;;;;;;:::i;:::-;9992:18;::::0;::::2;::::0;9935:19:::2;::::0;9957:74:::2;::::0;9985:4:::2;::::0;9992:18;;::::2;;::::0;;::::2;::::0;-1:-1:-1;;;10012:18:28;::::2;::::0;::::2;9957:19;:74::i;:::-;9935:96;;10102:32;10136::::0;10176:4:::2;-1:-1:-1::0;;;;;10176:14:28::2;;10191:11;10176:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10099:104;;;;;;;10306:194;10370:8;:33;;;10343:24;:60;10425:17;-1:-1:-1::0;;;;;10306:194:28::2;-1:-1:-1::0;;;10306:15:28::2;:194::i;:::-;10214:20;::::0;::::2;:300:::0;;-1:-1:-1;;10214:300:28;::::2;10250:264:::0;;::::2;-1:-1:-1::0;;;;;10214:300:28;;::::2;;::::0;::::2;::::0;;;::::2;::::0;;10680:33:::2;::::0;::::2;::::0;10616:194:::2;::::0;10653:60;;::::2;::::0;10616:194;::::2;-1:-1:-1::0;;;10616:15:28::2;:194::i;:::-;10524:20;::::0;::::2;:300:::0;;-1:-1:-1;;;;;10524:300:28;;::::2;10560:264:::0;;::::2;-1:-1:-1::0;;;10524:300:28;;;::::2;::::0;::::2;;;;::::0;;;::::2;::::0;;10835:33:::2;::::0;::::2;:60:::0;;;10905:33:::2;::::0;::::2;:60:::0;;;11108:16:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;11088:17;:36;11067:8;:18;;;:57;;;;;-1:-1:-1::0;;;;;11067:57:28::2;;;;;-1:-1:-1::0;;;;;11067:57:28::2;;;;;;11158:6;:14;;;11140:69;11174:6;:16;;;;;;;;;;:::i;:::-;11192:7;11201;11140:69;;;;;;;;:::i;:::-;;;;;;;;286:1:35;;;;;;;6540::28::1;9066:2150:::0;;;;:::o;572:709:36:-;755:12;796:6;-1:-1:-1;;;;;787:15:36;:6;-1:-1:-1;;;;;787:15:36;;779:24;;;;;;836:7;-1:-1:-1;;;;;820:32:36;;853:6;861;869:3;820:53;;;;;;;;;;;;;-1:-1:-1;;;;;820:53:36;;;;;;-1:-1:-1;;;;;820:53:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;820:53:36;;-1:-1:-1;;;;;;888:18:36;;884:391;;945:7;-1:-1:-1;;;;;929:35:36;;965:6;973;981:3;929:56;;;;;;;;;;;;;-1:-1:-1;;;;;929:56:36;;;;;;-1:-1:-1;;;;;929:56:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:56:36;999:43;;;;;;-1:-1:-1;;;;;999:43:36;;;;;;;;;929:56;;-1:-1:-1;999:29:36;;;;;;:43;;;;;-1:-1:-1;;999:43:36;;;;;;;;-1:-1:-1;999:29:36;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;884:391;;;1074:28;1131:4;-1:-1:-1;;;;;1118:24:36;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1118:26:36;;-1:-1:-1;;;;;;1162:25:36;;1158:107;;1220:4;-1:-1:-1;;;;;1207:29:36;;1237:12;1207:43;;;;;;;;;;;;;-1:-1:-1;;;;;1207:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:107;884:391;;572:709;;;;;;:::o;6245:208:18:-;6306:7;6425:21;:12;:19;:21::i;:::-;6418:28;;6245:208;:::o;6986:2026:28:-;7174:17;7193:15;7210;7140:6;:15;;;244:8:35;223:17;:15;:17::i;:::-;:29;;215:61;;;;;-1:-1:-1;;;215:61:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;7280:14:28;::::1;7241:25;7269:26:::0;;;:10:::1;:26;::::0;;;;;;;7360:15:::1;::::0;;::::1;::::0;::::1;::::0;::::1;7343:33:::0;;:16:::1;:33:::0;;;;;7306:70;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;7306:70:28;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;7306:70:28;;::::1;::::0;::::1;::::0;;;;;;7478:488;;::::1;::::0;::::1;::::0;;7523:14;;7478:488;::::1;::::0;;7563:14;;7478:488;;::::1;::::0;;::::1;::::0;7600:11;;7478:488:::1;::::0;;;;7946:4:::1;7478:488:::0;;;;7640:18;;::::1;;::::0;;::::1;7478:488:::0;::::1;::::0;;;;;;;;-1:-1:-1;;;7687:18:28;;::::1;::::0;::::1;7478:488:::0;::::1;::::0;;;;7739:21;;::::1;;7478:488:::0;;;;7794:21;;::::1;;7478:488:::0;;;;7845:17;;::::1;;7360:15;7478:488:::0;;;7892:17;::::1;;7478:488:::0;;;;7269:26;7241:25;7452:524:::1;::::0;:12:::1;:524::i;:::-;8044:18;::::0;::::1;::::0;7414:562;;-1:-1:-1;7414:562:28;;-1:-1:-1;7414:562:28;-1:-1:-1;7414:562:28;-1:-1:-1;7987:19:28::1;::::0;8009:74:::1;::::0;8037:4:::1;::::0;8044:18;;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;8064:18:28;::::1;::::0;::::1;8009:19;:74::i;:::-;7987:96;;8155:32;8189::::0;8229:4:::1;-1:-1:-1::0;;;;;8229:14:28::1;;8244:11;8229:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8152:104;;;;;;;8312:179;8372:8;:33;;;8345:24;:60;8423:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;8423:18:28::1;-1:-1:-1::0;;;;;8312:179:28::1;-1:-1:-1::0;;;8312:15:28::1;:179::i;:::-;8267:20;::::0;::::1;:234:::0;;-1:-1:-1;;;;;8267:234:28;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;8267:234:28;;::::1;;::::0;;8616:33:::1;::::0;::::1;::::0;8267:234;8667:18;::::1;::::0;8556:179:::1;::::0;8589:60;;::::1;::::0;-1:-1:-1;;;8667:18:28;;;::::1;;::::0;8556:15:::1;:179::i;:::-;8511:20;::::0;::::1;:234:::0;;-1:-1:-1;;;;;;;;8511:234:28;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;8756:33:::1;::::0;::::1;:60:::0;;;8826:33:::1;::::0;::::1;:60:::0;;;-1:-1:-1;8896:18:28;::::1;:31:::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;8943:62:::1;::::0;8961:14;::::1;::::0;8943:62:::1;::::0;::::1;::::0;8918:9;;8988:7;;8997;;8943:62:::1;:::i;:::-;;;;;;;;286:1:35;;;;;;6986:2026:28::0;;;;;;:::o;8071:300:18:-;8230:41;8249:12;:10;:12::i;:::-;8263:7;8230:18;:41::i;:::-;8222:103;;;;-1:-1:-1;;;8222:103:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8336:28;8346:4;8352:2;8356:7;8336:9;:28::i;6014:160::-;-1:-1:-1;;;;;6137:20:18;;6111:7;6137:20;;;:13;:20;;;;;:30;;6161:5;6137:23;:30::i;:::-;6130:37;;6014:160;;;;;:::o;1932:125:30:-;1991:66;1932:125;:::o;1264:512::-;1322:7;1538:66;1626:8;1656:11;1689:13;:11;:13::i;:::-;1732:4;1387:368;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1387:368:30;;;;;;;;;;;;;;;;;;;;;;;;1360:409;;;;;;1341:428;;1264:512;:::o;501:70:55:-;552:4;:12;501:70::o;8437:149:18:-;8540:39;8557:4;8563:2;8567:7;8540:39;;;;;;;;;;;;:16;:39::i;14132:326:28:-;14210:7;6474:39;6493:10;6505:7;6474:18;:39::i;:::-;6466:64;;;;-1:-1:-1;;;6466:64:28;;;;;;;:::i;:::-;14229:25:::1;14257:19:::0;;;:10:::1;:19;::::0;;;;14294:18:::1;::::0;::::1;::::0;-1:-1:-1;;;14294:18:28;::::1;-1:-1:-1::0;;;;;14294:18:28::1;:23:::0;:52;::::1;;;-1:-1:-1::0;14321:20:28::1;::::0;::::1;::::0;-1:-1:-1;;;;;14321:20:28::1;:25:::0;14294:52:::1;:81;;;;-1:-1:-1::0;14350:20:28::1;::::0;::::1;::::0;-1:-1:-1;;;14350:20:28;::::1;-1:-1:-1::0;;;;;14350:20:28::1;:25:::0;14294:81:::1;14286:105;;;;-1:-1:-1::0;;;14286:105:28::1;;;;;;;:::i;:::-;14408:19;::::0;;;:10:::1;:19;::::0;;;;14401:26;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;14437:14:::1;14419:7:::0;14437:5:::1;:14::i;1325:289:37:-:0;1517:90;;;;;;1551:10;1517:90;;;;1571:4;1517:90;;;;;;;;;;;;;;;;1593:4;1517:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1517:33:37;;;;;:90;;;;;-1:-1:-1;;1517:90:37;;;;;;;-1:-1:-1;1517:33:37;:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1325:289;;;;;;:::o;1048:463:31:-;1168:31;1202:36;;;;1213:4;1202:36;:::i;:::-;1168:70;;1248:59;1282:7;1291;:15;;;1248:33;:59::i;:::-;-1:-1:-1;1322:15:31;;1318:88;;1343:15;;:22;1367:13;;;;1339:67;;1343:22;1382:10;1394:11;1339:3;:67::i;:::-;1420:15;;1416:88;;1437:67;1441:7;:15;;;:22;;;1465:7;:13;;;1480:10;1492:11;1437:3;:67::i;:::-;1048:463;;;;;:::o;6525:169:18:-;6600:7;;6641:22;:12;6657:5;6641:15;:22::i;:::-;-1:-1:-1;6619:44:18;6525:169;-1:-1:-1;;;6525:169:18:o;4265:175::-;4337:7;4363:70;4380:7;4363:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;6866:66:28:-;6915:13;6866:66;:::o;3990:218:18:-;4062:7;-1:-1:-1;;;;;4089:19:18;;4081:74;;;;-1:-1:-1;;;4081:74:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4172:20:18;;;;;;:13;:20;;;;;:29;;:27;:29::i;2098:1074:30:-;2316:8;2295:17;:15;:17::i;:::-;:29;;2287:56;;;;;-1:-1:-1;;;2287:56:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2354:14;2456:18;:16;:18::i;:::-;1991:66;2530:7;2539;2548:30;2539:7;2548:21;:30::i;:::-;2502:87;;;;;;;;;;;-1:-1:-1;;;;;2502:87:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2492:98;;;;;;2394:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2371:243;;;;;;-1:-1:-1;;2640:16:30;2648:7;2640;:16::i;:::-;2624:32;;2685:5;-1:-1:-1;;;;;2674:16:30;:7;-1:-1:-1;;;;;2674:16:30;;;2666:68;;;;-1:-1:-1;;;2666:68:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2749:25;2768:5;2749:18;:25::i;:::-;2745:384;;;2839:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2798:67;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2798:32:30;;;;;2831:6;;2798:67;;;;;;;;;;;;;-1:-1:-1;2798:67:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2798:67:30;:81;;;;2790:106;;;;;-1:-1:-1;;;2790:106:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2745:384;;;2927:24;2954:26;2964:6;2972:1;2975;2978;2954:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2954:26:30;;-1:-1:-1;;2954:26:30;;;-1:-1:-1;;;;;;;3002:30:30;;2994:60;;;;;-1:-1:-1;;;2994:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;3096:5;-1:-1:-1;;;;;3076:25:30;:16;-1:-1:-1;;;;;3076:25:30;;3068:50;;;;;-1:-1:-1;;;3068:50:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2745:384;;3139:26;3148:7;3157;3139:8;:26::i;:::-;2098:1074;;;;;;;;:::o;4586:1817:28:-;4748:15;4765:17;4784:15;4801;4714:6;:15;;;244:8:35;223:17;:15;:17::i;:::-;:29;;215:61;;;;;-1:-1:-1;;;215:61:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;4923:481:28::1;::::0;;::::1;::::0;::::1;::::0;;;4832:17:::1;::::0;4897:517:::1;::::0;4923:481;4968:13:::1;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;-1:-1:-1::0;;;;;4923:481:28::1;;;;;5007:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;4923:481:28::1;::::0;;::::1;;5043:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4923:481;;::::0;;5090:4:::1;4923:481;::::0;::::1;::::0;;;5124:16:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;4923:481;;::::0;;::::1;;5169:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;4923:481;;;;;;5219:6;:21;;;4923:481;;;;5274:6;:21;;;4923:481;;;;5325:6;:17;;;4923:481;;;;5372:6;:17;;;4923:481;;::::0;4897:12:::1;:517::i;:::-;4859:555:::0;;-1:-1:-1;4859:555:28;;-1:-1:-1;4859:555:28;-1:-1:-1;4859:555:28;-1:-1:-1;5425:46:28::1;5431:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;5460:7;:9:::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;-1:-1:-1;5460:9:28;5425:5:::1;:46::i;:::-;5482:19;5504:70;5532:4;5539:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;5557;::::0;;;::::1;::::0;::::1;;:::i;:::-;5504:19;:70::i;:::-;5482:92;;5587:32;5621::::0;5661:4:::1;-1:-1:-1::0;;;;;5661:14:28::1;;5676:11;5661:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5584:104;;;;;;;5725:13;5741:147;5775:4;5794:84;;;;;;;;5823:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5794:84:28::1;;;;;5846:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5794:84:28::1;;;;;5866:6;:10;;;;;;;;;;:::i;:::-;5794:84;;::::0;;5741:12:::1;:147::i;:::-;5725:163;;5921:404;;;;;;;;5951:1;5921:404;;;;;;5984:1;-1:-1:-1::0;;;;;5921:404:28::1;;;;;6008:6;5921:404;;;;;;6039:6;:16;;;;;;;;;;:::i;:::-;5921:404;;::::0;;::::1;;6080:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;5921:404;;;;;;6121:9;-1:-1:-1::0;;;;;5921:404:28::1;;;;;6170:24;5921:404;;;;6234:24;5921:404;;;;6285:1;-1:-1:-1::0;;;;;5921:404:28::1;;;;;6313:1;-1:-1:-1::0;;;;;5921:404:28::1;;;::::0;5899:10:::1;:19;5910:7;5899:19;;;;;;;;;;;:426;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;-1:-1:-1::0;;;;;5899:426:28::1;;;;;;;;;6359:7;6341:55;6368:9;6379:7;6388;6341:55;;;;;;;;:::i;:::-;;;;;;;;286:1:35;;;;;4586:1817:28::0;;;;;;:::o;420:38:33:-;;;:::o;4664:102:18:-;4752:7;4745:14;;;;;;;;-1:-1:-1;;4745:14:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:13;;4745:14;;4752:7;;4745:14;;4752:7;4745:14;;;;;;;;;;;;;;;;;;;;;;;;3073:1138:28;3200:12;3621:19;;;:10;:19;;;;;;;;3594:46;;;;;;;;;;;;;;-1:-1:-1;;;;;3594:46:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3594:46:28;;;;;;;;;;;;-1:-1:-1;;;;;;;;3594:46:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3200:12;;;;;;;;;;;;;;;;;;;;;;3594:46;3650:49;;;;-1:-1:-1;;;3650:49:28;;;;;;;:::i;:::-;3709:34;3746:16;:33;3763:8;:15;;;3746:33;;;;;;;;;;;;;;;3709:70;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3709:70:28;-1:-1:-1;;;;;3709:70:28;-1:-1:-1;;;;;3709:70:28;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3709:70:28;-1:-1:-1;;;;;3709:70:28;-1:-1:-1;;;;;3709:70:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;3810:8;:14;;;3838:8;:17;;;3869:7;:14;;;3897:7;:14;;;3925:7;:11;;;3950:8;:18;;;3982:8;:18;;;4014:8;:18;;;4046:8;:33;;;4093:8;:33;;;4140:8;:20;;;4174:8;:20;;;3789:415;;;;;;;;;;;;;;;;;;;;;;;;;;3073:1138;;;;;;;;;;;;;:::o;7491:290:18:-;7605:12;:10;:12::i;:::-;-1:-1:-1;;;;;7593:24:18;:8;-1:-1:-1;;;;;7593:24:18;;;7585:62;;;;;-1:-1:-1;;;7585:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;7703:8;7658:18;:32;7677:12;:10;:12::i;:::-;-1:-1:-1;;;;;7658:32:18;;;;;;;;;;;;;;;;;-1:-1:-1;7658:32:18;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;;7741:12;:10;:12::i;:::-;-1:-1:-1;;;;;7726:48:18;;7765:8;7726:48;;;;;;;;;;;;;;;;;;;;7491:290;;:::o;1652:348:37:-;1861:50;;;;;;1885:10;1861:50;;;;1905:4;1861:50;;;;;;-1:-1:-1;;1914:17:37;-1:-1:-1;;;;;1861:23:37;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1861:50:37;:70;1857:136;;;1945:48;1963:5;1970;1977:6;1985:1;1988;1991;1945:17;:48::i;:::-;1652:348;;;;;;:::o;521:386:34:-;617:19;645:4;-1:-1:-1;;;;;639:21:34;;669:4;639:36;;;;;;;;;;;;;-1:-1:-1;;;;;639:36:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:36:34;;-1:-1:-1;693:28:34;;;;685:58;;;;;-1:-1:-1;;;685:58:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;758:15;;754:147;;795:4;-1:-1:-1;;;;;789:20:34;;810:11;789:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:54;867:9;878:11;836:30;:54::i;308:653:32:-;383:22;439:4;427:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;417:34;;466:9;461:494;481:15;;;461:494;;;518:12;;563:4;582;;587:1;582:7;;;;;;;;;;;;;;;;;;:::i;:::-;555:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:73;;;;610:7;605:306;;737:2;721:6;:13;:18;717:32;;;741:8;;;717:32;820:4;812:6;808:17;798:27;;878:6;867:28;;;;;;;;;;;;:::i;:::-;860:36;;-1:-1:-1;;;860:36:32;;;;;;;;:::i;605:306::-;938:6;925:7;933:1;925:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;498:3:32;;461:494;;;;308:653;;;;:::o;8652:282:18:-;8783:41;8802:12;:10;:12::i;:::-;8816:7;8783:18;:41::i;:::-;8775:103;;;;-1:-1:-1;;;8775:103:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8888:39;8902:4;8908:2;8912:7;8921:5;8888:13;:39::i;:::-;8652:282;;;;:::o;973:314:37:-;1177:50;;;;;;1201:10;1177:50;;;;1221:4;1177:50;;;;;;1230:5;;-1:-1:-1;;;;;1177:23:37;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1177:50:37;:58;1173:107;;;1237:43;1248:5;1255;1262:8;1272:1;1275;1278;1237:10;:43::i;328:41:33:-;;;:::o;1362:160:34:-;1423:21;:25;1419:96;;1450:65;1481:10;1493:21;1450:30;:65::i;:::-;1362:160::o;6554:241:28:-;6644:13;6677:16;6685:7;6677;:16::i;:::-;6669:25;;;;;;6711:77;;;;;-1:-1:-1;;;;;6747:16:28;6711:62;;;;:77;;6774:4;;6780:7;;6711:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6711:77:28;;;;;;;;;;;;:::i;952:365:34:-;1063:20;1093:5;-1:-1:-1;;;;;1086:23:34;;1118:4;1086:38;;;;;;;;;;;;;-1:-1:-1;;;;;1086:38:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1086:38:34;;-1:-1:-1;1142:29:34;;;;1134:60;;;;;-1:-1:-1;;;1134:60:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;1209:16;;1205:106;;1241:59;1269:5;1276:9;1287:12;1241:27;:59::i;7847:162:18:-;-1:-1:-1;;;;;7967:25:18;;;7944:4;7967:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7847:162::o;662:273:37:-;849:79;;;;;;876:10;849:79;;;;896:4;849:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;849:26:37;;;;;:79;;;;;-1:-1:-1;;849:79:37;;;;;;;-1:-1:-1;849:26:37;:79;;;;;;;;;;11270:2808:28;11404:15;;11379:14;;6474:39;6493:10;11379:14;6474:18;:39::i;:::-;6466:64;;;;-1:-1:-1;;;6466:64:28;;;;;;;:::i;:::-;11476:1:::1;11456:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;11456:21:28::1;;:46;;;-1:-1:-1::0;11501:1:28::1;11481:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;11481:21:28::1;;11456:46;11448:55;;;::::0;::::1;;11592:17;::::0;11612:16:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;11612:30:28::1;;:65;;11661:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;11612:65;;;11653:4;11612:65;11727:14:::0;::::1;11688:25;11716:26:::0;;;:10:::1;:26;::::0;;;;;;;11807:15:::1;::::0;;::::1;::::0;::::1;;11790:33:::0;;:16:::1;:33:::0;;;;;11753:70;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;11753:70:28;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;11753:70:28;;::::1;;;::::0;;;;;;;11592:85;;-1:-1:-1;11753:70:28;11867:44:::1;11894:7;11753:70:::0;11867:26:::1;:44::i;:::-;11969:20;::::0;::::1;::::0;;12131:18;::::1;::::0;11834:78;;-1:-1:-1;;;;;;11969:20:28;;::::1;::::0;-1:-1:-1;;;11991:20:28;;;::::1;::::0;::::1;::::0;12131:18;::::1;;:22:::0;12127:992:::1;;12179:18;::::0;::::1;::::0;12169:52:::1;::::0;;;;-1:-1:-1;;;;;12169:9:28;::::1;::::0;::::1;::::0;:52:::1;::::0;12179:18;;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;12199:18:28;;::::1;::::0;::::1;::::0;12219:1:::1;::::0;12169:52:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12379:18:28::1;::::0;::::1;::::0;12238:32:::1;::::0;;;-1:-1:-1;;;;;12312:14:28;::::1;::::0;::::1;::::0;12344:74:::1;::::0;12372:4:::1;::::0;12379:18;;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;12399:18:28;::::1;::::0;::::1;12344:19;:74::i;:::-;12312:120;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12235:197;;;;;;;12487:195;12551:8;:33;;;12524:24;:60;12606:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;12606:18:28::1;-1:-1:-1::0;;;;;12487:195:28::1;-1:-1:-1::0;;;12487:15:28::1;:195::i;:::-;12447:249;;;;12750:195;12814:8;:33;;;12787:24;:60;12869:8;:18;;;;;;;;;;-1:-1:-1::0;;;;;12869:18:28::1;-1:-1:-1::0;;;;;12750:195:28::1;-1:-1:-1::0;;;12750:15:28::1;:195::i;:::-;12974:33;::::0;::::1;:60:::0;;;;13048:33:::1;::::0;::::1;:60:::0;12710:249:::1;12127:992;13198:22;::::0;-1:-1:-1;;;;;13262:31:28;::::1;:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;13262:31:28::1;;:65;;13310:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;13262:65;;;13296:11;13262:65;13361:11;-1:-1:-1::0;;;;;13341:31:28::1;:6;:17;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13341:31:28::1;;:65;;13389:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;13341:65;;;13375:11;13341:65;13550:18;::::0;::::1;::::0;13501:165:::1;::::0;;;;13197:219;;-1:-1:-1;13197:219:28;;-1:-1:-1;;;;;;13501:12:28;::::1;::::0;::::1;::::0;:165:::1;::::0;13527:9;;13550:18;;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;13582:18:28;;::::1;::::0;::::1;::::0;13197:219;;;;13501:165:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13883:20;::::0;::::1;13882:107:::0;;-1:-1:-1;;;;;;;13882:107:28;;::::1;-1:-1:-1::0;;;13960:28:28;;::::1;13882:107:::0;::::1;;;;13930:28:::0;;::::1;13882:107:::0;::::1;;::::0;;;14005:66:::1;::::0;13480:186;;::::1;::::0;-1:-1:-1;13480:186:28::1;::::0;-1:-1:-1;14013:14:28;::::1;::::0;14005:66:::1;::::0;::::1;::::0;14029:9;;13930:28;;13960;;14005:66:::1;:::i;10368:125:18:-:0;10433:4;10456:30;:12;10478:7;10456:21;:30::i;598:104:24:-;685:10;598:104;:::o;14994:177:28:-;15077:19;;;;:10;:19;;;;;:33;;;;;-1:-1:-1;;;;;15077:33:28;;;;;;;;;;;;:19;;15134:16;15077:19;15134:7;:16::i;:::-;-1:-1:-1;;;;;15125:39:28;;;;;;;;;;;14994:177;;:::o;10651:351:18:-;10744:4;10768:16;10776:7;10768;:16::i;:::-;10760:73;;;;-1:-1:-1;;;10760:73:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10843:13;10859:23;10874:7;10859:14;:23::i;:::-;10843:39;;10911:5;-1:-1:-1;;;;;10900:16:18;:7;-1:-1:-1;;;;;10900:16:18;;:51;;;;10944:7;-1:-1:-1;;;;;10920:31:18;:20;10932:7;10920:11;:20::i;:::-;-1:-1:-1;;;;;10920:31:18;;10900:51;:94;;;;10955:39;10979:5;10986:7;10955:23;:39::i;399:96:55:-;484:4;;399:96;:::o;1276:512:52:-;1360:12;1405:3;:10;;;-1:-1:-1;;;;;1392:23:52;:3;:10;;;-1:-1:-1;;;;;1392:23:52;;1384:32;;;;;;-1:-1:-1;1639:10:52;;1651;;;;;1663:7;;;;;1628:43;;-1:-1:-1;;;;;1628:43:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:54;;;;;;1510:229;;;;;;;;-1:-1:-1;;1510:229:52;;;;;;;;;;;;241:66;1510:229;;;;;;;;;;;;;;;;;;;;;;;;;1479:278;;;;;;1276:512::o;162:178:53:-;287:45;;;-1:-1:-1;;287:45:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;277:56;;;;;162:178;;;;;;:::o;749:3746:11:-;831:14;;;-1:-1:-1;;1338:1:11;1335;1328:20;1370:9;;;;-1:-1:-1;1421:13:11;;;1405:14;;;;1401:34;;-1:-1:-1;1517:10:11;1513:179;;1565:1;1551:11;:15;1543:24;;;;;;-1:-1:-1;1618:23:11;;;;-1:-1:-1;1668:13:11;;1513:179;1819:5;1805:11;:19;1797:28;;;;;;2102:17;2178:11;2175:1;2172;2165:25;2530:12;2545;;;:26;;2665:22;;;;;3468:1;3449;:15;;3448:21;;3695:17;;;3691:21;;3684:28;3753:17;;;3749:21;;3742:28;3812:17;;;3808:21;;3801:28;3871:17;;;3867:21;;3860:28;3930:17;;;3926:21;;3919:28;3990:17;;;3986:21;;;3979:28;3037:12;;;;3033:23;;;3058:1;3029:31;2307:20;;;2296:32;;;3088:12;;;;2350:21;;;;2793:16;;;;3079:21;;;;4454:11;;;;;-1:-1:-1;;749:3746:11;;;;;:::o;7812:121:25:-;7881:7;7907:19;7915:3;7907:7;:19::i;1874:1309:31:-;1962:17;1981:15;1998;2015:17;2044:34;2081:130;;;;;;;;2123:6;:13;;;-1:-1:-1;;;;;2081:130:31;;;;;2158:6;:13;;;-1:-1:-1;;;;;2081:130:31;;;;;2190:6;:10;;;2081:130;;;;;2044:167;;2242:44;2269:7;2278;2242:26;:44::i;:::-;2222:65;;2353:20;2389:4;-1:-1:-1;;;;;2389:10:31;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2352:49;;;;;;;;2415:21;2439:45;2467:6;:16;;;2439:27;:45::i;:::-;2415:69;;2498:21;2522:45;2550:6;:16;;;2522:27;:45::i;:::-;2498:69;;2594:223;2651:12;2681:13;2712;2743:6;:21;;;2782:6;:21;;;2594:39;:223::i;:::-;2582:235;;1874:1309;;;2859:4;-1:-1:-1;;;;;2859:9:31;;2882:6;:16;;;2912:6;:16;;;2942:6;:16;;;2972:9;3006:55;;;;;;;;3033:7;3006:55;;;;3049:10;-1:-1:-1;;;;;3006:55:31;;;;2995:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;2859:213;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3102:17;;;;2838:234;;-1:-1:-1;2838:234:31;-1:-1:-1;3091:28:31;;;;;:60;;;3134:6;:17;;;3123:7;:28;;3091:60;3083:93;;;;-1:-1:-1;;;3083:93:31;;;;;;;:::i;:::-;1874:1309;;;;;;:::o;13692:584:18:-;13816:4;-1:-1:-1;;;;;13789:31:18;:23;13804:7;13789:14;:23::i;:::-;-1:-1:-1;;;;;13789:31:18;;13781:85;;;;-1:-1:-1;;;13781:85:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13902:16:18;;13894:65;;;;-1:-1:-1;;;13894:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:18;;;;;;:13;:19;;;;;:35;;14138:7;14111:26;:35::i;:::-;-1:-1:-1;;;;;;14156:17:18;;;;;;:13;:17;;;;;:30;;14178:7;14156:21;:30::i;:::-;-1:-1:-1;14197:29:18;:12;14214:7;14223:2;14197:16;:29::i;:::-;;14261:7;14257:2;-1:-1:-1;;;;;14242:27:18;14251:4;-1:-1:-1;;;;;14242:27:18;;;;;;;;;;;13692:584;;;:::o;9242:135:26:-;9313:7;9347:22;9351:3;9363:5;9347:3;:22::i;230:124:50:-;329:9;;304:44::o;12841:527:18:-;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:18;;;;;;;;;;;:38;13129:95;;13194:19;;;;:10;:19;;;;;13187:26;;;:::i;:::-;-1:-1:-1;;;;;13234:20:18;;;;;;:13;:20;;;;;:36;;13262:7;13234:27;:36::i;:::-;-1:-1:-1;13281:28:18;:12;13301:7;13281:19;:28::i;:::-;-1:-1:-1;13325:36:18;;13353:7;;13349:1;;-1:-1:-1;;;;;13325:36:18;;;;;13349:1;;13325:36;12841:527;;:::o;1248:269:49:-;1370:17;1419:44;1446:7;1455;1419:26;:44::i;:::-;1399:65;-1:-1:-1;1482:10:49;-1:-1:-1;;;;;1482:27:49;;;1474:36;;;;;1713:655:34;1822:4;-1:-1:-1;;;;;1813:13:34;:5;-1:-1:-1;;;;;1813:13:34;;:47;;;;;1855:5;1830:21;:30;;1813:47;1809:553;;;1911:4;-1:-1:-1;;;;;1905:19:34;;1932:5;1905:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1995:4;-1:-1:-1;;;;;1989:20:34;;2010:9;2021:5;1989:38;;;;;;;;;;;;;-1:-1:-1;;;;;1989:38:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1809:553:34;;-1:-1:-1;1809:553:34;;-1:-1:-1;;;;;2048:22:34;;2065:4;2048:22;2044:318;;;2177:52;2205:5;2212:9;2223:5;2177:27;:52::i;:::-;2044:318;;;2288:63;2320:5;2327;2334:9;2345:5;2288:31;:63::i;8261:233:25:-;8341:7;;;;8400:22;8404:3;8416:5;8400:3;:22::i;:::-;8369:53;;-1:-1:-1;8369:53:25;-1:-1:-1;;;8261:233:25;;;;;;:::o;9514:211::-;9621:7;9671:44;9676:3;9696;9702:12;9671:4;:44::i;14464:144:28:-;14539:7;14573:19;;;:10;:19;;;;;:27;;-1:-1:-1;;14573:27:28;;;;;;;;;;;;;;;;;;14464:144::o;718:413:23:-;1078:20;1116:8;;;718:413::o;12231:393:18:-;-1:-1:-1;;;;;12310:16:18;;12302:61;;;;;-1:-1:-1;;;12302:61:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12382:16;12390:7;12382;:16::i;:::-;12381:17;12373:58;;;;;-1:-1:-1;;;12373:58:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;12442:45;12471:1;12475:2;12479:7;12442:20;:45::i;:::-;-1:-1:-1;;;;;12498:17:18;;;;;;:13;:17;;;;;:30;;12520:7;12498:21;:30::i;:::-;-1:-1:-1;12539:29:18;:12;12556:7;12565:2;12539:16;:29::i;:::-;-1:-1:-1;12584:33:18;;12609:7;;-1:-1:-1;;;;;12584:33:18;;;12601:1;;12584:33;;12601:1;;12584:33;12231:393;;:::o;4248:284:28:-;-1:-1:-1;;;;;4371:14:28;;4337:13;4371:14;;;:8;:14;;;;;;;;4399:11;4395:131;;-1:-1:-1;4453:11:28;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4426:14:28;;;-1:-1:-1;4426:14:28;;;:8;:14;;;;;;;;:41;;;;;;;;4481:24;;;:16;:24;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4481:34:28;;;;;;;;;;;;;;;;;;;;;;4248:284;;;;:::o;2282:165:54:-;2394:12;;;2354;2394;;;;;;;;;-1:-1:-1;;;;;2372:7:54;;;2387:5;;2372:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2372:35:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2353:54;;;2425:7;2417:23;;;;;-1:-1:-1;;;2417:23:54;;;;;;;;;;;;;;;;;;;;;;;;;;;9796:269:18;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:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1183:279:54;1313:59;;;-1:-1:-1;;;;;1313:59:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:24;1313:59;;;1302:71;;;;1267:12;;;;1302:10;;;;1313:59;1302:71;;;1313:59;1302:71;;1313:59;1302:71;;;;;;;;;;-1:-1:-1;;1302:71:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:107;;;;1391:7;:57;;;;-1:-1:-1;1403:11:54;;:16;;:44;;;1434:4;1423:24;;;;;;;;;;;;;;;-1:-1:-1;1423:24:54;1403:44;1383:72;;;;;-1:-1:-1;;;1383:72:54;;;;;;;;;;;;;;;;;;;;;;;;;;;7580:149:25;7664:4;7687:35;7697:3;7717;7687:9;:35::i;4483:108::-;4565:19;;4483:108::o;1362:2580:12:-;1425:20;1457:15;1482:1;1475:4;:8;;;:57;;1526:4;1519:12;;1475:57;;;1502:4;1495:12;;1494:13;;1475:57;1457:75;-1:-1:-1;644:9:12;1550:28;;;1542:42;;;;;-1:-1:-1;;;1542:42:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1595:13;1621:3;1611:13;;:93;;-1:-1:-1;;;1611:93:12;;;1632:34;1611:93;1595:109;;;-1:-1:-1;1728:3:12;1718:13;;:18;1714:83;;1755:34;1747:42;1794:3;1746:51;1714:83;1821:3;1811:13;;:18;1807:83;;1848:34;1840:42;1887:3;1839:51;1807:83;1914:3;1904:13;;:18;1900:83;;1941:34;1933:42;1980:3;1932:51;1900:83;2007:4;1997:14;;:19;1993:84;;2035:34;2027:42;2074:3;2026:51;1993:84;2101:4;2091:14;;:19;2087:84;;2129:34;2121:42;2168:3;2120:51;2087:84;2195:4;2185:14;;:19;2181:84;;2223:34;2215:42;2262:3;2214:51;2181:84;2289:4;2279:14;;:19;2275:84;;2317:34;2309:42;2356:3;2308:51;2275:84;2383:5;2373:15;;:20;2369:85;;2412:34;2404:42;2451:3;2403:51;2369:85;2478:5;2468:15;;:20;2464:85;;2507:34;2499:42;2546:3;2498:51;2464:85;2573:5;2563:15;;:20;2559:85;;2602:34;2594:42;2641:3;2593:51;2559:85;2668:5;2658:15;;:20;2654:85;;2697:34;2689:42;2736:3;2688:51;2654:85;2763:6;2753:16;;:21;2749:86;;2793:34;2785:42;2832:3;2784:51;2749:86;2859:6;2849:16;;:21;2845:86;;2889:34;2881:42;2928:3;2880:51;2845:86;2955:6;2945:16;;:21;2941:86;;2985:34;2977:42;3024:3;2976:51;2941:86;3051:6;3041:16;;:21;3037:86;;3081:34;3073:42;3120:3;3072:51;3037:86;3147:7;3137:17;;:22;3133:86;;3178:33;3170:41;3216:3;3169:50;3133:86;3243:7;3233:17;;:22;3229:85;;3274:32;3266:40;3311:3;3265:49;3229:85;3338:7;3328:17;;:22;3324:83;;3369:30;3361:38;3404:3;3360:47;3324:83;3431:7;3421:17;;:22;3417:78;;3462:25;3454:33;3492:3;3453:42;3417:78;3517:1;3510:4;:8;;;3506:47;;;3548:5;-1:-1:-1;;3528:25:12;;;;;;3520:33;;3506:47;3912:7;3903:5;:17;:22;:30;;3932:1;3903:30;;;3928:1;3903:30;3886:48;;3896:2;3887:5;:11;;3886:48;3863:72;;1362:2580;;;;;:::o;3098:901:51:-;3301:17;3350:13;-1:-1:-1;;;;;3334:29:51;:13;-1:-1:-1;;;;;3334:29:51;;3330:98;;;3399:13;;3414;3330:98;3459:13;-1:-1:-1;;;;;3443:29:51;:12;-1:-1:-1;;;;;3443:29:51;;3439:554;;3500:61;3523:13;3538;3553:7;3500:22;:61::i;:::-;3488:73;;3439:554;;;3597:13;-1:-1:-1;;;;;3582:28:51;:12;-1:-1:-1;;;;;3582:28:51;;3578:415;;;3626:18;3647:60;3670:12;3684:13;3699:7;3647:22;:60::i;:::-;3626:81;;3721:18;3742:60;3765:13;3780:12;3794:7;3742:22;:60::i;:::-;3721:81;;3842:10;-1:-1:-1;;;;;3829:23:51;:10;-1:-1:-1;;;;;3829:23:51;;:49;;3868:10;3829:49;;;3855:10;3829:49;3817:61;;3578:415;;;;;3921:61;3944:13;3959;3974:7;3921:22;:61::i;:::-;3909:73;;3578:415;3098:901;;;;;;;:::o;8357:135:26:-;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:25:-;7108:4;7131:64;7136:3;7156;-1:-1:-1;;;;;7170:23:25;;7131:4;:64::i;4444:201:26:-;4538:18;;4511:7;;4538:26;-1:-1:-1;4530:73:26;;;;-1:-1:-1;;;4530:73:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4620:3;:11;;4632:5;4620:18;;;;;;;;;;;;;;;;4613:25;;4444:201;;;;:::o;7361:140:25:-;7438:4;7461:33;7469:3;7489;7461:7;:33::i;561:330:54:-;722:69;;;-1:-1:-1;;;;;722:69:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;745:28;722:69;;;698:103;;;;663:12;;;;698:10;;;;722:69;698:103;;;722:69;698:103;;722:69;698:103;;;;;;;;;;-1:-1:-1;;698:103:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;662:139;;;;819:7;:57;;;;-1:-1:-1;831:11:54;;:16;;:44;;;862:4;851:24;;;;;;;;;;;;;;;-1:-1:-1;851:24:54;831:44;811:73;;;;;-1:-1:-1;;;811:73:54;;;;;;;;;;;;;;;;;;;;;;;;;;;4934:274:25;5037:19;;5001:7;;;;5037:27;-1:-1:-1;5029:74:25;;;;-1:-1:-1;;;5029:74:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6643:3;:12;;6667:1;6656:8;:12;6643:26;;;;;;;;;;;;;;;;;;:33;;;6636:40;;;6395:315;;;;;:::o;15509:589:18:-;15629:4;15654:15;:2;-1:-1:-1;;;;;15654:13:18;;:15::i;:::-;15649:58;;-1:-1:-1;15692:4:18;15685:11;;15649:58;15716:23;15742:246;15794:45;15853:12;:10;:12::i;:::-;15879:4;15897:7;15918:5;15758:175;;;;;;-1:-1:-1;;;;;15758:175:18;;;;;;-1:-1:-1;;;;;15758:175:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15742:246;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15742:15:18;;;:246;:15;:246::i;:::-;15716:272;;15998:13;16025:10;16014:32;;;;;;;;;;;;;;;-1:-1:-1;16014:32:18;16064:26;;16074:16;16064:26;;-1:-1:-1;;;15509:589:18;;;;;;:::o;4270:123:25:-;4341:4;4364:17;;;:12;;;;;:17;;;;;;:22;;;4270:123::o;1201:475:51:-;1349:17;1398:13;-1:-1:-1;;;;;1382:29:51;:13;-1:-1:-1;;;;;1382:29:51;;1378:98;;;1447:13;;1462;1378:98;1486:20;1509:63;1525:13;-1:-1:-1;;;;;1509:63:51;1540:13;-1:-1:-1;;;;;1509:63:51;349:27:10;1509:15:51;:63::i;:::-;1486:86;;1589:80;1599:69;1615:7;1624:12;1654:13;1638;:29;-1:-1:-1;;;;;1599:69:51;:15;:69::i;:::-;1589:9;:80::i;2115:383::-;2263:17;2312:13;-1:-1:-1;;;;;2296:29:51;:13;-1:-1:-1;;;;;2296:29:51;;2292:98;;;2361:13;;2376;2292:98;2407:84;2417:73;2433:7;349:27:10;2476:13:51;2460;:29;-1:-1:-1;;;;;2417:73:51;:15;:73::i;2204:1512:26:-;2270:4;2407:19;;;:12;;;:19;;;;;;2441:15;;2437:1273;;2870:18;;-1:-1:-1;;2822:14:26;;;;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:26;;;;;;;;:11;:23;;;;;;;;;;;;;1933:18;;1911:19;;;:12;;;:19;;;;;;:40;;;;1965:11;;1711:319;-1:-1:-1;2014:5:26;2007:12;;1828:678:25;1904:4;2037:17;;;:12;;;:17;;;;;;2069:13;2065:435;;-1:-1:-1;;2153:38:25;;;;;;;;;;;;;;;;;;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:25;;;;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:25;;;;;;;;;;;;;;;;;;;;;4088:17;;;:12;;;:17;;;;;;4081:24;;;;3995:18;-1:-1:-1;4120:11:25;;-1:-1:-1;;;;4120:11:25;3573:193:23;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3707:21;:52::i;623:110:51:-;724:1;-1:-1:-1;;;;;704:21:51;;;;696:30;;;;;4600:523:23;4727:12;4784:5;4759:21;:30;;4751:81;;;;-1:-1:-1;;;4751:81:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4850:18;4861:6;4850:10;:18::i;:::-;4842:60;;;;;-1:-1:-1;;;4842:60:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:12;4987:23;5014:6;-1:-1:-1;;;;;5014:11:23;5034:5;5042:4;5014:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5014:33:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:23:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:23;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:23;;;;;;;;;;;;;;;;;7764:12;;7757:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::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:402::-;;;888:2;876:9;867:7;863:23;859:32;856:2;;;909:6;901;894:22;856:2;953:9;940:23;972:33;999:5;972:33;:::i;:::-;1024:5;-1:-1:-1;1081:2:56;1066:18;;1053:32;1094:35;1053:32;1094:35;:::i;:::-;1148:7;1138:17;;;846:315;;;;;:::o;1166:620::-;;;;;1328:3;1316:9;1307:7;1303:23;1299:33;1296:2;;;1350:6;1342;1335:22;1296:2;1394:9;1381:23;1413:33;1440:5;1413:33;:::i;:::-;1465:5;-1:-1:-1;1522:2:56;1507:18;;1494:32;1535:35;1494:32;1535:35;:::i;:::-;1589:7;-1:-1:-1;1615:39:56;1650:2;1635:18;;1615:39;:::i;:::-;1605:49;;1706:2;1695:9;1691:18;1678:32;1719:35;1746:7;1719:35;:::i;:::-;1286:500;;;;-1:-1:-1;1286:500:56;;-1:-1:-1;;1286:500:56:o;1791:470::-;;;;1937:2;1925:9;1916:7;1912:23;1908:32;1905:2;;;1958:6;1950;1943:22;1905:2;2002:9;1989:23;2021:33;2048:5;2021:33;:::i;:::-;2073:5;-1:-1:-1;2130:2:56;2115:18;;2102:32;2143:35;2102:32;2143:35;:::i;:::-;1895:366;;2197:7;;-1:-1:-1;;;2251:2:56;2236:18;;;;2223:32;;1895:366::o;2266:1066::-;;;;;2438:3;2426:9;2417:7;2413:23;2409:33;2406:2;;;2460:6;2452;2445:22;2406:2;2504:9;2491:23;2523:33;2550:5;2523:33;:::i;:::-;2575:5;-1:-1:-1;2632:2:56;2617:18;;2604:32;2645:35;2604:32;2645:35;:::i;:::-;2699:7;-1:-1:-1;2753:2:56;2738:18;;2725:32;;-1:-1:-1;2808:2:56;2793:18;;2780:32;2835:18;2824:30;;2821:2;;;2872:6;2864;2857:22;2821:2;2900:22;;2953:4;2945:13;;2941:27;-1:-1:-1;2931:2:56;;2987:6;2979;2972:22;2931:2;3028;3015:16;3053:49;3068:33;3098:2;3068:33;:::i;:::-;3053:49;:::i;:::-;3125:2;3118:5;3111:17;3165:7;3160:2;3155;3151;3147:11;3143:20;3140:33;3137:2;;;3191:6;3183;3176:22;3137:2;3251;3246;3242;3238:11;3233:2;3226:5;3222:14;3209:45;3274:14;;;3290:2;3270:23;3263:39;;;;-1:-1:-1;2396:936:56;;;;-1:-1:-1;2396:936:56;-1:-1:-1;2396:936:56:o;3337:396::-;;;3463:2;3451:9;3442:7;3438:23;3434:32;3431:2;;;3484:6;3476;3469:22;3431:2;3528:9;3515:23;3547:33;3574:5;3547:33;:::i;:::-;3599:5;-1:-1:-1;3656:2:56;3641:18;;3628:32;3669;3628;3669;:::i;3738:327::-;;;3867:2;3855:9;3846:7;3842:23;3838:32;3835:2;;;3888:6;3880;3873:22;3835:2;3932:9;3919:23;3951:33;3978:5;3951:33;:::i;:::-;4003:5;4055:2;4040:18;;;;4027:32;;-1:-1:-1;;;3825:240:56:o;4070:470::-;;;;4216:2;4204:9;4195:7;4191:23;4187:32;4184:2;;;4237:6;4229;4222:22;4184:2;4281:9;4268:23;4300:33;4327:5;4300:33;:::i;:::-;4352:5;-1:-1:-1;4404:2:56;4389:18;;4376:32;;-1:-1:-1;4460:2:56;4445:18;;4432:32;4473:35;4432:32;4473:35;:::i;:::-;4527:7;4517:17;;;4174:366;;;;;:::o;4545:673::-;;;;;;;4740:3;4728:9;4719:7;4715:23;4711:33;4708:2;;;4762:6;4754;4747:22;4708:2;4806:9;4793:23;4825:33;4852:5;4825:33;:::i;:::-;4877:5;-1:-1:-1;4929:2:56;4914:18;;4901:32;;-1:-1:-1;4980:2:56;4965:18;;4952:32;;-1:-1:-1;5036:2:56;5021:18;;5008:32;5049:33;5008:32;5049:33;:::i;:::-;4698:520;;;;-1:-1:-1;4698:520:56;;5155:3;5140:19;;5127:33;;5207:3;5192:19;;;5179:33;;-1:-1:-1;4698:520:56;-1:-1:-1;;4698:520:56:o;5223:677::-;;;5381:2;5369:9;5360:7;5356:23;5352:32;5349:2;;;5402:6;5394;5387:22;5349:2;5447:9;5434:23;5476:18;5517:2;5509:6;5506:14;5503:2;;;5538:6;5530;5523:22;5503:2;5581:6;5570:9;5566:22;5556:32;;5626:7;5619:4;5615:2;5611:13;5607:27;5597:2;;5653:6;5645;5638:22;5597:2;5698;5685:16;5724:2;5716:6;5713:14;5710:2;;;5745:6;5737;5730:22;5710:2;5804:7;5799:2;5793;5785:6;5781:15;5777:2;5773:24;5769:33;5766:46;5763:2;;;5830:6;5822;5815:22;5763:2;5866;5858:11;;;;;5888:6;;-1:-1:-1;5339:561:56;;-1:-1:-1;;;;5339:561:56:o;5905:352::-;;6016:2;6004:9;5995:7;5991:23;5987:32;5984:2;;;6037:6;6029;6022:22;5984:2;6081:9;6068:23;6131:66;6124:5;6120:78;6113:5;6110:89;6100:2;;6218:6;6210;6203:22;6262:255;;6372:2;6360:9;6351:7;6347:23;6343:32;6340:2;;;6393:6;6385;6378:22;6340:2;6437:9;6424:23;6456:31;6481:5;6456:31;:::i;6522:676::-;;6655:2;6643:9;6634:7;6630:23;6626:32;6623:2;;;6676:6;6668;6661:22;6623:2;6714:9;6708:16;6747:18;6739:6;6736:30;6733:2;;;6784:6;6776;6769:22;6733:2;6812:22;;6865:4;6857:13;;6853:27;-1:-1:-1;6843:2:56;;6899:6;6891;6884:22;6843:2;6933;6927:9;6958:49;6973:33;7003:2;6973:33;:::i;6958:49::-;7030:2;7023:5;7016:17;7070:7;7065:2;7060;7056;7052:11;7048:20;7045:33;7042:2;;;7096:6;7088;7081:22;7042:2;7114:54;7165:2;7160;7153:5;7149:14;7144:2;7140;7136:11;7114:54;:::i;7203:210::-;;7348:3;7336:9;7327:7;7323:23;7319:33;7316:2;;;7370:6;7362;7355:22;7316:2;-1:-1:-1;7398:9:56;7306:107;-1:-1:-1;7306:107:56:o;7418:220::-;;7573:3;7561:9;7552:7;7548:23;7544:33;7541:2;;;7595:6;7587;7580:22;7643:220;;7798:3;7786:9;7777:7;7773:23;7769:33;7766:2;;;7820:6;7812;7805:22;7868:1112;;8005:9;7996:7;7992:23;8035:3;8031:2;8027:12;8024:2;;;8057:6;8049;8042:22;8024:2;8095:4;8089:11;8139:4;8131:6;8127:17;8163:18;8231:6;8219:10;8216:22;8211:2;8199:10;8196:18;8193:46;8190:2;;;8242:9;8190:2;8275:10;8269:4;8262:24;8306:4;8302:2;8298:13;8295:2;;;8329:6;8321;8314:22;8295:2;8379:3;8371:6;8367:16;8347:36;;8437:10;8423:12;8420:28;8415:2;8401:12;8398:20;8395:54;8392:2;;;8452:9;8392:2;;8485:12;8479:4;8472:26;8533:9;8520:23;8507:36;;8552:33;8579:5;8552:33;:::i;:::-;8594:25;;;8671:2;8656:18;;8643:32;;8684:35;8643:32;8684:35;:::i;:::-;8754:7;8747:4;8739:6;8735:17;8728:34;8796:41;8831:4;8820:9;8816:20;8796:41;:::i;:::-;8790:3;8778:16;;8771:67;8847:26;;8906:42;8942:4;8927:20;;8906:42;:::i;:::-;8901:2;8889:15;;8882:67;8893:6;7972:1008;-1:-1:-1;;;;7972:1008:56:o;8985:207::-;;9127:3;9115:9;9106:7;9102:23;9098:33;9095:2;;;9149:6;9141;9134:22;9197:259;;9309:2;9297:9;9288:7;9284:23;9280:32;9277:2;;;9330:6;9322;9315:22;9277:2;9374:9;9361:23;9393:33;9420:5;9393:33;:::i;9461:399::-;;;9601:2;9589:9;9580:7;9576:23;9572:32;9569:2;;;9622:6;9614;9607:22;9569:2;9659:9;9653:16;9678:33;9705:5;9678:33;:::i;:::-;9780:2;9765:18;;9759:25;9730:5;;-1:-1:-1;9793:35:56;9759:25;9793:35;:::i;9865:659::-;;;;;;10056:3;10044:9;10035:7;10031:23;10027:33;10024:2;;;10078:6;10070;10063:22;10024:2;10115:9;10109:16;10134:33;10161:5;10134:33;:::i;:::-;10186:5;10176:15;;;10231:2;10220:9;10216:18;10210:25;10200:35;;10275:2;10264:9;10260:18;10254:25;10244:35;;10324:2;10313:9;10309:18;10303:25;10337:35;10364:7;10337:35;:::i;:::-;10443:3;10428:19;;10422:26;10391:7;;-1:-1:-1;10457:35:56;10422:26;10457:35;:::i;:::-;10511:7;10501:17;;;10014:510;;;;;;;;:::o;10529:916::-;;;;;;;;10744:3;10732:9;10723:7;10719:23;10715:33;10712:2;;;10766:6;10758;10751:22;10712:2;10803:9;10797:16;10822:33;10849:5;10822:33;:::i;:::-;10924:2;10909:18;;10903:25;10874:5;;-1:-1:-1;10937:33:56;10903:25;10937:33;:::i;:::-;10989:7;-1:-1:-1;11015:50:56;11061:2;11046:18;;11015:50;:::i;:::-;11005:60;;11084:50;11130:2;11119:9;11115:18;11084:50;:::i;:::-;11074:60;;11153:51;11199:3;11188:9;11184:19;11153:51;:::i;:::-;11143:61;;11249:3;11238:9;11234:19;11228:26;11263:33;11288:7;11263:33;:::i;:::-;11367:3;11352:19;;11346:26;11315:7;;-1:-1:-1;11381:32:56;11346:26;11381:32;:::i;:::-;11432:7;11422:17;;;10702:743;;;;;;;;;;:::o;11450:196::-;;11561:2;11549:9;11540:7;11536:23;11532:32;11529:2;;;11582:6;11574;11567:22;11529:2;11610:30;11630:9;11610:30;:::i;11651:190::-;;11763:2;11751:9;11742:7;11738:23;11734:32;11731:2;;;11784:6;11776;11769:22;11731:2;-1:-1:-1;11812:23:56;;11721:120;-1:-1:-1;11721:120:56:o;11846:327::-;;;11975:2;11963:9;11954:7;11950:23;11946:32;11943:2;;;11996:6;11988;11981:22;11943:2;12037:9;12024:23;12014:33;;12097:2;12086:9;12082:18;12069:32;12110:33;12137:5;12110:33;:::i;12178:255::-;;;12318:2;12306:9;12297:7;12293:23;12289:32;12286:2;;;12339:6;12331;12324:22;12286:2;-1:-1:-1;;12367:16:56;;12423:2;12408:18;;;12402:25;12367:16;;12402:25;;-1:-1:-1;12276:157:56:o;12438:777::-;;;;;12603:2;12591:9;12582:7;12578:23;12574:32;12571:2;;;12624:6;12616;12609:22;12571:2;12665:9;12652:23;12642:33;;12722:2;12711:9;12707:18;12694:32;12684:42;;12777:2;12766:9;12762:18;12749:32;12800:18;12841:2;12833:6;12830:14;12827:2;;;12862:6;12854;12847:22;12827:2;12905:6;12894:9;12890:22;12880:32;;12950:7;12943:4;12939:2;12935:13;12931:27;12921:2;;12977:6;12969;12962:22;12921:2;13022;13009:16;13048:2;13040:6;13037:14;13034:2;;;13069:6;13061;13054:22;13034:2;13119:7;13114:2;13105:6;13101:2;13097:15;13093:24;13090:37;13087:2;;;13145:6;13137;13130:22;13087:2;12561:654;;;;-1:-1:-1;;13181:2:56;13173:11;;-1:-1:-1;;;12561:654:56:o;13220:318::-;;13301:5;13295:12;13328:6;13323:3;13316:19;13344:63;13400:6;13393:4;13388:3;13384:14;13377:4;13370:5;13366:16;13344:63;:::i;:::-;13452:2;13440:15;-1:-1:-1;;13436:88:56;13427:98;;;;13527:4;13423:109;;13271:267;-1:-1:-1;;13271:267:56:o;13543:93::-;13620:1;13609:20;13597:33;;13587:49::o;13641:121::-;-1:-1:-1;;;;;13709:46:56;13697:59;;13687:75::o;13767:273::-;;13950:6;13942;13937:3;13924:33;13976:16;;14001:15;;;13976:16;13914:126;-1:-1:-1;13914:126:56:o;14045:226::-;-1:-1:-1;;;;;14209:55:56;;;;14191:74;;14179:2;14164:18;;14146:125::o;14276:618::-;;-1:-1:-1;;;;;14531:6:56;14527:55;14516:9;14509:74;14633:6;14630:1;14619:21;14614:2;14603:9;14599:18;14592:49;14691:6;14688:1;14677:21;14672:2;14661:9;14657:18;14650:49;-1:-1:-1;;;;;14739:6:56;14735:47;14730:2;14719:9;14715:18;14708:75;14820:3;14814;14803:9;14799:19;14792:32;14841:47;14883:3;14872:9;14868:19;14860:6;14841:47;:::i;14899:605::-;-1:-1:-1;;;;;15168:55:56;;;;15150:74;;15271:1;15260:21;;;15255:2;15240:18;;15233:49;15318:21;;;;15313:2;15298:18;;15291:49;-1:-1:-1;;;;;15429:15:56;;;15424:2;15409:18;;15402:43;15482:15;15476:3;15461:19;;15454:44;15137:3;15122:19;;15104:400::o;15509:439::-;-1:-1:-1;;;;;15729:55:56;;;;15711:74;;-1:-1:-1;;;;;15874:15:56;;;15869:2;15854:18;;15847:43;15926:15;15921:2;15906:18;;15899:43;15699:2;15684:18;;15666:282::o;15953:865::-;;16142:2;16182;16171:9;16167:18;16212:2;16201:9;16194:21;16235:6;16270;16264:13;16301:6;16293;16286:22;16339:2;16328:9;16324:18;16317:25;;16402:2;16396;16388:6;16384:15;16373:9;16369:31;16365:40;16351:54;;16440:2;16432:6;16428:15;16461:4;16474:315;16488:6;16485:1;16482:13;16474:315;;;16577:66;16565:9;16557:6;16553:22;16549:95;16544:3;16537:108;16668:41;16702:6;16693;16687:13;16668:41;:::i;:::-;16658:51;-1:-1:-1;16767:12:56;;;;16732:15;;;;16510:1;16503:9;16474:315;;;-1:-1:-1;16806:6:56;;16122:696;-1:-1:-1;;;;;;;16122:696:56:o;16823:187::-;16988:14;;16981:22;16963:41;;16951:2;16936:18;;16918:92::o;17015:177::-;17161:25;;;17149:2;17134:18;;17116:76::o;17197:332::-;-1:-1:-1;;;;;17424:55:56;;;;17406:74;;17511:2;17496:18;;17489:34;17394:2;17379:18;;17361:168::o;17534:390::-;17765:1;17754:21;;;17736:40;;17812:21;;;;17807:2;17792:18;;17785:49;-1:-1:-1;;;;;17870:47:56;;;17865:2;17850:18;;17843:75;17724:2;17709:18;;17691:233::o;18316:221::-;;18465:2;18454:9;18447:21;18485:46;18527:2;18516:9;18512:18;18504:6;18485:46;:::i;18542:336::-;18744:2;18726:21;;;18783:2;18763:18;;;18756:30;18822:14;18817:2;18802:18;;18795:42;18869:2;18854:18;;18716:162::o;18883:408::-;19085:2;19067:21;;;19124:2;19104:18;;;19097:30;19163:34;19158:2;19143:18;;19136:62;19234:14;19229:2;19214:18;;19207:42;19281:3;19266:19;;19057:234::o;19296:344::-;19498:2;19480:21;;;19537:2;19517:18;;;19510:30;19576:22;19571:2;19556:18;;19549:50;19631:2;19616:18;;19470:170::o;19645:340::-;19847:2;19829:21;;;19886:2;19866:18;;;19859:30;19925:18;19920:2;19905:18;;19898:46;19976:2;19961:18;;19819:166::o;19990:335::-;20192:2;20174:21;;;20231:2;20211:18;;;20204:30;20270:13;20265:2;20250:18;;20243:41;20316:2;20301:18;;20164:161::o;20330:565::-;20555:13;;20660:9;;-1:-1:-1;;;;;20656:18:56;;;20638:37;;20731:4;20723:13;;;20717:20;20713:29;;20691:20;;;20684:59;20799:4;20791:13;;;20785:20;20807:8;20781:35;20759:20;;;20752:65;;;;20865:17;;20859:24;20855:33;;;20848:4;20833:20;;20826:63;20532:3;20517:19;;20499:396::o;20900:360::-;-1:-1:-1;;;;;21120:47:56;;;;21102:66;;21199:2;21184:18;;21177:34;;;;21242:2;21227:18;;21220:34;21090:2;21075:18;;21057:203::o;21447:432::-;21678:25;;;-1:-1:-1;;;;;21739:47:56;;;;21734:2;21719:18;;21712:75;21818:2;21803:18;;21796:34;21861:2;21846:18;;21839:34;21665:3;21650:19;;21632:247::o;21884:248::-;22058:25;;;22114:2;22099:18;;22092:34;22046:2;22031:18;;22013:119::o;22137:1164::-;22612:26;22600:39;;22582:58;;-1:-1:-1;;;;;22737:15:56;;;22732:2;22717:18;;22710:43;22789:15;;;22784:2;22769:18;;22762:43;22841:15;;22836:2;22821:18;;22814:43;22906:8;22894:21;;22888:3;22873:19;;22866:50;22964:1;22953:21;;;22947:3;22932:19;;22925:50;22569:3;22554:19;;22984:47;23026:3;23011:19;;23003:6;22984:47;:::i;:::-;23040:49;23084:3;23073:9;23069:19;23061:6;23040:49;:::i;:::-;23126:6;23120:3;23109:9;23105:19;23098:35;23170:6;23164:3;23153:9;23149:19;23142:35;23186:50;23231:3;23220:9;23216:19;23207:7;23186:50;:::i;:::-;23245;23290:3;23279:9;23275:19;23266:7;23245:50;:::i;:::-;22536:765;;;;;;;;;;;;;;;:::o;23306:592::-;;;23449:11;23436:25;23539:66;23528:8;23512:14;23508:29;23504:102;23484:18;23480:127;23470:2;;23624:4;23618;23611:18;23470:2;23654:33;;23706:20;;;-1:-1:-1;23749:18:56;23738:30;;23735:2;;;23784:4;23778;23771:18;23735:2;23820:4;23808:17;;-1:-1:-1;23851:14:56;23847:27;;;23837:38;;23834:2;;;23888:1;23885;23878:12;23903:242;23973:2;23967:9;24003:17;;;24050:18;24035:34;;24071:22;;;24032:62;24029:2;;;24097:9;24029:2;24124;24117:22;23947:198;;-1:-1:-1;23947:198:56:o;24150:240::-;;24233:18;24225:6;24222:30;24219:2;;;24255:9;24219:2;-1:-1:-1;24303:4:56;24291:17;-1:-1:-1;;24287:90:56;24379:4;24283:101;;24209:181::o;24395:258::-;24467:1;24477:113;24491:6;24488:1;24485:13;24477:113;;;24567:11;;;24561:18;24548:11;;;24541:39;24513:2;24506:10;24477:113;;;24608:6;24605:1;24602:13;24599:2;;;-1:-1:-1;;24643:1:56;24625:16;;24618:27;24448:205::o;24658:156::-;-1:-1:-1;;;;;24739:5:56;24735:54;24728:5;24725:65;24715:2;;24804:1;24801;24794:12;24819:120;24907:5;24900:13;24893:21;24886:5;24883:32;24873:2;;24929:1;24926;24919:12;24944:120;25033:5;25030:1;25019:20;25012:5;25009:31;24999:2;;25054:1;25051;25044:12;25069:148;-1:-1:-1;;;;;25150:5:56;25146:46;25139:5;25136:57;25126:2;;25207:1;25204;25197:12;25222:116;25308:4;25301:5;25297:16;25290:5;25287:27;25277:2;;25328:1;25325;25318:12"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","SAMB()":"90793ea8","approve(address,uint256)":"095ea7b3","astraCLMintCallback(uint256,uint256,bytes)":"4cb42d2d","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","burn(uint256)":"42966c68","collect((uint256,address,uint128,uint128))":"fc6f7865","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))":"0c49ccbe","factory()":"c45a0155","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","positions(uint256)":"99fbab88","refundAMB()":"c53af304","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","unwrapSAMB(uint256,address)":"a98ce37f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenDescriptor\",\"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\"},{\"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\":\"SAMB\",\"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\":\"uint256\",\"name\":\"amount0Owed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Owed\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLMintCallback\",\"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\":[{\"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\":\"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\":\"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\":\"refundAMB\",\"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\":\"unwrapSAMB\",\"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}.\"},\"astraCLMintCallback(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 AstraCLPool deployed by the canonical AstraCLFactory.\",\"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 IAstraCLPoolActions#mint call\"}},\"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\"}},\"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 CL 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\"}},\"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`\"}},\"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\"}},\"refundAMB()\":{\"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}.\"},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"version\":1},\"userdoc\":{\"events\":{\"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\"},\"astraCLMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IAstraCLPool#mint.\"},\"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.\"},\"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\"},\"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\"},\"positions(uint256)\":{\"notice\":\"Returns the position information associated with a given token ID.\"},\"refundAMB()\":{\"notice\":\"Refunds any AMB 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\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockTimeNonfungiblePositionManager.sol\":\"MockTimeNonfungiblePositionManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":{\"keccak256\":\"0x380f33c6cac2893f4e290a3c1a63f9f0bb9d42aff4a74c9b0fe9eebceb5721c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4cfd26554cf5fd3f7391e73ba4559fb1df2b8f3028c7f27d694b698250371c6c\",\"dweb:/ipfs/QmepfyejMAZbpJETuMC9naUwXLVihfXLXvCQsyMwYq1hy6\"]},\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol\":{\"keccak256\":\"0x85fb78c4f58adb7d5f6e37a1657cd94a050815c7e1ddbbcf8364062cb38b515c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bce55c098b04edf1f75fedeba5ff323eac20e546ff7f8041d13aba9a3c7188e\",\"dweb:/ipfs/QmXFrKKyPhyvLdyyWRcafSMF6zD3tRjkPcVuPzZ7NU69E4\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x2d1f4f73ae0d8f0a210b8d30084659b57c56ac8f2f96011fca36f00a6d417178\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2ba88933f16cd2df398e19c6ad227268f83c03081b70d243c97116d2ed9bc241\",\"dweb:/ipfs/QmTUGxdh8snzEM9VrTSS47StCg9VVWvvLJtJeNnMTFY4xb\"]},\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]},\"contracts/NonfungiblePositionManager.sol\":{\"keccak256\":\"0x60b8b492da0234827d09b3be74ebd1befc532bd720555a8df1ed04482c8a8a3d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c3166d3773e6f8e11eed8d9c3eabd79c0e4b6d95a3deaef7ef3bdb889f5d93e0\",\"dweb:/ipfs/QmZStdwisPDfCGX96NgSvsTwcy712FxoQQ51FDkJBiZN5f\"]},\"contracts/base/BlockTimestamp.sol\":{\"keccak256\":\"0x1aa66f71234064a0c0976f62233f2edbd69554e5ad817dc97f318bc8e11f4da6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b3a40450e9d6b0f9cb91b40ffd6215612505bd74e7d954529958f4edc6ee7b93\",\"dweb:/ipfs/QmewsUCHK5N5KhNtqEwK8JgsXFADyFBrQRS5HoDWM5gi3b\"]},\"contracts/base/ERC721Permit.sol\":{\"keccak256\":\"0x5f49d22648b16a32881b1e22ecb6a396713c459dd9cf76ca263342fb0b07ba62\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://309ee7bc9dc3f03b42b80f196dc0a2df3b4536c4f6f2a8e422c020a982f53db8\",\"dweb:/ipfs/QmYEdL3JkPVuSyKhVm5MV7vyQh14xr5KqvtMiivJ5ydM9x\"]},\"contracts/base/LiquidityManagement.sol\":{\"keccak256\":\"0x6a3ffb66ae47e1abc60e024a1356b50a157ce6b25ebb4a0d32f56fae5d1f603e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://531e5b2ca81216f179ac636f39e95f17ba709e46ea262db104ae02074df8ef50\",\"dweb:/ipfs/QmXCK7mL4738nbWeg4MFo8RrSA1wzhy2KpXU7TA45B4sRp\"]},\"contracts/base/Multicall.sol\":{\"keccak256\":\"0xfcfd78c62d2145634a791d5680a1af7055fbd301c415d29c09333c99c37d9037\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0d1c8f4a18cec8ad49e5269c5b07c7f6fd497dfc1b7b777f8ddcfb8055efd803\",\"dweb:/ipfs/QmdeCTnfHM3RGtQuo3DMX9m7gPspGGwQp7ho6m9cJjjnER\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PeripheryPayments.sol\":{\"keccak256\":\"0x88e12ecce0236f43cac955dee8ae50e8ffba7d133625ba18b590d51b9e030098\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9f10d1317582a91e7842901c6888c4bb28939817cefa3d3f88458c2ec653b6ed\",\"dweb:/ipfs/QmP2qV22Uq6Pou1VkgNzRnXHzNJ71CBpVBYhYDnLccBx8U\"]},\"contracts/base/PeripheryValidation.sol\":{\"keccak256\":\"0xc736bab599912d6212e8414ee4ba7af0c1e08ff6aa11caa85f5f6e07f7d421c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06f6c13a86900c71fa486fc029a59d1b7eb96162bb42885b5f845d995294893e\",\"dweb:/ipfs/QmUcBxMsmncw9n6eXhzzwSasGBvBGKH5FT8HSrAxrsXV4A\"]},\"contracts/base/PoolInitializer.sol\":{\"keccak256\":\"0x7a26153c5ae7025d34ba7bab5a9706b98aaada5a29b1805ec2801f058dea67ca\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9b4f718d03540adab9c16d6df6dbccb7531ca6284f1e7fe1b0d07e5f0ef461ba\",\"dweb:/ipfs/QmXeeKEwUgAekboG7WXgxmr6QwMn3dFSsxEyoTBNoWooRw\"]},\"contracts/base/SelfPermit.sol\":{\"keccak256\":\"0xe75aedfc1eff6c84adac82b2bc41d197127a74530f0c344a7a122a6c8ec186be\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://05150ae691e10f2c9c82ad46de86c8b6683d8eba995e6f9ff82eaefc064902e9\",\"dweb:/ipfs/QmdKxxmxCPxV7qe11MbRhpaQXDAnnKWH1BoTMmEXYPAA7g\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]},\"contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x920448f826d2d8e40aae06ce855644abac394c085a769605399d80cb36bde27f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b299cd039cf1fb92c9c58f666dfbb2753431f3904bed659ddd653ad9a503045\",\"dweb:/ipfs/QmZWb11WyJgGCW35e2opF3Ncstu59krJCDPAZpHWU9rqix\"]},\"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol\":{\"keccak256\":\"0x06bf5ea0c738db5309219a782c0221445a7fb1505fa9ce2a628aa7a80cc46ab7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://39dd81472e18dbc06b8997ff508fcf77ec3b90e3a0626447cce20186b728af06\",\"dweb:/ipfs/QmTxCBtppLbv5GC4ygjui26Qm93hes85cCKS5V6nYn1WBx\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]},\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]},\"contracts/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xfafb0a232f7410fa2fbcae4627e357dfa8f43a58dea6ba796d8bf5523c5c7b89\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f3877e40332b89fc7a14fa3266b4a2bd154725c322816a8985eabfbaeb6ab372\",\"dweb:/ipfs/QmVj7tjRKWdW9H6vhP2JTDgt82Pk8sGHEJHtJJwPqmgrRi\"]},\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/ChainId.sol\":{\"keccak256\":\"0x19478399e251074e5c8835eccedca8d3c223479d025e75cd3730131c1f65bdac\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://21cf1f666bb74f1a4180324a4254918cf28d68236a1828140e7e6b21d4bfe857\",\"dweb:/ipfs/QmcTVMseerQiMm2cS5gQ3SEx9kprpyMgWCbiD9VL2kKS2u\"]},\"contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x0845f1c8b6a30b2c243a0d285a30ec5653442aec2bc88cd27c83215c6e0f577f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e6303005c2e69c3315875ace1d618459cd8edf4ea499a0f167a83680bd835ae5\",\"dweb:/ipfs/QmcMpVTkGZh6SJoFAbN29w2ABD25zACxRouuqAtCBHATyd\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/libraries/PositionKey.sol\":{\"keccak256\":\"0xd72d0eeec86263f20e0f09a5997df27da1d0e1da31c3fd4874d6b67038066a9b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1aa47fde0fcab8f874815218f74005d5d569ec73b181a49014159f635a57b61b\",\"dweb:/ipfs/QmZGYC5na1nGcenPAHRJM8QfqQhrw7WYKFPHbE3MpQYP1s\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]},\"contracts/test/MockTimeNonfungiblePositionManager.sol\":{\"keccak256\":\"0xaabb9c75978d0b730bc28a33ce7463252aafe933f9f7d57d16fcbfb639b19c0e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc9ae4138cf72c7ad5cd9313510cbaa8788c9da6fffa326bd213fc378ff007bb\",\"dweb:/ipfs/QmeQwZisNeWUArK3CuRRHtr9vj138mUs3MiT7ZMZEcXL8G\"]}},\"version\":1}"}}}}}